現在我正在編寫我的博士建議,爲Java的新規範語言(參見JML或Spec#for C#)構建語言處理器,並需要確定一個實現工具開始發展。語言的研究方面(語法,語義,理論結果)與我選擇的實現是正交的,所以我想使用Python(2.6+)出於我自己的原因。最終產品將爲或編譯器或解釋器能夠驗證用Java編寫的程序的某些指定屬性。使用Python構建編譯器或解釋器
在Python中構建編譯器/解釋器的最佳框架/庫是什麼?這個問題是否包含「電池」?
對具有Java 6+參考編譯器的解決方案獎勵積分。
現在我正在編寫我的博士建議,爲Java的新規範語言(參見JML或Spec#for C#)構建語言處理器,並需要確定一個實現工具開始發展。語言的研究方面(語法,語義,理論結果)與我選擇的實現是正交的,所以我想使用Python(2.6+)出於我自己的原因。最終產品將爲或編譯器或解釋器能夠驗證用Java編寫的程序的某些指定屬性。使用Python構建編譯器或解釋器
在Python中構建編譯器/解釋器的最佳框架/庫是什麼?這個問題是否包含「電池」?
對具有Java 6+參考編譯器的解決方案獎勵積分。
也許你想看看this
爲什麼建議使用ANTLRv2 Python運行時是否存在ANTLRv3? – 2010-07-30 17:33:45
特別是,在這個問題中沒有涉及的Python有哪些權衡? http://stackoverflow.com/questions/633224/antlr2-vs-antlr3 – 2010-07-30 17:39:50
好的,對於這項研究來說,這兩者看起來都不夠強大。不過謝謝你指點我ANTLR + Python! – 2010-07-30 20:23:07
我個人無法忍受antlr,我使用lex/yacc作爲我的分析器生成器。以下是您可以使用的Python實現http://www.dabeaz.com/ply/。
這只是處理解析,但真的甚至沒有開始構建你的解釋器。爲此,您可能會從頭開始構建它 - 我從來沒有聽說過專門爲此設計的圖書館(我會很高興看到其中一些圖書館,如果您知道任何圖書,請在評論中鏈接我) )。
看看這個SO帖子how to start writing a very simple programming language它有很好的ideas.il。
我對錯誤報告的質量很挑剔,所以我更喜歡Anders的ANTLR爲基礎的建議。 – 2010-07-30 20:24:15
我知道你想用Python,但是如果你正在尋找「包含電池」,你將會用F#來獲得最佳效果......這種語言似乎是爲構建編譯器/解釋器而構建的。 – sholsapp 2010-07-30 17:17:18
@gnucom:不僅F#,而且ML系列的每種語言都非常適合語言實現。實際上,「ML」代表「元語言」。 Haskell也有一些很酷的解析器庫(parsec)。 – delnan 2010-07-30 17:25:43
@delnan:絕對如此。我立場糾正。 :) – sholsapp 2010-07-30 17:32:31