2009-08-23 16 views
20

我想用Lisp方言實現一個Lisp解釋器,主要是作爲一種學習練習。我被拋棄的一件事就是這個區域有多少選擇。首先,我對學習一段時間左右的Lisp(比如Scheme或Common Lisp)更感興趣。我不想使用Clojure來完成這一切,因爲我已經使用過它。 :-)什麼Lisp更好地解析?

原來是五味之一在分析比別人的更好嗎?你認爲在Common Lisp中實現Scheme還是個好主意(反之亦然)?或者兩者之間有足夠的差異來拋棄我?

如果這有什麼差別,我想的東西,是跨平臺的。我有一臺Windows PC,一臺Mac和一臺Linux機器,我最終可以在其中任何一臺上寫這個。

回答

20

大約有一些書:

以上所有書都很高儘管Lisp解剖學是古老的,很難得到和難以閱讀。

Scheme和Common Lisp都適合您的任務。

實現Common Lisp是一個更大的任務,因爲語言是較大的。通常在Common Lisp中更好地實現Common Lisp,因爲Common Lisp庫可用於新的Common Lisp實現。 ;-)

+0

我讀過PAIP和SICP​​的章節在口齒不清口齒不清書面解釋,我認爲前者是人新的Common Lisp的好,雖然兩者都極力推薦。 – justinhj 2009-08-24 19:03:47

+3

值得一提的是,PAIP的Scheme解釋器和編譯器都是用Common Lisp編寫的,它回答了問題的另一個方面。 – Pillsy 2009-08-24 19:09:17

+4

有沒有其他人看到這裏的諷刺,還是僅僅是我? =) – 2009-12-08 15:01:49

4

PLT Scheme是與編程語言,尤其是Lispy語言實驗的優秀平臺。 PLT有一個可擴展的解析器(通常稱爲Scheme中的讀取器),它提供讀取器宏來操作內置語法;或者你可以用自己的完全替換閱讀器。如果您更願意使用傳統的lex/yacc風格的解析器和詞法分析器,那麼PLT附帶了一個解析器工具模塊,它也提供了這些模塊。作爲獎勵,它具有全面的文檔和第三方軟件包的存儲庫(兩種方案從許多方案中缺失)。

Arc(arclanguage.org)的參考實現是一個相當簡單且可讀的 構建編譯爲Scheme的語言的示例。它主要使用PLT的閱讀器,並使用幾個閱讀器宏來更改與Arc的不同之處的Scheme語法的位。如果您想了解如何實現非Lisp語言,還可以從PLT的軟件包倉庫(planet.plt-scheme.org)獲得JavaScript實現。