#wasm-module #syntax-tree #ast #ast-parser #model #generate #validation

wasm-ast

一个用于生成、读取和发射 WebAssembly 代码的 WebAssembly 语法模型

7 个版本

0.1.0 2021年10月27日
0.0.6 2021年10月22日
0.0.4 2021年9月2日
0.0.2 2021年8月20日

#2676 in 解析器实现

Apache-2.0

280KB
5K SLoC

WASM

Build License Crates.io Version Docs.rs Version

一个用于生成、解析和发射 WebAssembly 代码的 Rust 原生 WebAssembly 语法模型。

设计

WASM-AST 采用最小验证设计。目标是尽可能紧密地模拟 WASM 语法规范,以便允许有效的和无效的抽象语法树。最后,一旦构建,模块就不能被修改。

功能

解析器

二进制 WebAssembly 格式的解析器。尝试尽可能保持尽可能多的二进制信息。

文本

文本和二进制 WebAssembly 格式的解析器。文本格式被转换为二进制,然后传递给二进制解析器。在文本到二进制的转换过程中可能会丢失一些信息。

发射器

为模块发射二进制 WebAssembly 格式。

用法

要使用 wasm-ast,首先将以下内容添加到您的 Cargo.toml

[dependencies]
wasm-ast = "0.1.0"

然后,将以下内容添加到您的 crate

use wasm_ast::model::Module;

fn main() {
    let mut builder = Module::builder();
    let module = builder.build();
}

示例

创建一个空的 WASM 模块

use wasm_ast::model::Module;

fn main() {
    let module = Module::empty();
}

更多(即更有用)的示例可以在仓库中找到。

稳定性

界面被认为是稳定的。在下一个主要版本(例如 1.0)之前不会引入破坏性更改。

问题

请提交任何关于此 crate 没有正确遵循 WebAssembly 标准的问题。

许可证

根据 Apache License,版本 2.0 许可(LICENSE-APACHEhttps://apache.ac.cn/licenses/LICENSE-2.0)授权

贡献

除非您明确声明,否则任何有意提交给工作并由您定义的 Apache-2.0 许可包含的贡献,将按上述方式许可,不附加任何额外条款或条件。

依赖关系

~0.3–1.2MB
~26K SLoC