GCC と Clang パーサーは本当に手書きですか?



GCC と LLVM-Clang は手書きの再帰降下パーサーを使用しているようです 、およびない マシン生成、Bison-Flex ベース、ボトムアップ解析。


ここにいる誰かがこれが事実であることを確認してもらえますか?
もしそうなら、なぜ主流のコンパイラ フレームワークは手書きのパーサーを使用するのですか?


更新 :このトピックに関する興味深いブログはこちら


答え:


はい:



  • GCC は昔々 yacc (bison) パーサーを使用していましたが、3.x シリーズのある時点で手書きの再帰降下パーサーに置き換えられました:http://gcc.gnu.org/wiki/New_C_Parser を参照してください関連するパッチ提出へのリンク。


  • Clang は、手書きの再帰降下パーサーも使用します。http://clang.llvm.org/features.html の末尾近くにあるセクション「C、Objective C、C++、および Objective C++ 用の単一の統合パーサー」を参照してください。