Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kronuz/esprima-python
ECMAScript parsing infrastructure for multipurpose analysis
https://github.com/kronuz/esprima-python
ast ecmascript esprima javascript parser parsing python
Last synced: 4 days ago
JSON representation
ECMAScript parsing infrastructure for multipurpose analysis
- Host: GitHub
- URL: https://github.com/kronuz/esprima-python
- Owner: Kronuz
- License: other
- Created: 2017-07-12T18:21:51.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-01T17:25:45.000Z (almost 2 years ago)
- Last Synced: 2024-12-14T01:05:45.684Z (11 days ago)
- Topics: ast, ecmascript, esprima, javascript, parser, parsing, python
- Language: Python
- Homepage: http://esprima.org
- Size: 7.24 MB
- Stars: 236
- Watchers: 15
- Forks: 47
- Open Issues: 7
-
Metadata Files:
- Readme: README
- Changelog: ChangeLog
- License: LICENSE
Awesome Lists containing this project
README
|Donate| |PyPI Version| |PyPI License| |PyPI Format| |PyPI Status|
**Esprima** (`esprima.org `__, BSD license) is a
high performance, standard-compliant
`ECMAScript `__
parser officially written in ECMAScript (also popularly known as
`JavaScript `__) and ported to
Python. Esprima is created and maintained by `Ariya
Hidayat `__, with the help of `many
contributors `__.Python port is a line-by-line manual translation and was created and is
maintained by `German Mendez Bravo
(Kronuz) `__.Features
~~~~~~~~- Full support for ECMAScript 2017 (`ECMA-262 8th
Edition `__)
- Sensible `syntax tree
format `__ as
standardized by `ESTree project `__
- Experimental support for `JSX `__, a
syntax extension for `React `__
- Optional tracking of syntax node location (index-based and
line-column)
- `Heavily tested `__ (~1500 `unit
tests `__
with `full code
coverage `__)Installation
~~~~~~~~~~~~.. code:: shell
pip install esprima
API
~~~Esprima can be used to perform `lexical
analysis `__
(tokenization) or `syntactic
analysis `__ (parsing) of a
JavaScript program.A simple example:
.. code:: javascript
>>> import esprima
>>> program = 'const answer = 42'>>> esprima.tokenize(program)
[{
type: "Keyword",
value: "const"
}, {
type: "Identifier",
value: "answer"
}, {
type: "Punctuator",
value: "="
}, {
type: "Numeric",
value: "42"
}]>>> esprima.parseScript(program)
{
body: [
{
kind: "const",
declarations: [
{
init: {
raw: "42",
type: "Literal",
value: 42
},
type: "VariableDeclarator",
id: {
type: "Identifier",
name: "answer"
}
}
],
type: "VariableDeclaration"
}
],
type: "Program",
sourceType: "script"
}For more information, please read the `complete
documentation `__... |Donate| image:: https://img.shields.io/badge/Donate-PayPal-green.svg
:target: https://www.paypal.me/Kronuz/25
.. |PyPI Version| image:: https://img.shields.io/pypi/v/esprima.svg
:target: https://pypi.python.org/pypi/esprima
.. |PyPI License| image:: https://img.shields.io/pypi/l/esprima.svg
:target: https://pypi.python.org/pypi/esprima
.. |PyPI Wheel| image:: https://img.shields.io/pypi/wheel/esprima.svg
:target: https://pypi.python.org/pypi/esprima
.. |PyPI Format| image:: https://img.shields.io/pypi/format/esprima.svg
:target: https://pypi.python.org/pypi/esprima
.. |PyPI Python Version| image:: https://img.shields.io/pypi/pyversions/esprima.svg
:target: https://pypi.python.org/pypi/esprima
.. |PyPI Implementation| image:: https://img.shields.io/pypi/implementation/esprima.svg
:target: https://pypi.python.org/pypi/esprima
.. |PyPI Status| image:: https://img.shields.io/pypi/status/esprima.svg
:target: https://pypi.python.org/pypi/esprima
.. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/esprima.svg
:target: https://pypi.python.org/pypi/esprima