#ast #generation #nets-blox #xml #parser #web-api #programming

no-std bin+lib netsblox-ast

用于将 NetsBlox 项目文件解析成抽象语法树(AST)的crate,用于代码生成

62 个版本

0.5.11 2024 年 6 月 19 日
0.5.9 2024 年 3 月 27 日
0.5.2 2023 年 12 月 26 日
0.4.4 2023 年 11 月 17 日
0.1.5 2022 年 3 月 20 日

170编程语言 中排名

Download history 3/week @ 2024-05-20 9/week @ 2024-06-03 4/week @ 2024-06-10 270/week @ 2024-06-17 8/week @ 2024-08-05 143/week @ 2024-08-12

每月 151 次下载
3 crate 中使用

MIT/Apache

340KB
6K SLoC

NetsBlox-AST

目前,这个crate处于积极开发中,其API非常不稳定

NetsBlox 是一种基于块的编程语言(由 Snap! 扩展而来),它提供了访问高级Web和分布式计算能力,例如访问Web API和在客户端之间发送消息(例如创建多用户程序)。NetsBlox-AST是一个Rust crate,它接受一个NetsBlox项目XML文件作为输入,并输出一个经过清理的抽象语法树,这对于代码生成非常有用。

开发

这个crate旨在直接在一些嵌入式平台上使用。因此,由于解析器是递归的,我们需要将堆栈大小保持在绝对最小。为此,我们使用 cargo-call-stack 来检查调用堆栈使用情况。

目前,您应从 此分支 安装。

您还需要 dot 来自 graphviz

sudo apt install graphviz

要生成调用图,请运行以下命令

RUSTFLAGS="-C embed-bitcode" cargo +nightly call-stack --bin netsblox_ast --target x86_64-unknown-linux-gnu >cg.dot
gawk 'match($0, /label="(.*)\\nmax >?= ([0-9]+)\\nlocal = ([0-9]+)"/, m) { print m[3] " " m[1] }' cg.dot | sort -n

可选地,您可以生成一个可视图,但这可能非常混乱

dot -Tsvg cg.dot >cg.svg

依赖项

~790KB
~14K SLoC