Системное программное обеспечение: Основы трансляции. Карпушин А.Н - 26 стр.

UptoLike

28
Синтаксический разбор это основная часть компилятора на этапе
анализа. Она выполняет выделение синтаксических конструкций в тексте ис-
ходной программы, обработанном лексическим анализатором. На этой же фазе
компиляции проверяется синтаксическая правильность программы. Синтакси-
ческий разбор играет главную рольроль распознавателя текста входного язы-
ка программирования.
Семантический анализ это часть компилятора, проверяющая правиль-
ность текста исходной программы с точки зрения семантики входного языка.
Кроме непосредственно проверки, семантический анализ должен выполнять
преобразования текста, требуемые семантикой входного языка (такие, как до-
бавление функций неявного преобразования типов). В различных реализациях
компиляторов семантический анализ может частично входить в фазу синтакси-
ческого разбора, частичнов фазу подготовки к генерации кода.
Подготовка к генерации кода это фаза, на которой компилятором выпол-
няются предварительные действия, непосредственно связанные с синтезом тек-
ста результирующей программы, но еще не ведущие к порождению текста на
выходном языке. Обычно сюда входят действия, связанные с идентификацией
элементов языка, распределением памяти и т. п.
Генерация кода это фаза, непосредственно связанная с порождением ко-
манд, составляющих предложения выходного языка и в целом текст результи-
рующей программы. Это основная фаза на этапе синтеза результирующей про-
граммы. Кроме непосредственного порождения текста результирующей про-
граммы, генерация обычно включает в себя также оптимизациюпроцесс, свя-
занный с обработкой уже порожденного текста. Иногда оптимизацию выделяют
в отдельную фазу компиляции, так как она оказывает существенное влияние на
качество и эффективность результирующей программы.
Таблицы идентификаторов (иногда «таблицы символов») – это специаль-
ным образом организованные наборы данных, служащие для хранения инфор-
мации об элементах исходной программы, которые затем используются для по-
рождения текста результирующей программы. Элементами исходной програм-
мы, информацию о которых нужно хранить в процессе компиляции, являются
переменные, константы, функции и т. п. – конкретный состав набора элементов
зависит от используемого входного языка программирования. Понятие «табли-
цы» вовсе не предполагает, что это хранилище данных должно быть организо-
вано именно в виде таблиц или других массивов информациивозможные ме-
тоды их организации подробно рассмотрены в методических указаниях к вы-
полнению лабораторной работы 1.
Многопроходные и однопроходные компиляторы
Как уже было сказано, процесс компиляции программ состоит из несколь-
ких фаз. В реальных компиляторах состав этих фаз может несколько отличаться
от рассмотренного вышенекоторые из них могут быть разбиты на состав-
ляющие, другие, напротив, объединены в одну фазу. Порядок выполнения фаз
компиляции также может меняться в разных вариантах компиляторов. В одном
случае компилятор просматривает текст исходной программы, сразу выполняет