Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
автоматы.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
38.81 Кб
Скачать

26. Генерирование компанд по полиЗу

Используется стек, вместо значений сохраняются адреса или символические имена операндов, которые в процессе работы алгоритма заменяются на имена ячеек временной памяти для результатов промеждуточных вычислений. Основу формирования команд составляют кодовые продукции - набор машинных команд, которые соответствуют отдельному оператору ПОЛИЗа. Алгоритм состоит в том, что строка полиза просматривается один раз слева направо и при встрече операндов их имена заносятся в стек. При встрече с оператором из таблицы выбирается соотв. ему кодовая продукция. В неё подставляются имена операндов, извлеченные из стека, а так же сформированное имя результата. Последнее имя замещает операнды данного оператора в стеке, а продукция помещается в выходной файл.

27. Алгоритм Замельсона и Бауэра перевода выражений в полиз

Вход: Строка, содержащая инфиксное арифметическое выражение. Выход: ПОЛИЗ исходного выражения. Суть метода: для каждого знака-разделителя (скобки, операции) вводятся два числа: Рс сравнительный приоритет и Рм - магазинный приоритет. Исходное выражение просматривается один раз слева направо. 1) Идентефикаторы и константы переписываются в выходную строку ПОЛИЗа. 2) При обнаружении разделителя его Рс сравнивается с Рм разделителя из вершины магазина операций. Если Рс>Рм то разделитель входной строки помещается в магазин. Если Рс <= Рм, то символ извлекается из магазина и помещается в выходную строку. Пункт 2 повторяется для того же символа. "(" имеет самый высокий приоритет, всегда записывается в магазин. ")" никогда не записывается - по этому символу из магазина извлекаются все операции и записываются в выход.

28. Атрибутные грамматики

Атрибут - свойство объекта. Под атрибутом в грамматиках понимаются значение или семантический смысл объекта. Атрибутная грамматика - это КС-грамматика с узлами дерева вывода которой связаны атрибуты (семантические правила). КС-правилам сопоставляются правила вычисления атрибутов. Правило вычисления значений атрибутов, соотв. данному КС-правилу, применяется для всех вхождений этого правила в древо вывода. Атрибуты могут быть двух видов - синтезированные и унаследованные. Синтезированные - вычисляются с учетом значений атрибутов узлов потомков. Унаследованные - с учетом значений атрибутов предков. Формально АГ - Ga = (Vt,Vn,S,R,A(x)), A(x) - множество атрибутов.

29. Основные фазы компиляции Транслятор - программа перевода текста программы с одного языка (исходного) на другой (объектный). Различают компилирующие и интерпретирующие трансляторы. Компилятор переводит всю программу, затем её выполняет. Интерпретатор переводит по отдельным операторам программу и сразу каждый из операторов исполняет. 1) Лексический анализ - распознавание базовых элементов языка, перевод исходной программы в таблицу стандартных символов (лексем). Лексический анализатор группирует определенные терминальные символы исходной программы в лексемы - пару вида: тип лексемы, данные. Выход: цепочка лексем, таблица идентификаторов и констант. 2) Синтаксический анализ - использует только типы лексем. Исследование цепочек лексем на удов. структурным условиям, синтаксису. Основы - синтаксические правила и грамматика языка. 3) Семантический анализ - определение смыслового значения базовых синтаксических конструкций. Этот процесс синтаксически управляем. 2 и 3 тесно связаны. 4) Машинно-независимая оптимизация ВФП - вынесение общих подвыражений, вычисления над константами, оптимизация переходов в сложных условных операторах, вынесение инвариантных вычислений за цикл и т.п. 5) Распределение памяти - модификация таблиц идентификаторов и констант. Определение адресов идентификаторов и констант. Вставки в ВФП, для генерации и распределения динамической памяти. Выделение временной памяти.6) Генерация кода и машинно-зависимая оптимизация. С каждой операцией из ВФП связана кодовая продукция, которая и выносится в код сборки. Оптимизация же проводится с целью более эффективного использования регистров ЭВМ, удаления лишних команд, связанных с сохранением и загрузкой промежуточных данных.7) Сборка и выдача - разрешение символических адресов (трансляция с языка ассемблера) и формирование объектного модуля (машинного кода и информации для компоновщика и загрузчика).