oxc_parser 0.73.0

A collection of JavaScript tools written in Rust.
Documentation

Oxc Parser for JavaScript and TypeScript

Oxc's [Parser] has full support for

Usage

The parser has a minimal API with three inputs (a memory arena, a source string, and a [SourceType]) and one return struct (a [ParserReturn]).

let parser_return = Parser::new(&allocator, &source_text, source_type).parse();

Abstract Syntax Tree (AST)

Oxc's AST is located in a separate [oxc_ast] crate. You can find type definitions for AST nodes [here][oxc_ast::ast].

Performance

The following optimization techniques are used:

  • AST is allocated in a memory arena (bumpalo) for fast AST drop
  • [oxc_span::Span] offsets uses u32 instead of usize
  • Scope binding, symbol resolution and complicated syntax errors are not done in the parser, they are delegated to the semantic analyzer

Examples

https://github.com/oxc-project/oxc/blob/main/crates/oxc_parser/examples/parser.rs

Parsing TSX

Visitor

See Visit and VisitMut.

Visiting without a visitor

For ad-hoc tasks, the semantic analyzer can be used to get a parent pointing tree with untyped nodes, the nodes can be iterated through a sequential loop.

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

See full linter example