Математическая логика и теория алгоритмов. Стенюшкина В.А. - 105 стр.

UptoLike

Составители: 

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


      6.9 Семантический анализ Синтез объектной программы

       Рассматриваемый этап обработки входной программы представляет со-
бой преобразование синтаксического дерева программы на входном языке в код
эквивалентной формы объектной программы. При этом синтаксический анализ
может чередоваться с семантическим: синтаксический анализатор формирует
синтаксическую единицу (выражение, оператор, вызов и т.п.) из последовате-
льности лексем а затем распознанная структура обрабатывается. Результатом
работы семантического анализатора является объектная программа (или про-
межуточная программа). Основными функциями семантического анализатора
являются: выполнение проверки контекстных (семантических) условий; расп-
ределение памяти; анализ объектной (или промежуточной) программы. Кроме
того, в ведении семантического анализатора таблица идентификаторов. К об-
щим примерам контекстных условий относятся: условие единственности опи-
сания идентификатора, условие соответствия между определяющими и исполь-
зующими вхождениями идентификаторов; условия соответствия типов значе-
ний; количественные ограничения и другие. Что касается таблиц идентифика-
торов, то начальные поля таблиц создаются лексическим анализатором. Далее,
по мере распознавания описаний идентификаторов в процессе синтаксического
анализа формируются новые поля таблицы. Для каждого типа идентификатора
хранится соответствующая информация. В частности, для имен переменных
указывается тип, точность, вид, адрес и т.д. Новое поле добавляется один раз,
но поиск ведется при каждом упоминании в программе этого идентификатора.
В конце трансляции таблица идентификаторов прекращает существование, если
не используется во время выполнения программы (например, при отладке).
      6.10 Распределение памяти

       После выявления структуры программы реализуется фаза распределения
памяти. Транслятор выделяет место в памяти машины для значений перемен-
ных программы и указывает адреса переменных в таблице идентификаторов.
Для простых типов данных (числа, литеры и т.п.) применимо, как правило,
прямое аппаратное представление, для сложных (массивы, записи и т.д.) созда-
ются вспомогательные промежуточные структуры (информационные векторы).
Физическая память для команд объектной программы выделяется во время за-
грузки программы загрузчиком, а для данных всю область памяти разделяют на
статическую (постоянное число ячеек на все время работы программы), автома-
тическую (переменную, но предопределенную), динамическую. Статическая
часть отводится, например, глобальным переменным, автоматическая – локаль-