Differences between revisions 1 and 55 (spanning 54 versions)
Revision 1 as of 2002-08-23 18:48:13
Size: 1080
Editor: adsl-67-113-129-186
Comment:
Revision 55 as of 2008-02-19 14:03:53
Size: 3700
Editor: itaapy-35-169
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

[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

For faster performance, one may use other parser generator systems and plug them in as modules.

For example:

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

LanguageParsing (last edited 2022-01-27 20:15:14 by joente)

Unable to edit the page? See the FrontPage for instructions.