精華區beta Python 關於我們 聯絡資訊
(* 因為沒有 [工具] 或是 [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