Дидактические единицы
- Введение в компиляцию
- Классификация языков программирования
- Понятие и цели лексического анализа
- Реализация лексического анализатора
- Понятие и цели синтаксического анализа
- Грамматики
- Разработка грамматик
- Нисходящий синтаксический анализ
- Восходящий синтаксический анализ
- Генерация промежуточного кода
- Элементы теории типов
- Машинно-независимая оптимизация
- Среда времени выполнения
- Генерация целевого кода
- Машинно-зависимая оптимизация
Содержание разделов дисциплины
Наименование раздела | Темы лекций | Объем, часы | Дидактические единицы |
---|---|---|---|
|
1.1. Структура компилятора. Процесс компиляции 1.2. Классификация языков программирования |
4 | 1,2 |
|
2.1. Лексический анализ. Токены, шаблоны, лексемы. Регулярные выражения 2.2. Распознавание шаблонов на основе недетерминированного конечного автомата 2.3. Переход от недетерминированного к детерминированному конечному автомату |
6 | 3,4 |
|
3.1. Понятие и роль синтаксического анализа 3.2. Грамматики. Иерархия Хомского. Нормальная форма Бакуса-Наура 3.3. Нисходящий синтаксический анализ. Рекурсивный анализ. LL(1)-анализ 3.4. Восходящий синтаксический анализ. Метод перенос/свертка. LR-анализ |
12 | 5-9 |
|
4.1. Ориентированные ациклические графы. Трёхадресный код 4.2. Выражения типов. Эквивалентность типов. Синтез и выведение. Проверка 4.3. Машинно-независимая оптимизация. Источники оптимизации. Семантически-эквивалентные трансформации |
8 | 10-12 |
|
5.1. Организация памяти. Доступ к нелокальным данным. Управление кучей 5.2. Генерация целевого кода. Распределение регистров. Адресация в целевом коде 5.3. Локальная оптимизация. Параллелизм уровня команд. Конвейеризация. Оптимизация локальности |
6 | 13-15 |
Итого: | 36 |
Практические занятия
Наименование раздела | Темы занятий | Объем, часы | Дидактические единицы |
---|---|---|---|
Лексический анализ |
|
4 | 4 |
Синтаксический анализ |
|
4 | 6,7 |
|
4 | 8 | |
|
4 | 8 | |
|
8 | 9 | |
Промежуточный код |
|
4 | 10 |
|
6 | 12 | |
|
2 | 13 | |
Итого: | 36 |