Grako (for grammar compiler) is a tool that takes grammars in a variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in Python.
Changes in 3.12.1: - Distinguish between positive and normal joins: s.{e}+ and s.{e}. Having s.{e} use a positive closure was too unexpected. - Also generate a buffering.Buffer descendant specific to the grammar for parsers that need to customize the parsing.Parser.parse() method. - Added the grako.synth module which makes synthetic grako.model.Node classes pickable. - Traded memory for simplicity and replaced the line-based line cache in buffering.Buffer for a position-based cache. Buffering needs to continue being str-based for complex re patterns to work as expected. - Now patterns may be concatenated to split a complex pattern into parts, possibly accross several lines: /regexp/ + /regexp/. - Added basic support for symbol tables in grako.symtables. - Now model.ParseModel is an alias for model.Node. - Improved examples/antlr2grako so it generates more usable Grako grammars. - Syntax file for Sublime Text (vmuriart). - The latest changes to grako.util.trim() were incomplete. - Fixed several inconsistencies in the implementation and use of buffering.Buffer line indexing. - Repeated parameters to object model constructors. -- Juancarlo *Añez* -- https://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations/