Cfront

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Cfront — ранний компилятор C++, называвшегося тогда «Си с классами», конвертировавший C++ в Си. Разработан Бьёрном Страуструпом в AT&T Bell Labs примерно в 1983 году. Он не понимал всех деталей языка, большая часть реализовывалась при помощи обычного перевода. Cfront включал в себя синтаксический анализатор, построитель таблиц символов и деревьев классов, функций и другого. Cfront был основан на CPre, компиляторе Си 1979 года.

Поскольку он был написан на раннем C++, было проблематично запустить его без соответствующего компилятора. Наряду с кодом Cfront на C++ была версия на полуобработанном Си, сгенерированном самим собой. Этот Си-код можно было скомпилировать, а затем использовать для запуска версии Cfront на C++.

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

Cfront определял язык примерно до 1990 года, многие признаки языка были связаны с трансляцией C++ в Си. Некоторые из них всё ещё остаются в современных компиляторах: искажение имён (name mangling) пришло из Cfront: примитивные линковщики того времени не поддерживали информацию о типах в символах, а некоторые модели создания экземпляров шаблонов являются производными от ранних усилий Cfront.

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

Примечания[править | править код]

Ссылки[править | править код]