mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 23:02:20 +00:00
…
|
||
---|---|---|
.. | ||
esprima | ||
esprima.egg-info | ||
PKG-INFO | ||
README | ||
setup.cfg | ||
setup.py |
|Donate| |PyPI Version| |PyPI License| |PyPI Format| |PyPI Status| **Esprima** (`esprima.org <http://esprima.org>`__, BSD license) is a high performance, standard-compliant `ECMAScript <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__ parser officially written in ECMAScript (also popularly known as `JavaScript <https://en.wikipedia.org/wiki/JavaScript>`__) and ported to Python. Esprima is created and maintained by `Ariya Hidayat <https://twitter.com/ariyahidayat>`__, with the help of `many contributors <https://github.com/jquery/esprima/contributors>`__. Python port is a line-by-line manual translation and was created and is maintained by `German Mendez Bravo (Kronuz) <https://twitter.com/germbravo>`__. Features ~~~~~~~~ - Full support for ECMAScript 2017 (`ECMA-262 8th Edition <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__) - Sensible `syntax tree format <https://github.com/estree/estree/blob/master/es5.md>`__ as standardized by `ESTree project <https://github.com/estree/estree>`__ - Experimental support for `JSX <https://facebook.github.io/jsx/>`__, a syntax extension for `React <https://facebook.github.io/react/>`__ - Optional tracking of syntax node location (index-based and line-column) - `Heavily tested <http://esprima.org/test/ci.html>`__ (~1500 `unit tests <https://github.com/jquery/esprima/tree/master/test/fixtures>`__ with `full code coverage <https://codecov.io/github/jquery/esprima>`__) Installation ~~~~~~~~~~~~ .. code:: shell pip install esprima API ~~~ Esprima can be used to perform `lexical analysis <https://en.wikipedia.org/wiki/Lexical_analysis>`__ (tokenization) or `syntactic analysis <https://en.wikipedia.org/wiki/Parsing>`__ (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 <http://esprima.org/doc>`__. .. |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