#ast #proc-macro #lustre #语法 #分析 #静态分析 #syn

nightly chandeliers-syn

Lustre语言语法,用于由过程宏解析

21个版本 (1个稳定版)

1.0.0 2024年1月5日
0.6.1 2024年1月4日
0.5.2 2023年12月29日
0.5.0 2023年11月24日
0.2.6 2023年10月27日

#709 in 过程宏


用于 chandeliers-lus

MIT/Apache

410KB
8K SLoC

Chandeliers-Syn

Lustre的语法。


在这个包中,我们描述了Lustre程序的解析AST。这个AST不打算直接使用,而是应该转换成更方便静态分析的AST。

如何获取解析AST以及如何使用它

模块ast的所有类型都实现了syn::parse::Parse,因此可以从任何符合syn预期结构的令牌流中解析。

在过程宏内部典型用法如下

use chandeliers_syn::ast::Prog;
use proc_macro::TokenStream;

#[proc_macro]
pub fn get_and_handle_ast(input: TokenStream) -> TokenStream {
    let prog: Prog = syn::parse_macro_input!(input as Prog);
    // now you have a `Prog`, you can e.g.
    // `Prog::translate` it to get something that can be used by
    // Chandeliers' sanitizer.
}

lib.rs:

Chandeliers套件过程宏的通用入口点,提供对所有Lustre结构的解析,并将其转换为chandeliers-san可分析的AST

AST的结构不稳定,因为Lustre可解析片段的语法可能会在以后扩展。

依赖关系

~0.4–0.9MB
~20K SLoC