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++ в Си. Некоторые из них всё ещё остаются в современных компиляторах; искажение имён пришло из Cfront, примитивные линковщики того времени не поддерживали информацию о типах в символах, а некоторые модели создания экземпляров шаблонов являются производными от ранних усилий Cfront.

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

Примечания

Заметки
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.