如何開發編譯器?

時間 2021-06-01 15:01:49

1樓:

gitlab.gnome.org/GNOME/

vala/issues?milestone_title=1.0

發展中的編譯器,正好可以做學習和研究。

2樓:Anges

說一下做過的編譯器前端部分

動態生成語法樹,詞法解析,主要利用狀態機,更高階點nfa轉行dfa,其實解析起來也沒有大家說的那麼難,會基本的資料結構,了解狀態機的理論就可以寫出初版,最有意思的是寫完可以算是學習程式設計的乙個里程碑

但是,最麻煩的地方在於很多很多的細節要處理,迭代新增功能,要做成商業版的就需要大量精力了,orz,比如llvm這種,做下去應該會得到很多乾貨,太懶真堅持不下去,等以後有精力再來大戰三百回合

總的來說,做乙個玩具很簡單,難得是前期理論學習和花時間維護,github就有很多玩具,實現了自己簡單的指令碼語言

推薦三本書編譯器前端部分的,由淺入深:

遊戲指令碼高階程式設計(讓你知道這貨到底在什麼地方有用,有學習下去動力,不然做了幹什麼,還不如看動漫)

parsing techniques——a practical guide(需要點英語基礎)

編譯原理(龍書),這個最開始看起來畢竟蛋疼,不推薦一開始拿這個入門

編譯器是如何編譯自己的?

何源 比如你是馬雲,沒身份證 編譯器 之前怎麼證明自己是馬雲。那你得弄來一張名為馬雲的身份證 編譯器 問題來了,這張身份證怎麼來呢?你去找你爸要了戶口本 其他語言的編譯器 去派出所填寫了自己的資料 自己編譯器原始碼 辦理身份證,因為戶口本上你的名字是馬雲,派出所給了一張名為馬雲的身份證。從此,你不用...

前端轉c 編譯器開發靠譜不?

在編譯器領域現在做個casual developer挺好的,不需要刻意轉。llvm的bugzilla上有挺多問題適合業餘做的。菜鳥給不了實質性建議。倒是聽到過很多行業轉網際網路開發的,你這轉而研究底層了。市場肯定不需要那麼多造火箭航母原子彈的,但能搞的肯定都是國之大器。不一定非要cpp編譯器吧,還有...

編譯器是如何工作的?

就事論事的話,推薦你讀Neil Jones 等著的Automatic Partial Evaluation and Program Generation,這本書的開頭應該解決了你想的問題.至於你想知道編譯器中間過程的原理,可是本來編譯器就是把乙個語言變成另乙個語言的程式.建議你先讀讀EoPL3的1 ...