如何用c/c++實現一個簡單的編譯器?


如果你什麼都不懂,按下面這個順序來個感性的認識,再看輪子哥的答案會比較好

(+ 1 2 3 4)

(+ (+ 1 2) 3 4)

(if (&> 1 2)

1

2)

。。。

再添加新語義、新類型比如字元串布爾值什麼的

可惜我不能教你,就送你到這裡吧


來看我vczh/tinymoe · GitHub ,或者JIT - λ-calculus(驚愕到手了歐耶,GetBlogPostIds.aspx) ,或者腳本技術 - λ-calculus(驚愕到手了歐耶,GetBlogPostIds.aspx)


其實龍書的附錄里有一個java實現的簡單編譯器前端。


你可以自己百度或者谷歌一下lex和yacc,一個是詞法分析器,一個是語法分析器。此外你可能還需要了解一下機器碼的知識。


ktg — Bitbucket 這裡有各個語言版本的lisp簡單實現

ktg / Paren 這是cpp的實現版本

題主可以參考一下上面的實現思路


推薦閱讀:

無法定位程序輸入點ucrtbase.terminate?
64 位系統和 32 位系統相比,有哪些優缺點?
windows操作系統自帶的軟體為什麼總是做不好?
win8 何時對2k以上屏進行優化?
《The Big Bang Theory 》里的 Sheldon 為什麼沒有使用 Mac?

TAG:操作系統 | 計算機 | CC |