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