76 lines
1.9 KiB
Markdown
76 lines
1.9 KiB
Markdown
<p align="center">
|
|
<img alt="babylon" src="https://raw.githubusercontent.com/babel/logo/master/babylon.png" width="700">
|
|
</p>
|
|
|
|
<p align="center">
|
|
Babylon is a JavaScript parser used in <a href="https://github.com/babel/babel">Babel</a>.
|
|
</p>
|
|
|
|
- ES6 enabled by default.
|
|
- Comment attachment.
|
|
- Support for JSX and Flow.
|
|
- Support for experimental language proposals.
|
|
|
|
## Credits
|
|
|
|
Heavily based on [acorn](https://github.com/marijnh/acorn) and [acorn-jsx](https://github.com/RReverser/acorn-jsx),
|
|
thanks to the awesome work of [@RReverser](https://github.com/RReverser) and [@marijnh](https://github.com/marijnh).
|
|
|
|
Significant diversions are expected to occur in the future such as streaming, EBNF definitions, sweet.js integration, interspacial parsing and more.
|
|
|
|
## API
|
|
|
|
### `babylon.parse(code, [options])`
|
|
|
|
## Options
|
|
|
|
- **allowImportExportEverywhere**: By default, `import` and `export`
|
|
declarations can only appear at a program's top level. Setting this
|
|
option to `true` allows them anywhere where a statement is allowed.
|
|
|
|
- **allowReturnOutsideFunction**: By default, a return statement at
|
|
the top level raises an error. Set this to `true` to accept such
|
|
code.
|
|
|
|
- **sourceType**: Indicate the mode the code should be parsed in. Can be
|
|
either `"script"` or `"module"`.
|
|
|
|
- **features**: Object containing names of all the proposed syntax you want
|
|
to support.
|
|
|
|
- **plugins**: Object containg the plugins that you want to enable.
|
|
|
|
### Example
|
|
|
|
```javascript
|
|
require("babylon").parse("code", {
|
|
// parse in strict mode and allow module declarations
|
|
sourceType: "module",
|
|
|
|
features: {
|
|
// enable experimental async functions
|
|
asyncFunctions: true
|
|
}
|
|
|
|
plugins: {
|
|
// enable jsx and flow syntax
|
|
jsx: true,
|
|
flow: true
|
|
}
|
|
});
|
|
```
|
|
|
|
### Features
|
|
|
|
- `asyncFunctions`
|
|
- `doExpressions`
|
|
- `comprehensions`
|
|
- `trailingFunctionCommas`
|
|
- `objectRestSpread`
|
|
- `decorators`
|
|
|
|
### Plugins
|
|
|
|
- `jsx`
|
|
- `flow`
|