7个不稳定版本

0.4.2 2024年4月14日
0.4.1 2023年7月21日
0.4.0 2023年6月24日
0.3.1 2023年4月3日
0.1.0 2019年5月8日

#1999过程宏

Download history 19/week @ 2024-04-22 23/week @ 2024-04-29 9/week @ 2024-05-06 9/week @ 2024-05-13 23/week @ 2024-05-20 21/week @ 2024-05-27 19/week @ 2024-06-03 21/week @ 2024-06-10 16/week @ 2024-06-17 9/week @ 2024-06-24 48/week @ 2024-07-01 8/week @ 2024-07-08 7/week @ 2024-07-15 37/week @ 2024-07-22 15/week @ 2024-07-29 14/week @ 2024-08-05

每月74次 下载

MIT/Apache

10KB
99 代码行

描述Syn的语法树的数据结构。

Syn的语法树由200多种类型组成。偶尔你可能需要在这些类型中实现一些行为。

  • 例如 Rust对AST Explorer的集成 想要将Syn的语法树转换为平台现有的跨语言语法树可视化代码可以理解的JavaScript值。

  • 另一个来自Syn内部的例子,visitvisit_mutfold 模块的特性和实现可以由语法树的描述程序化生成。

为了使此类代码在任意语言中实现尽可能简单,每个Syn版本都附带了一个JSON文件(syn.json),其中包含该版本语法树的机器可读描述。此 syn-codegen crate 提供了从Rust代码解析和利用syn.json表示的规范数据结构。

示例

use syn_codegen::Definitions;

const SYN: &str = include_str!("syn.json");

fn main() {
    let defs: Definitions = serde_json::from_str(SYN).unwrap();

    for node in &defs.types {
        println!("syn::{}", node.ident);
    }
}

依赖关系

~0.9–1.3MB
~23K SLoC