個人資料
  • 博客訪問:
正文

C++編譯技術探秘

(2010-12-01 10:18:01) 下一個
若幹年前,C++的發明者Bjarne Stroustrup曾寫道,他在開發C++編譯器時最大的錯誤是沒有使用TOP DOWN技術,而是用了YACC。當時,我對此很不解,因為根據我的經驗,LL(k)的語法比LALR語法構造要困難。在YACC之後,出現了PCCTS(後稱ANTLR)等LL(*)工具,理論上很強大,用起來就發現有各種問題需要人為地處理。

前幾天與朋友聚會,其中兩人都是COMPILER高手,在大公司專攻COMPILER,手下有若幹兵將,閑聊之中談到C++和編譯技術。眾所周知,C++標準化後已經變得非常複雜,標準好像上千頁。一位朋友提到,業界真懂C++的已經不多了。又提到,新版g++的PARSER沒有用工具,全部是手寫的。我聽罷,相當吃驚,因為當年我們經常參考的就是CFRONT的YACC語法。現代C++,居然手寫PARSER,這無疑是奇跡。

回來查了一下,果然如此。整個gcc(g++)的PARSER是2萬2千行手寫的代碼,而且就在同一個文件裏 (見鏈接:http://gcc.gnu.org/viewcvs/branches/gcc-4_4-plugins/gcc/cp/parser.c?revision=157341&view=markup)作者是一個人:Mark Mitchell

隻能說這是個牛人。居然手寫2萬2千行C代碼parse如此複雜的C++。也許當年Stroustrup說的就是要這樣?
[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.