Lexer & Parser
如何 `.sio` 源码变成抽象语法树 (AST): 标记符、跨度以及递归下降解析器。
Lexer & Parser
不再主要通过旧的 Rust 包路径来解释词法器和解析器。当前的实现故事在自托管的树中,包含编译器级别的薄包装以及将语法工作分解为专注模块的许多小文件。
当前源码映射
self-hosted/lexer/包含标记化栈:cursor.sio、reader.sio、tables.sio、token.sio、numparse.sio及相关支持文件。self-hosted/parser/包含语法层模块,例如ast.sio、exprs.sio、stmts.sio、patterns.sio、items.sio、types.sio以及恢复支持。self-hosted/compiler/lexer.sio和self-hosted/compiler/parser.sio提供更高层次的编译器面向的入口,进入那些较低级别的模块。
需要文档化的稳定内容
- 仓库积极维护 Sounio 自身的真实词法器和解析器。
- 树结构显示刻意分离标记化、抽象语法树构建、语句解析以及模式解析。
- 最安全的语法声明仍然是由当前测试套件支持以及直接
souc check验证的声明。
有用的实现里程碑
self-hosted/lexer/token.sio
self-hosted/parser/ast.sio
self-hosted/parser/exprs.sio
self-hosted/parser/items.sio
self-hosted/compiler/parser.sio
文档指南
- 不要将公共编译器文档锚定在
crates/souc/src/lexer或parser作为主要当前解释;这些路径不再准确描述活跃的树。 - 在解释语法时,使用小检查示例,然后引导好奇的贡献者到自托管的解析器模块。
- 保守地对待恢复行为和边缘情况解析声明,除非你有当前的测试为它们。