2011-10-18 118 views
9

我想閱讀和學習腳本語言解釋器/編譯器的源代碼。什麼腳本語言解釋器/編譯器具有最簡單,最乾淨,最容易閱讀的源代碼?我寧願它用C/C++編寫(還有什麼編譯器編寫的呢?),因爲我打算編寫C編譯器。腳本語言解釋器源代碼

+0

試試你最喜歡的那個。 – hari

+0

似乎有不少人誤解了這個問題。請再讀一遍:p – slartibartfast

回答

11

看一看lua,你可以通過第一版的編程語言,看看它是如何演變的。它用C語言編寫,並有一個乾淨而漂亮的代碼。幾乎每種編程語言都可以編寫編譯器,但C是大多數程序員選擇的編譯器。

+1

您可以從http://www.lua.org/ftp/lua-all.tar.gz獲取所有版本的源代碼。他們都編譯好。 – lhf

+0

可以通過http://www.lua.org/source/上的鏈接瀏覽Lua的某些最新版本的源代碼。另見http://lua-users.org/wiki/LuaSource。 – lhf

6

中斷器CPython已經存在很長時間了,我會想象一下這對你會非常有用。

+0

問題提問者不清楚他/她想要什麼。現在他/她已澄清,我編輯了我的答案。 –

0

一個着名的語言,但並不簡單(PHP源代碼)。 您可以利用源代碼。

PHP Source Code

+1

鑑於'簡單'是OP的_primary_標準,如果PHP源不簡單,那麼這是一個怎樣的答案? – ildjarn

+0

@ildjarn:PHP源代碼不簡單,但你可以從源代碼中獲益 –

2

採取的V8 JavaScript的看看。每個interpeter都有一個稱爲tokenizer的組件。 GNU有一個名字叫野牛的人。請看看它。這可能會有所幫助。 Chromium也使用一些標記器來解釋Webkit上的html,但V8是JavaScript解釋器。

克勞迪奧M.索薩少年

4

AngelScript是瞭解編譯器一個非常好的選擇。這是一種使用C/C++熟悉語法的語言,垃圾收集,它是面向對象的繼承和多態,跨平臺並編譯爲字節碼。

我的第二選擇是Lua

4

我會推薦,作爲一個溫柔的介紹,看看LLVM Tutorial

克里斯·拉特納創建一個簡單的玩具語言萬花筒顯示編譯的各個階段:

然後,他演示瞭如何add JIT capabilities(對翻譯至關重要)。

玩具語言非常簡單,因此結果代碼也很簡單,並且很好地展示了架構,而不會讓實現細節淹沒你。

我不確定本教程是否完全更新,可以按照最新版本的LLVM使用,但我建議至少閱讀它。 (當然,閱讀Dragon Book)。