cf8c455cdf | ||
---|---|---|
lark | ||
LICENSE | ||
README.md |
README.md
Lark - a modern pure-Python parsing library
Lark is a modern general-purpose Python parsing library, that focuses on simplicity and power.
Lark accepts grammars as EBNF and lets you choose between two parsing algorithms:
- Earley : Parses all context-free grammars (even ambiguous ones)!
- LALR(1): Only LR grammars. Outperforms PLY and most if not all other pure-python parsing libraries.
Both algorithms are pure-python implementations and can be used interchangably (aside for algorithmic restrictions).
Lark can automagically build an AST from your grammar, without any more code on your part.
Lark does things a little differently
-
Separates code from grammar: The result is parsers that are cleaner and easier to read & work with.
-
Automatically builds a tree (AST): Trees are always simpler to work with than state-machines. (But if you want to provide a callback for efficiency reasons, Lark lets you do that too)
-
Follows Python's Idioms: Beautiful is better than ugly. Readability counts.
Features
- EBNF grammar with a little extra
- Earley & LALR(1)
- Builds an AST automagically based on the grammar
- Python 2 & 3 compatible
- Supports unicode
License
Lark uses the GPL3 license.
Contact
If you have any questions or want to contribute, please email me at erezshin at gmail com.