Subject: CVS commit: pkgsrc/devel/py-grako
From: Adam Ciarcinski
Date: 2017-06-01 14:04:38
Message id: 20170601120438.CE584FBEE@cvs.NetBSD.org

Log Message:
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.

Grako can also compile a grammar stored in a string into a Grammar object that
can be used to parse any given input, much like the re module does with
regular expressions.

Grako is different from other PEG parser generators:
* Generated parsers use Python's very efficient exception-handling system to
  backtrack. Grako generated parsers simply assert what must be parsed. There
  are no complicated if-then-else sequences for decision making or
  backtracking. Memoization allows going over the same input sequence several
  times in linear time.
* Positive and negative lookaheads, and the cut element (with its cleaning of
  the memoization cache) allow for additional, hand-crafted optimizations at
  the grammar level.
* Delegation to Python's re module for lexemes allows for (Perl-like) powerful
  and efficient lexical analysis.
* The use of Python's context managers considerably reduces the size of the
  generated parsers for code clarity, and enhanced CPU-cache hits.
* Include files, rule inheritance, and rule inclusion give Grako grammars
  considerable expressive power.
* Automatic generation of Abstract Syntax Trees and Object Models, along with
  Model Walkers and Code Generators make analysis and translation approachable.

Files:
RevisionActionfile
1.1addpkgsrc/devel/py-grako/ALTERNATIVES
1.1addpkgsrc/devel/py-grako/DESCR
1.1addpkgsrc/devel/py-grako/Makefile
1.1addpkgsrc/devel/py-grako/PLIST
1.1addpkgsrc/devel/py-grako/distinfo