Small discussion and evaluation of different parsers.
Please keep wiki links as wiki links, use external links only if there is no existing page for the tool.
Name |
Grammar |
Module |
Python |
Comment |
[http://www.python.org/doc/current/lib/module-shlex.html shlex] |
|
C |
|
included in distribution |
|
C |
|
lexical analysis module for Python, foundation for ["Pyrex"] |
|
GLR |
Python |
|
|
|
["Yapps"] |
LL(1) |
Python |
1-any, 2-1.5+ |
|
LR(1) LALR(1) |
C |
|
|
|
[http://gadfly.sourceforge.net/kwParsing.html kwParsing] |
|
|
|
|
|
C |
|
bison grammar with python code actions |
|
[http://www.first.gmd.de/smile/trap/ Trap - (broken link)] |
LR |
|
1.5.1+ |
|
SLR LALR(1) |
Python |
|
Python Lex-Yacc |
|
[http://christophe.delord.free.fr/en/tpg/ ToyParserGenerator] |
|
|
2.2+ |
|
GLR |
C |
2.2+ |
grammar in doc strings |
|
GLR |
Python |
2.2.1 |
|
|
- |
|
2.0+ |
requires mxTextTools |
|
[http://biopython.org/docs/api/Martel/README.html Martel - (broken link)] |
|
Python |
2.0+ |
requires mxTextTools |
[http://www.lemburg.com/files/python/mxTextTools.html mxTextTools] |
- |
C |
|
is not exactly a parser like we're used to, but it is a fast text-processing engine |
[http://pyparsing.sourceforge.net/ pyparsing] |
|
Python |
2.2+ |
|
[http://www.antlr.org/ ANTLR] |
LL1+ |
Python |
|
stand-alone tool in Java. Latest version can produce Python code |
[http://www.ncc.up.pt/fado/Yappy Yappy] |
LALR |
Python |
2.2+ |
|
|
Python |
|
Object-oriented, Pythonic parsing |
Also see the Python ParserSig @ http://www.python.org/sigs/parser-sig/ to discuss and select a standard parser generator for Python.
For faster performance, one may use other parser generator systems and plug them in as modules.
For example:
["Spirit"] (http://spirit.sourceforge.net/) framework for writing EBNF as C++ code
FlexBisonModule (http://www.cs.utexas.edu/users/mcguire/software/fbmodule/)
[http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=61g0ff%2439g%241%40vishnu.jussieu.fr cocktail compiler tools] approach
Example of such usage is SeeGramWrap available from Edward C. Jones [http://members.tripod.com/~edcjones/pycode.html Python page], which is a heavily revised and upgraded version of the ANTLR C parser that is in [http://members.tripod.com/~edcjones/cgram.tar.gz cgram]. The lastest verson has been refactored to move some of the complexity from ANTLR to Python.
Martin von Loewis presented a paper at Python10, titled [http://www.python.org/sigs/parser-sig/towards-standard.html "Towards a Standard Parser Generator"] that surveyed the available parser generators for Python.
Books
Complete online textbook, titled [http://www.cs.vu.nl/~dick/PTAPG.html "Parsing: A Practical Guide"]. ==This problem is described there so so ...== Now 20050925-132331_123.