Re: [問題] 如何學寫COMPILER? [純拋磚引玉]
: > 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
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章
12
21