- •1. Операции над языками. Регулярные выражения.
- •4) Положительное замыкание Клини (без пустой строки):
- •2. Недетерминированный конечный автомат: формальное определение, построение множества достижимых состояний.
- •3. Преобразование регулярных выражений в недетерминированный конечный автомат
- •4. Преобразование недетерминированного конечного автомата в детерминированный.
- •5. Минимизация детерминированного конечного автомата.
- •6. Контекстно-свободные языки. Вывод. Дерево вывода.
- •7. Контекстно-свободные грамматики для регулярных языков.
- •9. Исключение левой рекурсии.
- •8. Метод грамматического разбора сверху - вниз. Ll(1) – грамматики.
- •10. Левая факторизация.
- •11. Построение множества first
- •12. Построение множества follow
- •14. Построение таблицы разбора для ll(1) – грамматики
- •15. Алгоритм работы таблично управляемого анализатора для ll(1) – грамматики.
- •16. Грамматики простого предшествования. Использование отношения предшествования операторов
- •17. Построение отношения предшествования операторов исходя из их ассоциативности и приоритета. Алгоритм разбора для грамматик простого предшествования.
- •18. Синтаксический анализ снизу – вверх. Основа. Подрезка основы.
- •19. Разбор методом «сдвиг – свертка» (shift – reduce) на основе стека.
- •20. Активный префикс. Обосновать, что основа всегда формируется в вершине стека.
- •22. Алгоритм вычисления замыкания множества ситуаций (Closure).
- •23. Каноническая совокупность множеств ситуаций.
- •24. Переходы в slr (1) анализаторе. Функция goto. Допустимая ситуация.
- •25. Алгоритм заполнения таблиц разбора для slr (1) анализатора.
- •26. Алгоритм lr – разбора.
- •33. Контекстно–зависимый анализ. Синтаксически управляемая трансляция.
- •34. Синтезируемые атрибуты. Их обработка в алгоритме сдвиг–свертка.
- •35. Построение абстрактного синтаксического дерева.
- •36. Наследуемые атрибуты. Граф зависимостей.
- •42. Генератор компиляторов уасс. Использование неоднозначных грамматик.
- •43. Автомат с магазинной памятью. Графическое представление автомата с магазинной памятью. Вычислительный процесс в мп – автомате.
- •44. Автомат с магазинной памятью. Допустимость по заключительному состоянию и по пустому магазину.
- •35. Типы и проверка типов.
- •27. Lr(1) анализ. Lr(1)-ситуация. Замыкание множества ситуаций. Определение переходов.
- •30. Lr(1) анализ. Заполнение таблиц lr-разбора
- •31. Lalr(1) – грамматики. Построение lalr(1) – таблиц разбора.
33. Контекстно–зависимый анализ. Синтаксически управляемая трансляция.
В
процессе синтаксического анализа
формируется дерево разбора, вершинами
являются грамматические символы. Ветви
дерева придают определенный смысл. Для
этого грамм. символам добавляют атрибуты,
которые и отражают смысл конструкции
языка. В процессе построения дерева
разбора можно вычислить его значения.
Вычисления выполняются в соответствии
с семантическими правилами, связываются
с продукцией грамматики.
E0→E1+E2 { E0:=E1+E2}
Есть 2 способа объединения продукций семантических правил.
1)семантически управляемые определения — это высокоуровневое описание процесса трансляции, в нем скрыты детали реализации и не требуется явно определять порядок вычисления семантических правил.
2)Схемы трансляции в этом случае указывают порядок вычисления семантических правил.
Входная последовательность лексических знаков→дерево разбора→граф зависимостей→ порядок выполнения семантических правил
В ряде случаев удается сразу выполнить семантические правила в процессе разбора, без построения дерева разбора и графа зависимостей.
Есть важный класс синтаксически управляемых определений называемых α — атрибутными определениями, которые позволяют сразу генерировать результат трансляции.
34. Синтезируемые атрибуты. Их обработка в алгоритме сдвиг–свертка.
Атрибутные грамматики – продукции КС грамматики, которые снабжены атрибутами и функциями, вычисляющие эти атрибуты. Синтезируемые атрибуты вычисляют свои значения, используя только значения атрибутов потомков. Атрибутные грамматики, которые используют только синтезируемые атрибуты, называются S-атрибутными грамматиками.
Вычисление синтез. атрибутов: В соответствие каждой продукции ставиться семантическое правило. Атрибуты хранятся в стеке вместе с грамматическими символами (в отдельном поле записи или отдельной таблицы связанной индексами). Когда в стек попадет терминал вместе с ним заноситься и его лексическое значение. Когда выполняется свертка, тогда из стека извлекаются атрибуты правой части продукции и исходя из семантического правила выполняется вычисление атрибута нетерминала левой части продукции (значение записывается также в стек). Указатель на вершину стека атрибута равен указателю стека грамматических символов.
Являются расширением контекстно-свободными грамматик. С грамматическими символами связывают множество атрибутов. Дерево будет в вершинах иметь набор переменных. Это дерево называется аннотированным деревом разбора. Значения атрибутов определяется семантическими правилами, связанными с продукциями грамматики в зависимости от вида семантических правил атрибуты м.б. синтезируемыми и наследуемыми.
Синтезируемые — вычисляют свои значения не используя атрибуты своих «детей».
Семантические правила получают значения терминалов исходя из значений лексических символов. Семантические правила могут иметь побочный эффект — формировать таблицу символов. Пример: Синтаксически управляемое определение с синтезируемыми атрибутами. Возьмем грамматику арифметических выражений, и будем транслировать выражения в результат.
Наследуемые атрибуты вычисляют свои значения, обращаясь к братьям и родителям. С каждой грамматикой связано одно или несколько правил. Если атрибутные грамматики используют только синтезируемые атрибуты, они называются S-атрибуты грамматики.
Пример?
