Frente


Cfront fue el compilador original de C++ (entonces conocido como " C con clases") de alrededor de 1983, que convirtió C++ a C; desarrollado por Bjarne Stroustrup en AT&T Bell Labs. El preprocesador no entendió todo el lenguaje y gran parte del código fue escrito a través de traducciones . Cfront tenía un analizador completo , creaba tablas de símbolos y creaba un árbol para cada clase , función , etc. Cfront se basaba en CPre, un compilador de C iniciado en 1979.

Como Cfront se escribió en C++, fue un desafío arrancar en una máquina sin un compilador/traductor de C++. Junto con las fuentes de Cfront C ++, también se proporcionó una versión especial "medio preprocesada" del código C resultante de compilar Cfront consigo mismo. Este código C debía compilarse con el compilador nativo de C, y el ejecutable resultante podría usarse para compilar las fuentes de Cfront C++.

La mayor parte del esfuerzo de portabilidad para hacer que Cfront se ejecutara en una nueva máquina estaba relacionado con la E/S estándar. Los flujos C++ de Cfront estaban estrechamente relacionados con los flujos de E/S almacenados en búfer de la biblioteca C, pero había poca interacción con el resto del entorno C. El compilador se podía portar a la mayoría de los derivados de System V sin muchos cambios, pero los sistemas basados ​​en BSD generalmente tenían muchas más variaciones en sus bibliotecas C y estructuras de stdio asociadas.

Cfront definió el lenguaje hasta alrededor de 1990, y muchos de los casos de esquina más oscuros en C++ estaban relacionados con su enfoque de traducción de C++ a C. Todavía se encuentran algunos restos del método de traducción de Cfront en los compiladores de C++ actuales; La manipulación de nombres fue originada por Cfront, ya que los enlazadores relativamente primitivos en ese momento no admitían información de tipo en símbolos, y algunos modelos de creación de instancias de plantillas se derivan de los primeros esfuerzos de Cfront. C++ (y Cfront) fue directamente responsable de muchas mejoras en los enlazadores de Unix y los formatos de archivo de objetos , ya que fue el primer lenguaje ampliamente utilizado que requería verificación de tipo de tiempo de enlace, símbolos débiles y otras características similares.

Cfront 4.0 se abandonó en 1993 después de un intento fallido de agregar compatibilidad con excepciones . [1] El lenguaje C++ había crecido más allá de sus capacidades; sin embargo, un compilador con un enfoque similar estuvo disponible más tarde, a saber, Comeau C/C++ .