ВУЗ:
Составители:
Существуют много других типов автоматов, применяемых в А. соответ-
ствующие грамматики образуют иерархию. Наиболее известны из них грамма-
тики предшествования /6/.
6.9 Семантический анализ Синтез объектной программы
Рассматриваемый этап обработки входной программы представляет со-
бой преобразование синтаксического дерева программы на входном языке в код
эквивалентной формы объектной программы. При этом синтаксический анализ
может чередоваться с семантическим: синтаксический анализатор формирует
синтаксическую единицу (выражение, оператор, вызов и т.п.) из последовате-
льности лексем а затем распознанная структура обрабатывается. Результатом
работы семантического анализатора является объектная программа (или про-
межуточная программа). Основными функциями семантического анализатора
являются: выполнение проверки контекстных (семантических) условий; расп-
ределение памяти; анализ объектной (или промежуточной) программы. Кроме
того, в ведении семантического анализатора таблица идентификаторов. К об-
щим примерам контекстных условий относятся: условие единственности опи-
сания идентификатора, условие соответствия между определяющими и исполь-
зующими вхождениями идентификаторов; условия соответствия типов значе-
ний; количественные ограничения и другие. Что касается таблиц идентифика-
торов, то начальные поля таблиц создаются лексическим анализатором. Далее,
по мере распознавания описаний идентификаторов в процессе синтаксического
анализа формируются новые поля таблицы. Для каждого типа идентификатора
хранится соответствующая информация. В частности, для имен переменных
указывается тип, точность, вид, адрес и т.д. Новое поле добавляется один раз,
но поиск ведется при каждом упоминании в программе этого идентификатора.
В конце трансляции таблица идентификаторов прекращает существование, если
не используется во время выполнения программы (например, при отладке).
6.10 Распределение памяти
После выявления структуры программы реализуется фаза распределения
памяти. Транслятор выделяет место в памяти машины для значений перемен-
ных программы и указывает адреса переменных в таблице идентификаторов.
Для простых типов данных (числа, литеры и т.п.) применимо, как правило,
прямое аппаратное представление, для сложных (массивы, записи и т.д.) созда-
ются вспомогательные промежуточные структуры (информационные векторы).
Физическая память для команд объектной программы выделяется во время за-
грузки программы загрузчиком, а для данных всю область памяти разделяют на
статическую (постоянное число ячеек на все время работы программы), автома-
тическую (переменную, но предопределенную), динамическую. Статическая
часть отводится, например, глобальным переменным, автоматическая – локаль-
Существуют много других типов автоматов, применяемых в А. соответ- ствующие грамматики образуют иерархию. Наиболее известны из них грамма- тики предшествования /6/. 6.9 Семантический анализ Синтез объектной программы Рассматриваемый этап обработки входной программы представляет со- бой преобразование синтаксического дерева программы на входном языке в код эквивалентной формы объектной программы. При этом синтаксический анализ может чередоваться с семантическим: синтаксический анализатор формирует синтаксическую единицу (выражение, оператор, вызов и т.п.) из последовате- льности лексем а затем распознанная структура обрабатывается. Результатом работы семантического анализатора является объектная программа (или про- межуточная программа). Основными функциями семантического анализатора являются: выполнение проверки контекстных (семантических) условий; расп- ределение памяти; анализ объектной (или промежуточной) программы. Кроме того, в ведении семантического анализатора таблица идентификаторов. К об- щим примерам контекстных условий относятся: условие единственности опи- сания идентификатора, условие соответствия между определяющими и исполь- зующими вхождениями идентификаторов; условия соответствия типов значе- ний; количественные ограничения и другие. Что касается таблиц идентифика- торов, то начальные поля таблиц создаются лексическим анализатором. Далее, по мере распознавания описаний идентификаторов в процессе синтаксического анализа формируются новые поля таблицы. Для каждого типа идентификатора хранится соответствующая информация. В частности, для имен переменных указывается тип, точность, вид, адрес и т.д. Новое поле добавляется один раз, но поиск ведется при каждом упоминании в программе этого идентификатора. В конце трансляции таблица идентификаторов прекращает существование, если не используется во время выполнения программы (например, при отладке). 6.10 Распределение памяти После выявления структуры программы реализуется фаза распределения памяти. Транслятор выделяет место в памяти машины для значений перемен- ных программы и указывает адреса переменных в таблице идентификаторов. Для простых типов данных (числа, литеры и т.п.) применимо, как правило, прямое аппаратное представление, для сложных (массивы, записи и т.д.) созда- ются вспомогательные промежуточные структуры (информационные векторы). Физическая память для команд объектной программы выделяется во время за- грузки программы загрузчиком, а для данных всю область памяти разделяют на статическую (постоянное число ячеек на все время работы программы), автома- тическую (переменную, но предопределенную), динамическую. Статическая часть отводится, например, глобальным переменным, автоматическая – локаль-
Страницы
- « первая
- ‹ предыдущая
- …
- 103
- 104
- 105
- 106
- 107
- …
- следующая ›
- последняя »