Экзаменационная программа по курсу «Методы построения компиляторов», 2008/09 уч. год
Материал из Вики ИТ мехмата ЮФУ
Экзаменационная программа по курсу «Методы построения компиляторов»
Лектор | Михалкович Станислав Станиславович |
Семестр | весна |
Курс | 3 |
Учебный год | 2008/09 |
Продолжительность | 34 |
Отделение | Информационные технологии |
Факультет | Математики, механики и компьютерных наук |
- Разновидности компиляторов.
- Фазы компиляции. Группировка фаз.
- Грамматики. Классификация грамматик по Хомскому. Какие грамматики используются при компиляции языков программирования.
- Дерево вывода. Примеры постороения деревьев вывода. Однозначность дерева вывода.
- Понятие неоднозначной грамматики. Пример грамматики if then else.
- Перевод. Схема синтаксически управляемого перевода. Пример СУ-схемы грамматики выражений. Пример, иллюстрирующий преобразование дерева вывода при переводе
- Транслирующие грамматики. Входная грамматика транслирующей грамматики. Активная цепочка, входная часть активной цепочки, операционная часть активной цепочки.
- Атрибутные грамматики и трансляции. Аннотированное дерево разбора. Пример атрибутной транслитующей грамматики выражений.
- Синтезированные и наследуемые атрибуты. Пример. Граф зависимости между атрибутами. Пример. Корректность атрибутной грамматики.
- Грамматика 1 представления рациональных двоичных чисел. Атрибуты, граф зависимости.
- Грамматика 2 представления рациональных двоичных чисел. Атрибуты, граф зависимости. Отсутствие циклов в графе.
- Пример грамматики символьного дифференцирования.
- S-атрибутные и L-атрибутные грамматики. Порядок вычисления атрибутов в L-атрибутной грамматике.
- Нисходящий анализ. Общий вид. Леворекурсивные грамматики в нисходящем анализе. Алгоритм устранения левой рекурсии.
- Нерекурсивный предиктивный анализатор – общая схема и алгоритм работы. Пример работы для нелеворекурсивной грамматики выражений.
- Множества First и Follow. Алгоритм вычисления First(X). Алгоритм вычисления Follow(A). Пример вычисления First и Follow для нелеворекурсвной грамматики выражений.
- Построение таблиц предиктивного анализа M[X,a]
- Определение LL(1) грамматики. Ее свойства. Критерий LL(1) грамматики. Представление об LL(k) грамматиках.
- Восстановление после ошибок в LL-анализе.
- Восходящий синтаксический (ПС) анализ. Обращенное правое порождение. Основы.Обрезка основ.
- Стековая реализация ПС анализа. Основные операции ПС-анализатора. Утверждение о местонахождении основы в стеке ПС-анализатора.
- LR-анализаторы. Виды таблиц LR-анализа.
- Общий алгоритм LR-анализа. Таблицы action и goto. Конфигурация LR-анализатора. Один шаг алгоритма LR-анализа.
- LR(0) пункты. Состояние как множество LR(0) пунктов. Операция замыкания. Определение множества goto(M,X).
- Канонический набор LR(0) пунктов. Пример построения ДКА, в котором множества пунктов выступают в качестве состояний. Использование данного ДКА для распознавания цепочек.
- Опеределение LR(0) грамматики.
- Пример грамматики, не являющейся LR(0). SLR(1) – грамматика.
- Построение таблиц SLR-анализа.Пример SLR(1) анализатора для грамматики.
- Грамматика выражений, ее SLR-таблица. Канонический набор LR(0) пунктов для грамматики выражений.
- Пример грамматики, не являющейся SLR(1).
- Канонические LR(1) пункты. Построение канонического набора множеств LR(1)- пунктов. Пример.
- Алгоритм построеният таблиц канонического LR-анализа. Недостатки.
- LALR-таблицы, общая идея их построения. Алгоритм построения LALR-таблиц, неэкономный по памяти.
- Генераторы синтаксических анализаторов. Yacc-Lex. GPPG-GPLex. Общий формат .y и .lex-файлов.
- Пример реализации лексического анализатора простого языка программирования с помощью GPLex.
- Пример реализации синтаксического анализатора простого языка программирования с помощью GPPG.
- Библиотека поддержки для построения дерева разбора программы для GPPG.
- Организация таблицы символов для простого языка программирования.
Литература
- А.Ахо, Р.Сети, Д.Ульман. Компиляторы. Принципы, технологии, инструменты.М, Вильямс, 2001
- С.З.Свердлов. Языки программирования и методы трансляции. Питер, 2007
- Э.А.Опалева, В.П.Самойленко. Языки программирования и методы трансляции. BHV, 2005
- Ю.Г.Карпов. Основы построения трансляторов. BHV, 2005