這學期上了 compiler 的課程,但學校教的東西都比較偏理論,所以最近想要看看真正的 compiler 是怎麼寫出來的,於是找了一些專案來讀讀看。
說到 compiler 第一個讓人想到的就是 gcc 了,所以一開始就嘗試 trace gcc,但後來發現因為這個專案包含了許多語言的 compiler,所以一開始光是看整體的架構就有些吃力了,於是放棄繼續讀 gcc。
我的感覺差不多,比 gcc 容易讀的許多,但還是沒有很容易讀(因為筆者能力不足嗚嗚),我會有點難以把學校教的東西對應到程式碼當中。
超級精簡的 compiler,總共只有 4 個 function,但反而精簡到不太清楚哪些程式碼在做些什麼(筆者也太挑XD)有種把 parser, codegen, vm, 都混雜在一起的感覺,不過確實寫的很簡化又很帥。
筆者覺得最適合自己的專案,功能完整卻又不會太複雜,以 cc1() 這個 function 來說明,裡面就可以看到 scanner(tokenizer), parser, codegen 這幾個上課題過的步驟分別呼叫了哪些 function 來完成,比較能夠與學過的理論做連結。
有時候看不懂的專案還是放棄繼續研究、尋找更適合自己的比較好XD,之後打算參考 chibic 的架構來寫出一個功能勉強堪用的 C compiler。