Parser
Oxc Parser 的目标是成为最快、也最符合规范的 JavaScript/TypeScript 解析器。 参与 Parser 工作需要同时熟悉实现细节与庞大的测试基建。
架构概览
解析器沿用经典前端流水:
源代码 → Lexer → Token → Parser → AST核心组件
- Lexer:将源码切分为 Token
- Parser:递归下降构建 AST
- AST:内存亲和的语法树结构
- 错误恢复:错误处理与容错
- 语义分析:符号解析与作用域
目标
我们希望成为可用于生产环境的、最快的 Rust Parser:
- 速度:相较 SWC 约 3 倍速,相较 Biome 约 5 倍速
- 一致性:Test262 100% 对齐,Babel/TypeScript ≥99% 兼容
- 内存:Arena 分配、堆用量低
- 错误信息:可恢复并且有意义的诊断
开发流程
环境与命令
bash
# Parser 单元测试
cargo test -p oxc_parser
# Conformance(覆盖率)测试
just c # 或 `just coverage`目录结构示意
crates/oxc_parser/
├── src/
│ ├── lib.rs # 对外 API
│ ├── lexer/
│ ├── parser/
│ ├── cursor.rs
│ └── diagnostics.rs
├── tests/
└── examples/核心文件
parser/mod.rs:入口parser/statement.rs:语句parser/expression.rs:表达式parser/typescript.rs:TS 专属parser/jsx.rs:JSX
Conformance 测试
bash
just c在 tasks/coverage 中驱动各类一致性套件:
Test262(ECMAScript)
Test262 覆盖规范可观察行为; 解析层面使用其中的 解析阶段否定用例说明。
当前:43765/43765 (100.00%)
Babel Parser 测试
新语言特性往往首先在 Babel 落地,其 parser tests 覆盖前沿语法。
当前:2093/2101 (99.62%)
TypeScript Conformance
当前:6470/6479 (99.86%)
结果快照
快照文件用于跟踪变化: