Skip to main content

A Move Parser

Project description

Marso MIT licensed 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:

>>> 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:

>>> 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

Installation

pip install marso

Acknowledgements

  • David Halter (@davidhalter) for the original Parso project.

  • Guido van Rossum (@gvanrossum) for creating the parser generator pgen2 (originally used in lib2to3).

Changelog

0.0.1 (2020-05-29)

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marso-0.0.3.tar.gz (460.0 kB view hashes)

Uploaded Source

Built Distribution

marso-0.0.3-py2.py3-none-any.whl (196.9 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page