Oxc Parser for JavaScript and TypeScript
Oxc's [Parser
] has full support for
- The latest stable ECMAScript syntax
- TypeScript
- JSX and TSX
- Stage 3 Decorators
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 = new.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 usesu32
instead ofusize
- 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
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