I parser GCC e Clang sono davvero scritti a mano?

I parser GCC e Clang sono davvero scritti a mano?


Sembra che GCC e LLVM-Clang stiano utilizzando parser di discesa ricorsivi scritti a mano e non generato dalla macchina, basato su Bison-Flex, analisi dal basso verso l'alto.


Qualcuno qui potrebbe confermare che questo è il caso?
E in tal caso, perché i framework di compilatori tradizionali utilizzano parser scritti a mano?


Aggiorna :interessante blog su questo argomento qui


Risposte:


Sì:



  • GCC una volta usava un parser yacc (bisonte), ma è stato sostituito con un parser di discesa ricorsivo scritto a mano ad un certo punto nella serie 3.x:vedere http://gcc.gnu.org/wiki/New_C_Parser per collegamenti a invii di patch pertinenti.


  • Clang utilizza anche un parser di discesa ricorsivo scritto a mano:vedere la sezione "Un singolo parser unificato per C, Objective C, C++ e Objective C++" verso la fine di http://clang.llvm.org/features.html .