Языки программирования и теория компиляции 1: Структура компилятора
Структура компилятора включает две основные фазы: Фаза анализа (начальная стадия). Разбивает программу на последовательность минимально значимых единиц языка, накладывает на них грамматическую структуру языка, обнаруживает синтаксические и семантические ошибки, формирует таблицу символов, генерирует промежуточное представление программы. Фаза синтеза (заключительная стадия). Транслирует программу на основе таблицы символов и промежуточного представления в код целевой архитектуры. Процесс компиляции, как правило, состоит из следующих этапов: Лексический анализ. На этом этапе выполняется подмена лексем их внутренним отображением (например, подмена операторов, разделителей и идентификационных параметров числовыми значениями). Синтаксический анализ. Часто на данном этапе могут вводиться добавочные разделители и заменяться уже имеющиеся, чтобы облегчить обработку. Генерация промежуточных кодов (этап трансляции). Здесь выполняется анализ типа и вида всех идентификационных параметров и иных операндов. Оптимизация кодов. Распределение памяти для переменных в формируемой программе. Генерация объектных кодов и выполнение компоновки сегментов программы. На всех этапах осуществляется взаимодействие с таблицами разного типа.
Структура компилятора включает две основные фазы: Фаза анализа (начальная стадия). Разбивает программу на последовательность минимально значимых единиц языка, накладывает на них грамматическую структуру языка, обнаруживает синтаксические и семантические ошибки, формирует таблицу символов, генерирует промежуточное представление программы. Фаза синтеза (заключительная стадия). Транслирует программу на основе таблицы символов и промежуточного представления в код целевой архитектуры. Процесс компиляции, как правило, состоит из следующих этапов: Лексический анализ. На этом этапе выполняется подмена лексем их внутренним отображением (например, подмена операторов, разделителей и идентификационных параметров числовыми значениями). Синтаксический анализ. Часто на данном этапе могут вводиться добавочные разделители и заменяться уже имеющиеся, чтобы облегчить обработку. Генерация промежуточных кодов (этап трансляции). Здесь выполняется анализ типа и вида всех идентификационных параметров и иных операндов. Оптимизация кодов. Распределение памяти для переменных в формируемой программе. Генерация объектных кодов и выполнение компоновки сегментов программы. На всех этапах осуществляется взаимодействие с таблицами разного типа.
