Creo que B.S. responde esa pregunta:
El primer compilador de C ++ (Cfront) fue escrito en C ++. Para construir eso, yo
Primero usé C para escribir un preprocesador "C con clases" a C. "C con
Clases "fue un dialecto C que se convirtió en el antecesor inmediato de C ++.
Ese preprocesador tradujo construcciones "C con clases" (como por ejemplo
clases y constructores) en C. Era un preprocesador tradicional
Eso no entendió todo el lenguaje, dejó la mayoría del tipo
Comprobando el compilador de C para hacer, y traducido individual
Construye sin conocimiento completo.
Luego escribí la primera versión
de Cfront en "C con Clases". Cfront era un compilador tradicional que
completó la sintaxis y la comprobación semántica de la fuente de C ++. Para eso,
tenía un analizador completo, construyó tablas de símbolos y construyó un completo
Representación interna de árbol de cada clase, función, etc. También hizo
alguna optimización de nivel de fuente en su representación interna de árbol de
C ++ construye antes de generar C. La versión que generó C hizo
No confíe en C para cualquier tipo de comprobación. Simplemente usaba C como ensamblador.
El código resultante fue inflexiblemente rápido.
Primero creó algo que llamó "C con clases" implementado por un simple preprocesador en C. Era básicamente C ++, pero el preprocesador hizo poco o ningún control. Luego lo usó para escribir Cfront, la versión más poderosa del traductor de C ++ en C, completa con verificación de tipos, tablas de símbolos, etc.