55 个版本 (25 个重大更改)
新 0.25.0 | 2024年8月23日 |
---|---|
0.23.1 | 2024年8月6日 |
0.22.1 | 2024年7月28日 |
0.11.0 | 2024年3月30日 |
0.0.1 | 2023年3月30日 |
#17 in 编程语言
232,457 每月下载量
在 14 个crate中使用 (11 个直接使用)
2.5MB
51K SLoC
JavaScript和TypeScript的Oxc解析器
性能
使用了以下优化技术:
- AST在内存竞技场(bumpalo)中分配,以实现快速的AST删除
- oxc_span::Span 偏移使用
u32
而不是usize
- 作用域绑定、符号解析和复杂的语法错误不在解析器中执行,而是委托给 语义分析器
用法
解析器具有最小的API,具有三个输入和一个返回结构([ParserReturn])。
let parser_return = Parser::new(&allocator, &source_text, source_type).parse();
示例
https://github.com/Boshen/oxc/blob/main/crates/oxc_parser/examples/parser.rs
访问者
参见 oxc_ast::Visit 和 oxc_ast::VisitMut
无访问者访问
对于临时任务,可以使用语义分析器获取指向未类型化节点的父指针树,节点可以通过顺序循环进行迭代。
for node in semantic.nodes().iter() {
match node.kind() {
// check node
}
}
参见 完整的linter示例
依赖关系
~4–10MB
~91K SLoC