Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоргалка / 100 на 100.doc
Скачиваний:
41
Добавлен:
26.01.2019
Размер:
3.77 Mб
Скачать

10.Этапы компиляции. Общая схема работы компилятора

Процесс компиляции состоит из двух этапов - анализа и синтеза.

На этапе анализа выполняется распознавание текста исходной программы, создание и заполнение таблиц идентификаторов. Результатом его работы служит некое внутреннее представ­ление программы, понятное компилятору.

На этапе синтеза на основании внутреннего представления программы и информации, содержащейся в таблицах идентифи­каторов, порождается текст результирующей программы. Ре­зультатом этого этапа является код.

Кроме того, в составе компилятора присутствует часть, от­ветственная за анализ и исправление ошибок, которая при нали­чии ошибки в тексте исходной программы должна максимально полно информировать пользователя о типе ошибке и месте ее возникновения.

Эти этапы, в свою очередь, состоят из более мелких этапов, названных фазами компиляции. Состав фаз компиляции приве­ден на рисунке в общем виде.

Их конкретная реализация и про­цесс взаимодействия могут различаться в зависимости от версии компилятора.

Лексический анализ- это часть компилятора, которая читает ли­теры программы на исходном языке и строит из них слова (лексемы) исходного языка. На вход лексического анализатора по­ступает текст исходной программы, а выходная информация передается для дальнейшей обработки компилятором на этапе синтаксического разбора.

Синтаксический разбор- это основная часть компилятора на этапе анализа. Она выполняет выделение синтаксической конст­рукции в тексте исходной программы, и проверяет правильность программы.

Семантический анализ- часть компилятора, проверяющая пра­вильность текста программы с точки зрения семантики входного языка.

Подготовка к генерации кода- это фаза, на которой компилято­ром выполняются предварительные действия, связанные с син­тезом текста результирующей программы, но еще не ведущей к порождению текста на выходном языке. Обычно в эту фазу вхо­дят действия, связанные с идентификацией элементов языка, распределением памяти и т.д.

Генерация кода - эта фаза, непосредственно связанная с порож­дением команд, составляющих предложение выходного языка и в целом текст результирующей программы. Генерация обычно

включает в себя также оптимизацию- процесс, связанный с об­работкой уже порожденного текста.

Соседние файлы в папке шпоргалка