Size: 1080
Comment:
|
Size: 3700
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
* ["shlex"] (http://www.python.org/doc/current/lib/module-shlex.html) * ["Plex"] (http://www.cosc.canterbury.ac.nz/~greg/python/Plex) * SimpleParse (http://members.rogers.com/mcfletch/programming/simpleparse/simpleparse.html) * ["Spark"] (http://pages.cpsc.ucalgary.ca/~aycock/spark/) * ["Yapps"] (http://theory.stanford.edu/~amitp/Yapps/) * ["PyLR"] (http://starship.python.net/crew/scott/PyLR.html) * ["kwParsing"] (http://www.pythonpros.com/arw/kwParsing/kwParsing.html) * PyBison (http://www-db.stanford.edu/~hassan/Python/pybison.tar.gz) * ["mcf.parse"] (http://starship.python.net/crew/mcfletch/) * ["Trap"] (http://www.first.gmd.de/smile/trap/) |
(!) Please keep wiki links as wiki links, use external links only if there is no existing page for the tool. |
Line 14: | Line 5: |
Also see Python ParserSig @ http://www.python.org/sigs/parser-sig/ to discuss and select a standard parser generator for Python. | || Name || Grammar || Module|| Python || Comment || ||[http://www.python.org/doc/current/lib/module-shlex.html shlex]|| || C || || included in distribution|| ||[http://www.cosc.canterbury.ac.nz/~greg/python/Plex Plex]|| || C|| ||lexical analysis module for Python, foundation for ["Pyrex"]|| ||[http://pages.cpsc.ucalgary.ca/~aycock/spark/ Spark]|| GLR || Python|| || || ||["Yapps"]|| LL(1) || Python|| 1-any, 2-1.5+|| || ||[http://starship.python.net/crew/scott/PyLR.html PyLR - (broken link)]|| LR(1) LALR(1) || C || || || ||[http://gadfly.sourceforge.net/kwParsing.html kwParsing]|| || || || || ||PyBison || || C || ||bison grammar with python code actions || ||[http://www.ercim.org/publication/Ercim_News/enw36/ernst.html Trap] || LR || ||1.5.1+|| || ||[http://www.dabeaz.com/ply/ PLY]|| SLR LALR(1) ||Python || ||Python Lex-Yacc || ||[http://christophe.delord.free.fr/tpg/index.html ToyParserGenerator]|| || || 2.2+ || || ||[http://dparser.sourceforge.net/ DParser]|| GLR || C || 2.2+ || grammar in doc strings|| ||[http://www.lava.net/~newsham/pyggy/ PyGgy]|| GLR || Python || 2.2.1 || || ||[http://simpleparse.sourceforge.net/ SimpleParse]||-|| ||2.0+||requires mxTextTools|| ||[http://www.biopython.org/DIST/docs/api/public/Martel-module.html Martel]|| || 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.wikispaces.com/ 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+|||| ||[http://pypi.python.org/pypi/ZestyParser ZestyParser]|| || Python || || Object-oriented, Pythonic parsing|| ||[http://www.canonware.com/Parsing/ Parsing]|| LR(1) || Python || 2.5+ |||| ||[http://moncs.cs.mcgill.ca/people/eposse/projects/aperiot/index_html aperiot] || LL(1) || Python || || uses separate grammar files || ||[http://www.slash-me.net/dev/snippets/yeanpypa/documentation.html yeanpypa]|| || Python || || inspired by pyparsing and boost::spirit || |
Line 17: | Line 30: |
For some speed up one may use other parser generator systems and plug them in as modules. | For faster performance, one may use other parser generator systems and plug them in as modules. |
Line 20: | Line 33: |
* ["ANTLR"] (http://www.antlr.org/) C++ output (an older version with C output also available) | * ["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] (broken link). 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. Ned Batchelder maintains additional information on these and other parsers at [http://nedbatchelder.com/text/python-parsers.html Python Parsing Tools]. == Books == * Complete online textbook, titled [http://www.cs.vu.nl/~dick/PTAPG.html "Parsing: A Practical Guide"]. |
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+ |
|
[http://starship.python.net/crew/scott/PyLR.html PyLR - (broken link)] |
LR(1) LALR(1) |
C |
|
|
[http://gadfly.sourceforge.net/kwParsing.html kwParsing] |
|
|
|
|
|
C |
|
bison grammar with python code actions |
|
[http://www.ercim.org/publication/Ercim_News/enw36/ernst.html Trap] |
LR |
|
1.5.1+ |
|
SLR LALR(1) |
Python |
|
Python Lex-Yacc |
|
[http://christophe.delord.free.fr/tpg/index.html ToyParserGenerator] |
|
|
2.2+ |
|
[http://dparser.sourceforge.net/ DParser] |
GLR |
C |
2.2+ |
grammar in doc strings |
GLR |
Python |
2.2.1 |
|
|
- |
|
2.0+ |
requires mxTextTools |
|
[http://www.biopython.org/DIST/docs/api/public/Martel-module.html Martel] |
|
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.wikispaces.com/ 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 |
|
[http://www.canonware.com/Parsing/ Parsing] |
LR(1) |
Python |
2.5+ |
|
[http://moncs.cs.mcgill.ca/people/eposse/projects/aperiot/index_html aperiot] |
LL(1) |
Python |
|
uses separate grammar files |
[http://www.slash-me.net/dev/snippets/yeanpypa/documentation.html yeanpypa] |
|
Python |
|
inspired by pyparsing and boost::spirit |
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] (broken link). 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.
Ned Batchelder maintains additional information on these and other parsers at [http://nedbatchelder.com/text/python-parsers.html Python Parsing Tools].
Books
Complete online textbook, titled [http://www.cs.vu.nl/~dick/PTAPG.html "Parsing: A Practical Guide"].