2个版本
0.1.1 | 2022年5月22日 |
---|---|
0.1.0 | 2022年5月21日 |
#381 in #ethereum
21 个月下载量
在yulc中使用
53KB
1K SLoC
Yul语言工具
解析
解析器使用Logos进行标记化和使用Rowan进行解析。标记(即词法分析器)定义在[token.rs][./src/tokens.rs],语法(即语法)定义在[syntax.rs][./src/syntax.rs]。
该架构基于rust-analyzer的架构。实际上,rowan
是rust-analyzer项目的一部分。我建议阅读他们的总结来理解rowan
。另一个很好的介绍是Luna Razzaghipour的这个教程。
具体来说,该架构是为无损解析和良好的错误恢复而设计的。这意味着即使有错误,也可以从解析树完美地重建原始源文件。注释、空白和解析错误都明确包含在解析树中。
构建和测试
格式化、检查、构建和测试一切(我建议为此创建shell别名)
cargo fmt &&\
cargo clippy --all-features --all-targets &&\
cargo test --workspace --all-features --doc -- --nocapture &&\
cargo test --workspace --all-features --all-targets -- --nocapture &&\
cargo doc --workspace --all-features --no-deps
使用提供的.cargo/config.toml
别名运行基准测试
cargo criterion
检查文档覆盖率
RUSTDOCFLAGS="-Z unstable-options --show-coverage" cargo doc --workspace --all-features --no-deps
待办事项
目标
- Yul到EVM编译器
- Yul优化器
- Yul语言服务器
也许
- EVM到yul编译器
- Yul LLVM编译器
- 静态分析工具,如SMT检查器
- 在
solc
前端链接以实现Solidity兼容性。
依赖关系
~4MB
~47K SLoC