Up to [cvs.NetBSD.org] / pkgsrc / devel / py-grako
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
py-grako: remove Upstream development has stopped.
python: egg.mk: add USE_PKG_RESOURCES flag This flag should be set for packages that import pkg_resources and thus need setuptools after the build step. Set this flag for packages that need it and bump PKGREVISION.
*: bump PKGREVISION for egg.mk users They now have a tool dependency on py-setuptools instead of a DEPENDS
Use the build dependency I reported to actually fix the build.
Added BUILD_DEPENDS for 'test' target
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.