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编辑)
本文列举了多种Python解析器及语法分析工具,并对其特性进行了简要说明。包括shlex、Plex、Spark等在内的多种工具被收录于此,涵盖了从LL(1)到GLR等多种解析策略。
332

被折叠的 条评论
为什么被折叠?



