15 lines
2.0 KiB
Markdown
15 lines
2.0 KiB
Markdown
# frontend
|
||
|
||
独立源码前端:EndorReader → SourceUnit → 字符 PEG lexer → token → token PEG parser → 拥有文本的 AST。AST 节点和 Rust/编辑器接口由 Endor.asdl 统一生成;支持模块、表达式及单次交互语法输入。当前 frontend 解析基础函数与表达式;名称分析、字节码生成和装载由独立 [compiler](../compiler/README.md) 负责,frontend 本身不执行源码或进行类型检查。语法是可继续调整的首版实现,当前契约见 [源码前端](../../docs/runtime/frontend.md)。
|
||
|
||
| 内容 | 职责 |
|
||
| --- | --- |
|
||
| Cargo.toml | frontend 包与 peg 0.8.6、工作区已有 serde/serde_json 依赖,不依赖 core、Host 或 Storage |
|
||
| [Endor.asdl](Endor.asdl) | 唯一 AST 节点定义,供生成器读取 |
|
||
| [editor](editor/README.md) | 同源生成的 TypeScript 类型/遍历器和 JSON Schema |
|
||
| [src](src/README.md) | 阅读器、SourceUnit、token、源码范围、诊断、AST、词法规则独立在 [lexer.peg](src/lexer.peg),语法规则在 [grammar.peg](src/grammar.peg) |
|
||
| [tests](tests/README.md) | Unicode、优先级、函数、完整输入与错误位置验证 |
|
||
| [examples](examples/README.md) | 可交给 lyra parse 的源码样例 |
|
||
|
||
宿主通过 EndorReader 读取字符串、流、文件或注入的 URI provider,取得 SourceUnit 后调用 lex_source、parse_source、parse_source_expression;统一入口 parse_ast/parse_source_ast 通过 ParseMode 返回 AstRoot;低层 lex、parse、parse_expression 仍保留。AST 定义、生成命令、Visitor 与 JSON 交换见 [AST 模型](../../docs/runtime/ast.md)。读取契约见 [Endor 阅读器](../../docs/runtime/reader.md)。Objects 保持零依赖,Core 仅依赖本地 Objects;独立 Compiler 已将 AST 转成 wordcode 并交给 VM 执行;这是平台内部准备步骤。资源修订、依赖锁和解释器统一升级的设计方向见 [执行与版本模型](../../docs/architecture/execution-and-versions.md)。返回 [工作区](../README.md)。
|