LanguageParsing
4/21/2009 4:04:53 PM
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+ | 
 | |
| na | Python | 2.6+ | Simple parser using rule defined in BNF format | |
| Any | Python | 2.6+ | Recursive descent with full backtracking and optional memoisation (which can handle left recursive grammars). So equivalent to GLR, but based on LL(k) core. | 
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.crsr.net/Software/FBModule.html ) 
- 
            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" . 
EditText (2009-04-07 12:54:26由 252-149-222-201 编辑)


 
					 
					