TatSu is a tool that takes grammars in a variation of EBNF as input
and outputs memoizing (Packrat) PEG parsers in Python.

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 module does with regular expressions, or it
can generate a Python module that implements the parser.

TatSu supports left-recursive rules in PEG grammars using the
algorithm by Laurent and Mens. The generated AST has the expected
left associativity.
