翻譯未涵蓋全部內容。完整技術參考請查閱英文原文。 睇英文版 →

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

文档指南

  • 公共编译器文档应以 self-hosted/lexer/ 和 self-hosted/parser/ 为准;以前的 Rust 词法分析器和解析器路径已不存在。
  • 在解释语法时,使用小检查示例,然后引导好奇的贡献者到自托管的解析器模块。
  • 保守地对待恢复行为和边缘情况解析声明,除非你有当前的测试为它们。