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

看板Programming作者 (Wei Hu)時間18年前 (2007/04/28 16:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串33/38 (看更多)
: > spirit 是 boost 之中特別容易讓 compiler 掛點的東西之一, : 這年頭會因為這樣就掛掉的 compiler 不多了, : 除非你還在用 VC6 跟 gcc 2.95.x。 縱使是 visual c++ 2005 在使用 boost 時也會遇到 internal fatal error, 這我在使用 boost::multiIndex set 時遇到過. : > xxx = a|b; : > yyy = xxx|c; : > 因 C++ 語法限制所以還不能像 yacc 用 LR, spirit 是 LL only : > 從來沒有比 yacc 先進的說法 : 不對, : 這是因為 spirit 故意選擇了 recursive descent parsing, : 為什麼? : 因為合乎人類的直覺, : 所以也因此更容易 debug (容易 debug 的理由又多了一個)。 : GCC 4.x 也選擇了「純手工」打造的 LL(1) parser, No, 你記錯了, GCC 4.x 的不管是 C parser 還是 C++ parser 都不是 LL(1), 至少是 LL(2), 去 trace 一下 c-parser.c 即可證明. : 答案很簡單, : 因為 C++ 和 Java 一直還有在改進, : 但是 yacc 停住了, : spirit 不但使用了新技術且確實達到了使用該技術的目的 (好寫好 debug), : 而且它仍然在不斷改進當中 (要注意是技術面的改進,可以比較看看它的歷史紀錄)。 boost::spirit 有使用新技術嗎? 應該都是舊技術吧, 只是封裝在 C++ 絢麗的用法裡面. -- http://www.csie.ntu.edu.tw/~r88052/main/tw/frame.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.227.11
文章代碼(AID): #16CmF0b- (Programming)
討論串 (同標題文章)
文章代碼(AID): #16CmF0b- (Programming)