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