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

看板Programming作者時間18年前 (2007/04/18 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串9/38 (看更多)
※ 引述《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):4491999 電話(2):4058-6000 └──From:59.120.53.7 ──┘帳號:kkcity 密碼:kkcity --
文章代碼(AID): #169Gjb00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #169Gjb00 (Programming)