babel/packages/babylon/README.md
2015-09-15 06:25:52 +01:00

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`