作者seLain (建筑的永恒之道)
看板Python
标题[讨论] Python-based Parser Generator
时间Fri Sep 14 14:33:42 2007
(* 因为没有 [工具] 或是 [pkg] 的分类, 所以先选择 [讨论] 分类)
前一阵子有需要利用 Parser Generator 产生 Python-based Parser,
用来 parsing Java source, 因此就做了一点 survey.
不过出乎意料的, 找不到几个好用的工具, 大致上 Python Parser SIG [1]
里列出的都尝试过了, 有些虽然可以用, 但是没有人写好 Java grammer,
要自己写实在有点麻烦. 有些则是看起来不错, 也有 Java grammer, 但是却
无法成功使用, 例如 PyBison [2].
附带一提如果有人想尝试 PyBison 的话, 记得装 PyBison 时要先装 :
sudo apt-get install python-dev
sudo apt-get install build-essential
最後我是采用有名的 ANTLR [3], 它的 Python Interface 虽然还在发展中,
但是勉强是可以用了, 小 bug 自己改一下就好.
我使用的流程如下, 提供参考(以 MS 环境为例) :
1. 首先到官方网站下载 ANTLR 3, URL :
http://www.antlr.org/
2. 解压缩到特定资料夹, 例如 C:\antlr-3.0\
3. 设定 CLASSPATH, 让 C:\antlr-3.0\lib\ 底下的所有 .jar 档案都在
CLASSPATH 设定内, 可以参考这里的说明进行 :
http://www.antlr.org/wiki/pages/viewpage.action?pageId=728
4. 到 C:\antlr-3.0\runtime\Python 底下进行 python runtime 安装, 请参考 :
http://www.antlr.org/wiki/display/ANTLR3/Python+runtime
5. 到 ANTLR 网站上下载 Java grammer file :
http://www.antlr.org/grammar/list
尝试产生 Python-based Java parser, 请参考 :
http://www.antlr.org/wiki/display/ANTLR3/Antlr3PythonTarget
6. 上述网页上的 Java 1.5 grammer files 有很多个, 如果是使用 Terence Parr
的 grammer file (我是用这个), 则需要对於产生出来的 JavaLexer.py 以及
JavaParser.py 作一点修改. 此修改为在按照上面网页执行 parsing 的过程中,
会出现语法上的错误, 请把错误的部分, 从 Java 语法改为 Python 语法即可.
如果有需要对产生的 Parser 作修改的话, 可以参考 ANTLR Python API Doc. :
http://www.antlr.org/api/Python/index.html
btw, 顺便问问看是否有板友知道其它在 [1] 列表以外的好用 Python-based
Parser Generator ? thanks.
References
[1] Python Parser SIG, URL :
http://wiki.python.org/moin/LanguageParsing
[2] PyBison, URL :
http://wiki.python.org/moin/PyBison
[3] ANTLR Python, URL :
http://www.antlr.org/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.72.35