Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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