2013-04-05 103 views
3

我正在尋找用C++編寫的簡單解釋器代碼。理想情況下,它不會比具有變量賦值的表達式賦值器更復雜(用於內存管理代碼)。C++中的現代解釋器代碼?

我的推理是我正在通過Modern Compiler Design進行工作,目標是能夠爲諸如V8 javascript引擎之類的解釋型語言引擎做出貢獻。然而,目前爲止,本書的所有代碼都是用C語言編寫的,我希望看到在這種情況下爲C++實現的設計實踐,特別是內存管理模型,以及一般的詞法分析器/解析器/等的結構。

我知道沒有太多的代碼是基本的,而C++並不是傳統上受歡迎的語言來編寫解釋器(特別是在開源世界),但我希望有人工作過在此之前,至少可以將我指向他們的個人Git存儲庫。

我一直在尋找這種類型的代碼大約一週,但唯一的代碼我可以找到太複雜,在這個階段我不會被grokked。

+0

https://code.google.com/p/tiny-js/ – 2013-04-05 23:15:02

+0

請看[AngelCode](http://www.angelcode.com/angelscript/) – 2013-04-05 23:15:55

+0

http://sourceforge.net/項目/ tinyscheme/ – 2013-04-05 23:19:43

回答

2

C++編程語言特點

我在尋找用C++編寫簡單的解釋器代碼。理想情況下,它不會比具有變量賦值的表達式賦值器(用於內存管理代碼)更復雜。

你看過The C++ Programming Langauge嗎?

在第6章它有簡單的recursive descent parser很好的例子。是的,它是具有變量賦值的表達式賦值器。

+0

我沒有,我主要是因爲它發表很久以前,因爲它是很久以前就被駁回,我用C++ Primer Plus第六版。學習語言。不過,我一定要看看那本書,尤其是因爲我看到一個涵蓋C++ 11的更新版本,將於今年5月發佈。 – Neurostracted 2013-04-06 00:31:30

1

LLVM Kaleidoscope教程的許多功能,你需要的基本知識:體面地道C++ - ISH文法和解析,中間表示處理等

或者,如果你正在尋找一個真正的鐵桿C++的經驗,你可能想要看看Boost::Spirit,有大量的例子,從簡單的表達式評估器到複雜的語法。

+0

我會看LLVM鏈接,我一直在閱讀它(作爲用C++實現的主要VM/JIT /編譯器之一),但沒有具體看到。就Spirit而言,我聽說它很棒,如果你能夠實現它的功能,但它也很笨,很難實現任何真實的世界...... – Neurostracted 2013-04-15 11:12:32