Size: 1080
Comment:
|
Size: 3818
Comment: converted to 1.6 markup
|
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://docs.python.org/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 || ||[[http://seehuhn.de/pages/wisent|Wisent]]|| LR(1) || Python || 2.4+ || || |
Line 17: | Line 31: |
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 34: |
* ["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 |
|
C |
|
included in distribution |
|
|
C |
|
lexical analysis module for Python, foundation for Pyrex |
|
GLR |
Python |
|
|
|
LL(1) |
Python |
1-any, 2-1.5+ |
|
|
LR(1) LALR(1) |
C |
|
|
|
|
|
|
|
|
|
C |
|
bison grammar with python code actions |
|
LR |
|
1.5.1+ |
|
|
SLR LALR(1) |
Python |
|
Python Lex-Yacc |
|
|
|
2.2+ |
|
|
GLR |
C |
2.2+ |
grammar in doc strings |
|
GLR |
Python |
2.2.1 |
|
|
- |
|
2.0+ |
requires mxTextTools |
|
|
Python |
2.0+ |
requires mxTextTools |
|
- |
C |
|
is not exactly a parser like we're used to, but it is a fast text-processing engine |
|
|
Python |
2.2+ |
|
|
LL1+ |
Python |
|
stand-alone tool in Java. Latest version can produce Python code |
|
LALR |
Python |
2.2+ |
||
|
Python |
|
Object-oriented, Pythonic parsing |
|
LR(1) |
Python |
2.5+ |
||
LL(1) |
Python |
|
uses separate grammar files |
|
|
Python |
|
inspired by pyparsing and boost::spirit |
|
LR(1) |
Python |
2.4+ |
|
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/)
cocktail compiler tools approach
Example of such usage is SeeGramWrap available from Edward C. Jones Python page, which is a heavily revised and upgraded version of the ANTLR C parser that is in 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 "Towards a Standard Parser Generator" that surveyed the available parser generators for Python.
Ned Batchelder maintains additional information on these and other parsers at Python Parsing Tools.
Books
Complete online textbook, titled "Parsing: A Practical Guide".