Спереди


Cfront был оригинальным компилятором для C++ (тогда известного как « C with Classes») примерно с 1983 года, который преобразовывал C++ в C; разработан Бьерном Страуструпом в AT&T Bell Labs. Препроцессор не понимал весь язык , и большая часть кода была написана с помощью переводов . Cfront имел полный синтаксический анализатор , строил таблицы символов и строил дерево для каждого класса , функции и т. д. Cfront был основан на CPre, компиляторе C, запущенном в 1979 году.

Поскольку Cfront был написан на C++, было сложно выполнить загрузку на машине без компилятора/транслятора C++. Наряду с исходными кодами C++ Cfront также была предоставлена ​​специальная «полупрепроцессированная» версия кода C, полученная в результате компиляции Cfront с самим собой. Этот код C должен был быть скомпилирован с помощью собственного компилятора C, а полученный исполняемый файл затем можно было использовать для компиляции исходных кодов Cfront C++.

Большая часть усилий по портированию для запуска Cfront на новой машине была связана со стандартным вводом-выводом. Потоки C++ Cfront были тесно связаны с буферизованными потоками ввода-вывода библиотеки C, но мало взаимодействовали с остальной частью среды C. Компилятор можно было портировать на большинство производных System V без особых изменений, но системы на основе BSD обычно имели гораздо больше вариаций в своих библиотеках C и связанных структурах stdio.

Cfront определял язык примерно до 1990 года, и многие из наиболее неясных угловых случаев в C++ были связаны с его подходом к переводу с C++ на C. Некоторые остатки метода трансляции Cfront все еще можно найти в современных компиляторах C++; изменение имен было создано Cfront, поскольку относительно примитивные компоновщики в то время не поддерживали информацию о типе в символах, а некоторые модели создания экземпляров шаблонов были получены в результате ранних усилий Cfront. C++ (и Cfront) был непосредственно ответственен за многие улучшения в компоновщиках Unix и форматах объектных файлов , поскольку это был первый широко используемый язык, который требовал проверки типов во время компоновки, слабых символов и других подобных функций.

Cfront 4.0 был заброшен в 1993 году после неудачной попытки добавить поддержку исключений . [1] Язык C++ вырос за пределы своих возможностей; однако позже стал доступен компилятор с аналогичным подходом, а именно Comeau C/C++ .