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 编程语言

Download history • Rust 包仓库 1302/week @ 2024-05-03 • Rust 包仓库 1296/week @ 2024-05-10 • Rust 包仓库 3752/week @ 2024-05-17 • Rust 包仓库 2405/week @ 2024-05-24 • Rust 包仓库 55963/week @ 2024-05-31 • Rust 包仓库 66360/week @ 2024-06-07 • Rust 包仓库 50788/week @ 2024-06-14 • Rust 包仓库 84403/week @ 2024-06-21 • Rust 包仓库 78238/week @ 2024-06-28 • Rust 包仓库 60966/week @ 2024-07-05 • Rust 包仓库 62650/week @ 2024-07-12 • Rust 包仓库 59341/week @ 2024-07-19 • Rust 包仓库 68756/week @ 2024-07-26 • Rust 包仓库 62360/week @ 2024-08-02 • Rust 包仓库 49078/week @ 2024-08-09 • Rust 包仓库 39362/week @ 2024-08-16 • Rust 包仓库

232,457 每月下载量
14 个crate中使用 (11 个直接使用)

MIT 许可证

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::Visitoxc_ast::VisitMut

无访问者访问

对于临时任务,可以使用语义分析器获取指向未类型化节点的父指针树,节点可以通过顺序循环进行迭代。

for node in semantic.nodes().iter() {
    match node.kind() {
        // check node
    }
}

参见 完整的linter示例

依赖关系

~4–10MB
~91K SLoC