Re: [問題] 如何學寫COMPILER? [純拋磚引玉]

看板Programming作者 (Wei Hu)時間18年前 (2007/04/18 19:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串13/38 (看更多)
: parser 只是負責把 C++ code 轉成內部 structure, : 會出問題通常是內部表示 data structure 沒規劃好 : 因為 template/class 產生的資料量超大, worst case 沒估好爆掉 : 不然就是寫的人誤解 C++ 語法 : C++ 對人應該是比對機器複雜, 人可記不得那麼多解讀優先順序 : 可以用 BNF 都算好 parse 只能說你把 parser 看簡單了, grammar 的分析極其複雜 : 因為 MACRO 不能搞一大片 code, 寫的時候就會避免了 : 在 C++ 也還是可以用 define, 爛人還不是照用 有時候用少許 macro 可以達到非常漂亮的 code 未嘗不可 : 再加上繼承, overloading 這些可能跨過無數 header, source : 追進去早忘了上層是啥 datatype 這個用個好的 IDE 應該可以解決吧 : 所以用 template 寫東西, 不能 crossplatform, 連 compiler version 都有差 : 產生的語法錯誤訊息還超難懂, 熟也只能熟一個 compiler : C++ 做過頭, 規定太多, 才會有 java, c# 跑出來 java, c# 的出現跟 C++ 沒有絕對關係吧 : 真正優良的程式靠的是規劃, 用那一種 library, tool, language 都沒用 : 第一個 pascal compiler 用 pascal 寫, : 第一個 java compiler 用 java 寫, : compiler 跟語言本身一起完成, 靠的就是切割得好 要是沒有 java compiler, 要怎麼編譯用 java 寫的 compiler? 你是說用先寫好的 java interpreter 來 interpret 用 java 寫的 compiler 嗎? 如果是這樣的話, 那跟程式的規劃沒關係 java interpreter 寫的爛透了都沒關係, 只要能正確 interpret 都行. 同理, 我也可以寫一個 C 或 C++ 的 interpreter, 來 interpret 我寫的 c program 你說的優良程式是靠規劃, 我承認這是對的, 只不過如果他們能這樣做, 並不是因為切割的好. -- http://www.csie.ntu.edu.tw/~r88052/main/tw/frame.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.228.149.146
文章代碼(AID): #169VfQaF (Programming)
討論串 (同標題文章)
文章代碼(AID): #169VfQaF (Programming)