LanguageParsing

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

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

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+

 

RP

na

Python

2.6+

Simple parser using rule defined in BNF format

LEPL

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:

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

EditText (2009-04-07 12:54:26由252-149-222-201编辑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值