Differences between revisions 58 and 59
Revision 58 as of 2008-10-06 09:37:24
Size: 3764
Editor: out-dcc
Comment: corrected url for Yappy
Revision 59 as of 2008-11-15 14:01:19
Size: 3818
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
||[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]|| || || || ||
||[[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]]|| || || || ||
Line 13: Line 13:
||[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+ || ||
||[[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 34: Line 34:
  * ["Spirit"] (http://spirit.sourceforge.net/) framework for writing EBNF as C++ code   * [[Spirit]] (http://spirit.sourceforge.net/) framework for writing EBNF as C++ code
Line 36: Line 36:
  * [http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=61g0ff%2439g%241%40vishnu.jussieu.fr cocktail compiler tools] approach   * [[http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=61g0ff%2439g%241%40vishnu.jussieu.fr|cocktail compiler tools]] approach
Line 39: Line 39:
[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. [[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.
Line 41: Line 41:
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 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
Line 44: Line 44:
Ned Batchelder maintains additional information on these and other parsers at [http://nedbatchelder.com/text/python-parsers.html Python Parsing Tools]. Ned Batchelder maintains additional information on these and other parsers at [[http://nedbatchelder.com/text/python-parsers.html|Python Parsing Tools]].
Line 48: Line 48:
 * Complete online textbook, titled [http://www.cs.vu.nl/~dick/PTAPG.html "Parsing: A Practical Guide"].  * 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

shlex

C

included in distribution

Plex

C

lexical analysis module for Python, foundation for Pyrex

Spark

GLR

Python

Yapps

LL(1)

Python

1-any, 2-1.5+

PyLR - (broken link)

LR(1) LALR(1)

C

kwParsing

PyBison

C

bison grammar with python code actions

Trap

LR

1.5.1+

PLY

SLR LALR(1)

Python

Python Lex-Yacc

ToyParserGenerator

2.2+

DParser

GLR

C

2.2+

grammar in doc strings

PyGgy

GLR

Python

2.2.1

SimpleParse

-

2.0+

requires mxTextTools

Martel

Python

2.0+

requires mxTextTools

mxTextTools

-

C

is not exactly a parser like we're used to, but it is a fast text-processing engine

pyparsing

Python

2.2+

ANTLR

LL1+

Python

stand-alone tool in Java. Latest version can produce Python code

Yappy

LALR

Python

2.2+

ZestyParser

Python

Object-oriented, Pythonic parsing

Parsing

LR(1)

Python

2.5+

aperiot

LL(1)

Python

uses separate grammar files

yeanpypa

Python

inspired by pyparsing and boost::spirit

Wisent

LR(1)

Python

2.4+

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 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

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

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