前幾天與朋友聚會,其中兩人都是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說的就是要這樣?