ВУЗ:
Составители:
50
алгоритм разбора порождает правосторонний вывод, поэтому на каждом шаге
на основе правила в цепочке следует заменять крайний правый нетерминаль-
ный символ (нижний правый в дереве).
На 4-м шаге терминальные символы грамматики заменяются на соответст-
вующие константы и идентификаторы из таблицы лексем. Для этого достаточ-
но просматривать таблицу от начала к концу и, обходя построенное дерево от
корня сверху вниз слева направо, последовательно заменить все листья, поме-
ченные искомым символом, на лексемы из таблицы. Построенное дерево и бу-
дет деревом синтаксического разбора предложения грамматики.
Семантический анализ
КС-грамматики, с помощью которых описывают синтаксис языков про-
граммирования, не позволяют задавать контекстные условия, имеющиеся в лю-
бом языке.
Примеры наиболее часто встречающихся контекстных условий:
1. каждый используемый в программе идентификатор должен быть описан,
но не более одного раза в одной зоне описания;
2. при вызове функции число фактических параметров и их типы должны со-
ответствовать числу и типам формальных параметров;
3. обычно в языке накладываются ограничения на типы операндов любой
операции, определенной в этом языке: на типы левой и правой частей опе-
ратора присваивания; на тип параметра цикла; на тип условия в операторах
цикла и условном операторе и т.п.
Проверку контекстных условий часто называют семантическим анализом.
Его можно выполнять сразу после синтаксического анализа, некоторые требо-
вания можно контролировать во время генерации кода (например, ограничения
на типы операндов в выражении), но чаще всего этот этап совмещается с син-
таксическим анализом.
В этом случае как только синтаксический анализатор распознает конст-
рукцию, на компоненты которой наложены некоторые ограничения, проверяет-
ся их выполнение. Это означает, что на этапе синтаксического анализа придет-
ся выполнять некоторые дополнительные действия, осуществляющие семанти-
ческий контроль.
8. Генерация кода
Генерация объектного кода – это перевод компилятором внутреннего
представления исходной программы в результирующую объектную программу
на языке ассемблера или непосредственно на машинном языке (машинных ко-
дах). Генерация объектного кода выполняется после того, как выполнен син-
таксический анализ программы и все необходимые действия по подготовке к
генерации кода: распределено адресное пространство под функции и перемен-
ные, проверено соответствие имен и типов переменных, констант и функций в
синтаксических конструкциях исходной программы и т.д.
Страницы
- « первая
- ‹ предыдущая
- …
- 46
- 47
- 48
- 49
- 50
- …
- следующая ›
- последняя »