Metadata-Version: 2.1
Name: marso
Version: 0.0.2
Summary: A Move Parser
Home-page: https://github.com/yuan-xy/marso
Author: Yuan xy
Author-email: yuan_xin_yu@hotmail.com
Maintainer: Yuan xy
Maintainer-email: yuan_xin_yu@hotmail.com
License: MIT
Keywords: move/libra parser
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Plugins
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Editors :: Integrated Development Environments (IDE)
Classifier: Topic :: Utilities
Requires-Python: >=3.7
Provides-Extra: testing
Requires-Dist: docopt ; extra == 'testing'
Requires-Dist: pytest (>=3.0.7) ; extra == 'testing'

###################################################################
marso - A Move(Libra) Parser (Not Ready)
###################################################################


.. image:: https://img.shields.io/pypi/v/marso.svg
    :target: https://pypi.org/project/marso/
    :alt: Marso

.. image:: https://img.shields.io/badge/license-MIT-blue.svg
    :target: ./LICENSE
    :alt: MIT licensed

.. image:: https://github.com/yuan-xy/marso/workflows/Python%20package/badge.svg
    :target: https://github.com/yuan-xy/marso/actions
    :alt: Python package



Marso is a Move language parser that supports error recovery and round-trip parsing
. Marso is also able to list multiple syntax errors in your move source file.

Marso has been battle-tested by jedi_. 

Marso consists of a small API to parse Move language and analyse the syntax tree.

A simple example:

.. code-block:: python

    >>> import marso
    >>> module = marso.parse('hello + 1', version="3.6")
    >>> expr = module.children[0]
    >>> expr
    PythonNode(arith_expr, [<Name: hello@1,0>, <Operator: +>, <Number: 1>])
    >>> print(expr.get_code())
    hello + 1
    >>> name = expr.children[0]
    >>> name
    <Name: hello@1,0>
    >>> name.end_pos
    (1, 5)
    >>> expr.end_pos
    (1, 9)

To list multiple issues:

.. code-block:: python

    >>> grammar = marso.load_grammar()
    >>> module = grammar.parse('foo +\nbar\ncontinue')
    >>> error1, error2 = grammar.iter_errors(module)
    >>> error1.message
    'SyntaxError: invalid syntax'
    >>> error2.message
    "SyntaxError: 'continue' not properly in loop"

Resources
=========

- `Testing <https://marso.readthedocs.io/en/latest/docs/development.html#testing>`_
- `PyPI <https://pypi.python.org/pypi/marso>`_
- `Docs <https://marso.readthedocs.org/en/latest/>`_
- Uses `semantic versioning <https://semver.org/>`_

Installation
============

    pip install marso



Acknowledgements
================

- David Halter (@davidhalter) for the original `Parso <https://github.com/davidhalter/parso>`_ project.
- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2
  (originally used in lib2to3).


.. _jedi: https://github.com/yuan-xy/jedi


.. :changelog:

Changelog
---------

0.0.1 (2020-05-29)
+++++++++++++++++++

- Test publish as a pip package, not work yet.


