Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / СПО.doc
Скачиваний:
64
Добавлен:
11.02.2014
Размер:
83.97 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

Соседние файлы в папке лекции