
- •1. Теория формальных языков как раздел математической лингвистики.
- •2. Понятие грамматики языка. Обозначения.
- •3. Классификация грамматик по Хомскому.
- •11. Исключение тупиковых правил из грамматики.
- •12. Обобщенные кс-грамматики и приведение их к удлиняющей форме.
- •26. Генерирование компанд по полиЗу
- •27. Алгоритм Замельсона и Бауэра перевода выражений в полиз
- •28. Атрибутные грамматики
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) Сборка и выдача - разрешение символических адресов (трансляция с языка ассемблера) и формирование объектного модуля (машинного кода и информации для компоновщика и загрузчика).