竜 TatSu is a tool that takes grammars in a variation of EBNF http://en.wikipedia.org/wiki/Ebnf as input, and outputs memoizing http://en.wikipedia.org/wiki/Memoization (Packrat http://bford.info/packrat/) PEG http://en.wikipedia.org/wiki/Parsing_expression_grammar parsers in Python http://python.org/.
竜 TatSu can compile a grammar stored in a string into a tatsu.grammars.Grammar object that can be used to parse any given input, much like the re https://docs.python.org/3.7/library/re.html module does with regular expressions, or it can generate a Python http://python.org/ module that implements the parser.
竜 TatSu supports left-recursive https://en.wikipedia.org/wiki/Left_recursion rules in PEG http://en.wikipedia.org/wiki/Parsing_expression_grammar grammars using the algorithm http://norswap.com/pubs/sle2016.pdf by *Laurent* and *Mens*. The generated AST http://en.wikipedia.org/wiki/Abstract_syntax_tree has the expected left associativity. https://github.com/neogeny/TatSu#installation*CHANGES*
- 竜 TatSu is now only tested against Python 3.8. Earlier versions of Python are now deprecated, and Python 2.X versions are no longer supported ( @apalala https://github.com/apalala). - Apply nameguard only if token.isalpha(). This solves a regression afecting previous TatSu and Grako grammars (@apalala https://github.com/apalala). - Remove pygraphviz from develoment requirements, as it doesn't build under Py38 (@apalala https://github.com/apalala) - #56 https://github.com/neogeny/TatSu/issues/56 Include missing tatsu/g2e/antlr.ebnf in distribution (@apalala https://github.com/apalala) - #138 https://github.com/neogeny/TatSu/issues/138 Reimplement the calculation of FIRST, FOLLOW, and LOOKAHEAD sets using latest theories. For now, this should improve parser error reporting, but should eventually enable the simplification of parsing of leftrec grammars (@apalala https://github.com/apalala). - #153 https://github.com/neogeny/TatSu/issues/153 Import ABCs from collections.abc (@tirkarthi https://github.com/tirkarthi) - Remove support for Cythonand pypy3 (@apalala https://github.com/apalala).