11

現在我正在編寫我的博士建議,爲Java的新規範語言(參見JML或Spec#for C#)構建語言處理器,並需要確定一個實現工具開始發展。語言的研究方面(語法,語義,理論結果)與我選擇的實現是正交的,所以我想使用Python(2.6+)出於我自己的原因。最終產品將爲編譯器或解釋器能夠驗證用Java編寫的程序的某些指定屬性。使用Python構建編譯器或解釋器

在Python中構建編譯器/解釋器的最佳框架/庫是什麼?這個問題是否包含「電池」?

對具有Java 6+參考編譯器的解決方案獎勵積分。

+0

我知道你想用Python,但是如果你正在尋找「包含電池」,你將會用F#來獲得最佳效果......這種語言似乎是爲構建編譯器/解釋器而構建的。 – sholsapp 2010-07-30 17:17:18

+2

@gnucom:不僅F#,而且ML系列的每種語言都非常適合語言實現。實際上,「ML」代表「元語言」。 Haskell也有一些很酷的解析器庫(parsec)。 – delnan 2010-07-30 17:25:43

+0

@delnan:絕對如此。我立場糾正。 :) – sholsapp 2010-07-30 17:32:31

回答

1

也許你想看看this

+0

爲什麼建議使用ANTLRv2 Python運行時是否存在ANTLRv3? – 2010-07-30 17:33:45

+0

特別是,在這個問題中沒有涉及的Python有哪些權衡? http://stackoverflow.com/questions/633224/antlr2-vs-antlr3 – 2010-07-30 17:39:50

+0

好的,對於這項研究來說,這兩者看起來都不夠強大。不過謝謝你指點我ANTLR + Python! – 2010-07-30 20:23:07

0

我建議antlr其Python綁定?

+0

oops,太慢:) – 2010-07-30 17:17:14

7

我個人無法忍受antlr,我使用lex/yacc作爲我的分析器生成器。以下是您可以使用的Python實現http://www.dabeaz.com/ply/

這只是處理解析,但真的甚至沒有開始構建你的解釋器。爲此,您可能會從頭開始構建它 - 我從來沒有聽說過專門爲此設計的圖書館(我會很高興看到其中一些圖書館,如果您知道任何圖書,請在評論中鏈接我) )。

看看這個SO帖子how to start writing a very simple programming language它有很好的ideas.il。

+0

我對錯誤報告的質量很挑剔,所以我更喜歡Anders的ANTLR爲基礎的建議。 – 2010-07-30 20:24:15