Re: [問題] 如何學寫COMPILER? [純拋磚引玉]
: 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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 13 之 38 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章
14
24