- Notifications
You must be signed in to change notification settings - Fork109
davidhalter/parso
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Parso is a Python parser that supports error recovery and round-trip parsingfor different Python versions (in multiple Python versions). Parso is also ableto list multiple syntax errors in your python file.
Parso has been battle-tested byjedi. It was pulled out of jedi to be usefulfor other projects as well.
Parso consists of a small API to parse Python and analyse the syntax tree.
A simple example:
>>>importparso>>>module=parso.parse('hello + 1',version="3.9")>>>expr=module.children[0]>>>exprPythonNode(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=parso.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"
pip install parso
- There will be better support for refactoring and comments. Stay tuned.
- There's a WIP PEP8 validator. It's however not in a good shape, yet.
- async/await are already used as keywords in Python3.6.
- from __future__ import print_function is not ignored.
- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2(originally used in lib2to3).
- Salome Schneider for the extremely awesome parso logo.
About
A Python Parser
Resources
License
Security policy
Stars
Watchers
Forks
Packages0
No packages published