pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/py-grako Grako (for grammar compiler) is a tool ...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/4f726e965df7
branches:  trunk
changeset: 363111:4f726e965df7
user:      adam <adam%pkgsrc.org@localhost>
date:      Thu Jun 01 12:04:38 2017 +0000

description:
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.

diffstat:

 devel/py-grako/ALTERNATIVES |    1 +
 devel/py-grako/DESCR        |   24 +++++
 devel/py-grako/Makefile     |   21 ++++
 devel/py-grako/PLIST        |  209 ++++++++++++++++++++++++++++++++++++++++++++
 devel/py-grako/distinfo     |    6 +
 5 files changed, 261 insertions(+), 0 deletions(-)

diffs (281 lines):

diff -r b0315e7cfe02 -r 4f726e965df7 devel/py-grako/ALTERNATIVES
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/py-grako/ALTERNATIVES       Thu Jun 01 12:04:38 2017 +0000
@@ -0,0 +1,1 @@
+bin/slicer @PREFIX@/bin/slicer@PYVERSSUFFIX@
diff -r b0315e7cfe02 -r 4f726e965df7 devel/py-grako/DESCR
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/py-grako/DESCR      Thu Jun 01 12:04:38 2017 +0000
@@ -0,0 +1,24 @@
+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.
diff -r b0315e7cfe02 -r 4f726e965df7 devel/py-grako/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/py-grako/Makefile   Thu Jun 01 12:04:38 2017 +0000
@@ -0,0 +1,21 @@
+# $NetBSD: Makefile,v 1.1 2017/06/01 12:04:38 adam Exp $
+
+DISTNAME=      grako-3.99.9
+PKGNAME=       ${PYPKGPREFIX}-${DISTNAME}
+CATEGORIES=    devel python
+MASTER_SITES=  ${MASTER_SITE_PYPI:=g/grako/}
+EXTRACT_SUFX=  .zip
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      https://bitbucket.org/neogeny/grako/
+COMMENT=       Grammar compiler
+LICENSE=       modified-bsd
+
+USE_LANGUAGES=         c
+
+post-install:
+       cd ${DESTDIR}${PREFIX}/bin && mv grako grako${PYVERSSUFFIX} || ${TRUE}
+
+.include "../../devel/py-cython/buildlink3.mk"
+.include "../../lang/python/egg.mk"
+.include "../../mk/bsd.pkg.mk"
diff -r b0315e7cfe02 -r 4f726e965df7 devel/py-grako/PLIST
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/py-grako/PLIST      Thu Jun 01 12:04:38 2017 +0000
@@ -0,0 +1,209 @@
+@comment $NetBSD: PLIST,v 1.1 2017/06/01 12:04:38 adam Exp $
+bin/grako${PYVERSSUFFIX}
+${PYSITELIB}/${EGG_INFODIR}/PKG-INFO
+${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt
+${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt
+${PYSITELIB}/${EGG_INFODIR}/entry_points.txt
+${PYSITELIB}/${EGG_INFODIR}/not-zip-safe
+${PYSITELIB}/${EGG_INFODIR}/requires.txt
+${PYSITELIB}/${EGG_INFODIR}/top_level.txt
+${PYSITELIB}/grako/__init__.py
+${PYSITELIB}/grako/__init__.pyc
+${PYSITELIB}/grako/__init__.pyo
+${PYSITELIB}/grako/__main__.py
+${PYSITELIB}/grako/__main__.pyc
+${PYSITELIB}/grako/__main__.pyo
+${PYSITELIB}/grako/_config.py
+${PYSITELIB}/grako/_config.pyc
+${PYSITELIB}/grako/_config.pyo
+${PYSITELIB}/grako/_config.so
+${PYSITELIB}/grako/_unicode_characters.py
+${PYSITELIB}/grako/_unicode_characters.pyc
+${PYSITELIB}/grako/_unicode_characters.pyo
+${PYSITELIB}/grako/_unicode_characters.so
+${PYSITELIB}/grako/_version.py
+${PYSITELIB}/grako/_version.pyc
+${PYSITELIB}/grako/_version.pyo
+${PYSITELIB}/grako/_version.so
+${PYSITELIB}/grako/ast.py
+${PYSITELIB}/grako/ast.pyc
+${PYSITELIB}/grako/ast.pyo
+${PYSITELIB}/grako/ast.so
+${PYSITELIB}/grako/bootstrap.py
+${PYSITELIB}/grako/bootstrap.pyc
+${PYSITELIB}/grako/bootstrap.pyo
+${PYSITELIB}/grako/bootstrap.so
+${PYSITELIB}/grako/buffering.py
+${PYSITELIB}/grako/buffering.pyc
+${PYSITELIB}/grako/buffering.pyo
+${PYSITELIB}/grako/buffering.so
+${PYSITELIB}/grako/codegen/__init__.py
+${PYSITELIB}/grako/codegen/__init__.pyc
+${PYSITELIB}/grako/codegen/__init__.pyo
+${PYSITELIB}/grako/codegen/cgbase.py
+${PYSITELIB}/grako/codegen/cgbase.pyc
+${PYSITELIB}/grako/codegen/cgbase.pyo
+${PYSITELIB}/grako/codegen/cgbase.so
+${PYSITELIB}/grako/codegen/objectmodel.py
+${PYSITELIB}/grako/codegen/objectmodel.pyc
+${PYSITELIB}/grako/codegen/objectmodel.pyo
+${PYSITELIB}/grako/codegen/objectmodel.so
+${PYSITELIB}/grako/codegen/python.py
+${PYSITELIB}/grako/codegen/python.pyc
+${PYSITELIB}/grako/codegen/python.pyo
+${PYSITELIB}/grako/codegen/python.so
+${PYSITELIB}/grako/color.py
+${PYSITELIB}/grako/color.pyc
+${PYSITELIB}/grako/color.pyo
+${PYSITELIB}/grako/color.so
+${PYSITELIB}/grako/containers.py
+${PYSITELIB}/grako/containers.pyc
+${PYSITELIB}/grako/containers.pyo
+${PYSITELIB}/grako/containers.so
+${PYSITELIB}/grako/contexts.py
+${PYSITELIB}/grako/contexts.pyc
+${PYSITELIB}/grako/contexts.pyo
+${PYSITELIB}/grako/contexts.so
+${PYSITELIB}/grako/diagrams.py
+${PYSITELIB}/grako/diagrams.pyc
+${PYSITELIB}/grako/diagrams.pyo
+${PYSITELIB}/grako/diagrams.so
+${PYSITELIB}/grako/exceptions.py
+${PYSITELIB}/grako/exceptions.pyc
+${PYSITELIB}/grako/exceptions.pyo
+${PYSITELIB}/grako/exceptions.so
+${PYSITELIB}/grako/grammars.py
+${PYSITELIB}/grako/grammars.pyc
+${PYSITELIB}/grako/grammars.pyo
+${PYSITELIB}/grako/grammars.so
+${PYSITELIB}/grako/infos.py
+${PYSITELIB}/grako/infos.pyc
+${PYSITELIB}/grako/infos.pyo
+${PYSITELIB}/grako/infos.so
+${PYSITELIB}/grako/model.py
+${PYSITELIB}/grako/model.pyc
+${PYSITELIB}/grako/model.pyo
+${PYSITELIB}/grako/model.so
+${PYSITELIB}/grako/objectmodel.py
+${PYSITELIB}/grako/objectmodel.pyc
+${PYSITELIB}/grako/objectmodel.pyo
+${PYSITELIB}/grako/objectmodel.so
+${PYSITELIB}/grako/parser.py
+${PYSITELIB}/grako/parser.pyc
+${PYSITELIB}/grako/parser.pyo
+${PYSITELIB}/grako/parser.so
+${PYSITELIB}/grako/parsing.py
+${PYSITELIB}/grako/parsing.pyc
+${PYSITELIB}/grako/parsing.pyo
+${PYSITELIB}/grako/parsing.so
+${PYSITELIB}/grako/rendering.py
+${PYSITELIB}/grako/rendering.pyc
+${PYSITELIB}/grako/rendering.pyo
+${PYSITELIB}/grako/rendering.so
+${PYSITELIB}/grako/semantics.py
+${PYSITELIB}/grako/semantics.pyc
+${PYSITELIB}/grako/semantics.pyo
+${PYSITELIB}/grako/semantics.so
+${PYSITELIB}/grako/symtables.py
+${PYSITELIB}/grako/symtables.pyc
+${PYSITELIB}/grako/symtables.pyo
+${PYSITELIB}/grako/symtables.so
+${PYSITELIB}/grako/synth.py
+${PYSITELIB}/grako/synth.pyc
+${PYSITELIB}/grako/synth.pyo
+${PYSITELIB}/grako/synth.so
+${PYSITELIB}/grako/test/__init__.py
+${PYSITELIB}/grako/test/__init__.pyc
+${PYSITELIB}/grako/test/__init__.pyo
+${PYSITELIB}/grako/test/__main__.py
+${PYSITELIB}/grako/test/__main__.pyc
+${PYSITELIB}/grako/test/__main__.pyo
+${PYSITELIB}/grako/test/ast_test.py
+${PYSITELIB}/grako/test/ast_test.pyc
+${PYSITELIB}/grako/test/ast_test.pyo
+${PYSITELIB}/grako/test/buffering_test.py
+${PYSITELIB}/grako/test/buffering_test.pyc
+${PYSITELIB}/grako/test/buffering_test.pyo
+${PYSITELIB}/grako/test/codegen_test.py
+${PYSITELIB}/grako/test/codegen_test.pyc
+${PYSITELIB}/grako/test/codegen_test.pyo
+${PYSITELIB}/grako/test/diagram_test.py
+${PYSITELIB}/grako/test/diagram_test.pyc
+${PYSITELIB}/grako/test/diagram_test.pyo
+${PYSITELIB}/grako/test/grammar/__init__.py
+${PYSITELIB}/grako/test/grammar/__init__.pyc
+${PYSITELIB}/grako/test/grammar/__init__.pyo
+${PYSITELIB}/grako/test/grammar/__init__.so
+${PYSITELIB}/grako/test/grammar/directive_test.py
+${PYSITELIB}/grako/test/grammar/directive_test.pyc
+${PYSITELIB}/grako/test/grammar/directive_test.pyo
+${PYSITELIB}/grako/test/grammar/directive_test.so
+${PYSITELIB}/grako/test/grammar/join_test.py
+${PYSITELIB}/grako/test/grammar/join_test.pyc
+${PYSITELIB}/grako/test/grammar/join_test.pyo
+${PYSITELIB}/grako/test/grammar/join_test.so
+${PYSITELIB}/grako/test/grammar/keyword_test.py
+${PYSITELIB}/grako/test/grammar/keyword_test.pyc
+${PYSITELIB}/grako/test/grammar/keyword_test.pyo
+${PYSITELIB}/grako/test/grammar/keyword_test.so
+${PYSITELIB}/grako/test/grammar/left_recursion_test.py
+${PYSITELIB}/grako/test/grammar/left_recursion_test.pyc
+${PYSITELIB}/grako/test/grammar/left_recursion_test.pyo
+${PYSITELIB}/grako/test/grammar/left_recursion_test.so
+${PYSITELIB}/grako/test/grammar/parameter_test.py
+${PYSITELIB}/grako/test/grammar/parameter_test.pyc
+${PYSITELIB}/grako/test/grammar/parameter_test.pyo
+${PYSITELIB}/grako/test/grammar/parameter_test.so
+${PYSITELIB}/grako/test/grammar/pattern_test.py
+${PYSITELIB}/grako/test/grammar/pattern_test.pyc
+${PYSITELIB}/grako/test/grammar/pattern_test.pyo
+${PYSITELIB}/grako/test/grammar/pattern_test.so
+${PYSITELIB}/grako/test/grammar/pretty_test.py
+${PYSITELIB}/grako/test/grammar/pretty_test.pyc
+${PYSITELIB}/grako/test/grammar/pretty_test.pyo
+${PYSITELIB}/grako/test/grammar/pretty_test.so
+${PYSITELIB}/grako/test/grammar/semantics_test.py
+${PYSITELIB}/grako/test/grammar/semantics_test.pyc
+${PYSITELIB}/grako/test/grammar/semantics_test.pyo
+${PYSITELIB}/grako/test/grammar/semantics_test.so
+${PYSITELIB}/grako/test/grammar/stateful_test.py
+${PYSITELIB}/grako/test/grammar/stateful_test.pyc
+${PYSITELIB}/grako/test/grammar/stateful_test.pyo
+${PYSITELIB}/grako/test/grammar/stateful_test.so
+${PYSITELIB}/grako/test/grammar/syntax_test.py
+${PYSITELIB}/grako/test/grammar/syntax_test.pyc
+${PYSITELIB}/grako/test/grammar/syntax_test.pyo
+${PYSITELIB}/grako/test/grammar/syntax_test.so
+${PYSITELIB}/grako/test/model_test.py
+${PYSITELIB}/grako/test/model_test.pyc
+${PYSITELIB}/grako/test/model_test.pyo
+${PYSITELIB}/grako/test/parsing_test.py
+${PYSITELIB}/grako/test/parsing_test.pyc
+${PYSITELIB}/grako/test/parsing_test.pyo
+${PYSITELIB}/grako/test/pickle_test.py
+${PYSITELIB}/grako/test/pickle_test.pyc
+${PYSITELIB}/grako/test/pickle_test.pyo
+${PYSITELIB}/grako/test/zzz_bootstrap/__init__.py
+${PYSITELIB}/grako/test/zzz_bootstrap/__init__.pyc
+${PYSITELIB}/grako/test/zzz_bootstrap/__init__.pyo
+${PYSITELIB}/grako/test/zzz_bootstrap/__init__.so
+${PYSITELIB}/grako/test/zzz_bootstrap/bootstrap_test.py
+${PYSITELIB}/grako/test/zzz_bootstrap/bootstrap_test.pyc
+${PYSITELIB}/grako/test/zzz_bootstrap/bootstrap_test.pyo
+${PYSITELIB}/grako/test/zzz_bootstrap/bootstrap_test.so
+${PYSITELIB}/grako/tool.py
+${PYSITELIB}/grako/tool.pyc
+${PYSITELIB}/grako/tool.pyo
+${PYSITELIB}/grako/tool.so
+${PYSITELIB}/grako/util.py
+${PYSITELIB}/grako/util.pyc
+${PYSITELIB}/grako/util.pyo
+${PYSITELIB}/grako/util.so
+${PYSITELIB}/grako/walkers.py
+${PYSITELIB}/grako/walkers.pyc
+${PYSITELIB}/grako/walkers.pyo
+${PYSITELIB}/grako/walkers.so
+${PYSITELIB}/grako/yaml.py
+${PYSITELIB}/grako/yaml.pyc
+${PYSITELIB}/grako/yaml.pyo
+${PYSITELIB}/grako/yaml.so
diff -r b0315e7cfe02 -r 4f726e965df7 devel/py-grako/distinfo
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/py-grako/distinfo   Thu Jun 01 12:04:38 2017 +0000
@@ -0,0 +1,6 @@
+$NetBSD: distinfo,v 1.1 2017/06/01 12:04:38 adam Exp $
+
+SHA1 (grako-3.99.9.zip) = b8751e9e40b8f51aae7316b80d2bed65e56ddbd4
+RMD160 (grako-3.99.9.zip) = 151edb61fd019d98734cf959b1ea28178fce3ba8
+SHA512 (grako-3.99.9.zip) = 1251a669cafc37021405f63005eab974fc1d9acab04f14ef16132411c1c36e540a3a092ae58a6ca5c3f46d3e040d2402cb287cc1fc56aa422eb5200555f29a74
+Size (grako-3.99.9.zip) = 159278 bytes



Home | Main Index | Thread Index | Old Index