Re: [問題] 如何學寫COMPILER? [純拋磚引玉]
※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言:
> 而且是針對 flex & bison 的:
> 當初 4.0 之所以把 C++ parser 整個拿純 C 手工重寫,
> 有一大原因就是 flex & bison 生出來的 code 太難 debug 了,
> 而 C++ 的 syntax 又是極其複雜 (對 compiler 而言),
C++ 語法不複雜, 但是容易搞錯, 排列組合過多
parser 對 compiler 來說是很小的一部份, 甚至該當成獨立的模組
> 要加什麼東西都非常困難,
> 導致一堆 parser 上的 bug 一直到 4.x 才被修正,
> 這其中還包含了各種跟 template 相關的有名 bug。
> > 我想應該不能這樣解讀才是 ......
> > 這邊寫個小小的 parser, 光是「有用輔助工具」的時候, 就都快搞到頭腦爆漿了
> > 如果從頭到尾都不善用這些輔助工具的話
> > 完成的時間想必拖得更久, 所謂的「效率」、「強度」又真的會有多少優勢?
> > 小弟作品: http://sbt.idv.tw/tBoard/index.py?f=25&t=732&m=pl
> > 嗯 ... 好吧, 它的確需要 ...
> > Toy Parser Generator. XD http://christophe.delord.free.fr/tpg/
> 你可能搞錯我的意思了,
> 工具會隨著時代演進,
> 事實上我並不鼓勵大家學 GCC 4.x 一樣用純手工重寫 parser,
> 我們有更好的選擇:
> boost spirit library (http://www.boost.org/libs/spirit/index.html)
> 撰寫 parser 的過程變得更加輕鬆愉快,
> 而且真的出了 bug 時找起來也沒有這麼痛苦,
> 我並沒有說用工具不好,
> 而是工具應該隨著時代而變換,
> 現在各種軟體的規模早已今非昔比,
> compiler 也不例外,
C++ 的 templates 是 define 擴充版, 這玩意個人認為比 define 更難 debug
trace 的時候還更是困難, 跳來跳去, 而且不同 compiler 連 STL 版本都不同
不是每個寫 C++ 的人都會去鑽一堆特殊寫法, 可讀性不是只針對 C++ 上癮者
真正優良的程式靠的是規劃, 如 mozilla 用的 apple coding style
mozilla 的程式非常好 debug, 其中的 javascript parser 比 C++ 不知麻煩多少倍
javascript 充滿著例外, 不完整的語句也還是要能跑, 它的 parser 才算經典
--
┌─────◆KKCITY◆─────┐ KK免/費/撥/接 ◤
│ bbs.kkcity.com.tw │▏電話(1):449◤1999 電話(2):4058-6000
└──《From:59.120.53.7 》──┘▏帳號:kkcity 密碼:kkcity
--
討論串 (同標題文章)
完整討論串 (本文為第 9 之 38 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章
14
24