1.1 KiB
1.1 KiB
编辑器 AST 接口
这里的类型和遍历函数均从 Endor.asdl 生成,不再维护第二份手写节点定义。
| 文件 | 职责 |
|---|---|
| ast.ts | TypeScript 节点类型、AST_SCHEMA_ID、Visitor 回调与 walk* 函数 |
| ast.schema.json | JSON Schema 2020-12;校验带 schema 标识的 AstDocument 结构 |
TypeScript 编译时类型不代替 JSON 校验。编辑器可使用现有 JSON Schema 工具校验文档,再交给类型与遍历接口;walk* 的回调返回 false 时跳过该节点的子树。可选字段允许省略或 null,Rust 的标准输出会写成 null。
所有位置为原文 UTF-8 字节范围,不是 JavaScript UTF-16 下标;编辑器需要以原文换算。JSON Schema 检查结构,父子范围关系和原文 UTF-8 边界由 Rust AstDocument::validate/validate_source 检查。schema 标识变化需要调用方升级契约,不提供隐式迁移。
在仓库根运行 python3 scripts/generate_ast.py --write 重新生成,--check 做静态同步检查。完整格式见 AST 模型。返回 frontend。