2.1 KiB
2.1 KiB
Frontend 源码
| 文件 | 职责 |
|---|---|
| lib.rs | 公开 AST 模块、阅读器/来源单元、低层及带来源的词法/语法入口与诊断导出 |
| source.rs | 不可变 SourceUnit、来源类别和携带来源/行列的 SourceDiagnostic |
| reader.rs | 字符串、流、文件读取、严格 UTF-8 解码与宿主 EndorSourceProvider 适配 |
| token.rs | 可复制的 token 种类和原始源码范围,文本由源码切片取得 |
| diagnostic.rs | UTF-8 字节范围、词法/语法及 compiler 使用的语义/编译诊断种类与一基行列转换 |
| lexer.rs | lex/lex_source 接口、源码游标、逐 Token 调用、位置/诊断换算与字符串解码 |
| lexer.peg | 字符输入的 PEG 词法规则:名称、数字、字符串/转义、标点、空白/注释和错误识别 |
| ast.rs | 生成类型的公开门面、Spanned 位置接口与便捷方法 |
| ast | ASDL 生成的节点/遍历器与手写 JSON 校验接口 |
| parser.rs | 统一根/ParseMode 与具体解析 API、错误映射、AST 辅助函数,以及独立语法文件的编译期引入 |
| grammar.peg | token 输入的 PEG 规则、运算符优先级与 AST 构造动作;保留 peg::parser! 外层声明 |
函数体允许独立方法调用等表达式语句;末尾 return 可省略,已有编译器隐式返回 Nil。
改节点先编辑 ../Endor.asdl,再用 scripts/generate_ast.py 更新 Rust/编辑器产物,契约见 AST 模型。改输入适配时同步 阅读器契约 与读取错误检查;改词法从 lexer.peg 进入,并同步 token、诊断和错误检查;改语法从 grammar.peg 进入,并同步 AST、测试、样例与 前端契约。词法与语法两份 PEG 动作均不做 VM 分配、I/O 或修改外部状态,避免回溯造成副作用。返回 frontend。