Supported Parsers
Porffor can use any of the following parsers:- acorn - Default for JavaScript
- @babel/parser - Default for TypeScript, full feature support
- meriyah - Fast, spec-compliant parser
- hermes-parser - Parser from Hermes JavaScript engine
- oxc-parser - Oxidation Compiler parser (Rust-based)
Parser Selection
Select which parser to use for parsing JavaScript/TypeScript.Default behavior:
- JavaScript files:
acorn - TypeScript files:
@babel/parser
source/compiler/parse.js:9-25Parser Details
Acorn (Default for JS)
- Lightweight and fast
- Good for standard JavaScript
- Default for
.jsfiles
source/compiler/parse.js:31-33
@babel/parser (Default for TypeScript)
- Full TypeScript support
- Supports type annotations
- Required for
--parse-types - Default for
.tsfiles
source/compiler/parse.js:42
Meriyah
- Fast, spec-compliant ECMAScript parser
- Good performance
- Supports modern JavaScript features
source/compiler/parse.js:35-39
Hermes Parser
- From the Hermes JavaScript engine
- Supports TypeScript
- Compatible with React Native
OXC Parser
- Rust-based parser (fast)
- Supports TypeScript
- Part of the Oxidation Compiler project
source/compiler/parse.js:52-54
TypeScript-Compatible Parsers
Only certain parsers support TypeScript syntax:Force TypeScript Parsing
Force parsing input as TypeScript, regardless of file extension.Automatically uses
@babel/parser when enabled.Source reference: source/compiler/parse.js:6Module vs Script
Control whether code is parsed as an ES module or a script:Parse input as an ES module.Affects the
sourceType option passed to all parsers.Differences:- Module: Supports
import/export, strict mode by default - Script: Traditional JavaScript, no imports
source/compiler/parse.js:37, 45Parser Compatibility Matrix
| Parser | JavaScript | TypeScript | Speed | Notes |
|---|---|---|---|---|
| acorn | ✅ | ❌ | Fast | Default for JS |
| @babel/parser | ✅ | ✅ | Medium | Default for TS, most features |
| meriyah | ✅ | ❌ | Fast | Spec-compliant |
| hermes-parser | ✅ | ✅ | Fast | From Hermes engine |
| oxc-parser | ✅ | ✅ | Very Fast | Rust-based |
Internal Parser Usage
The parser is loaded dynamically at startup:source/compiler/parse.js:18-23
Temporal Detection
All parsers support automatic Temporal API detection:source/compiler/parse.js:61
Examples
Use fastest parser for production
Parse JavaScript with Babel
TypeScript with Hermes
Force TypeScript parsing with specific parser
Error Handling
All parser errors are normalized toSyntaxError:
source/compiler/parse.js:64-67
See Also
- TypeScript Support - TypeScript-specific features
- Compiler Options - All compiler flags