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