didact

По разделам

  1. Введение в компиляцию
    1. Введение в компиляцию
    2. Классификация языков программирования
  2. Лексический анализ
    1. Лексический анализ
    2. Реализация лексического анализатора
  3. Синтаксический анализ
    1. Синтаксический анализ
    2. Грамматики
    3. Разработка грамматик
    4. Нисходящий синтаксический анализ
    5. Восходящий синтаксический анализ
  4. Промежуточный код
    1. Генерация промежуточного кода
    2. Элементы теории типов
    3. Машинно-независимая оптимизация
  5. Целевой код
    1. Среды времени выполнения
    2. Генерация целевого кода
    3. Машинно-зависимая оптимизация

По темам

  1. Введение в компиляцию
    1. Структура компилятора
    2. Процесс компиляции
  2. Классификация языков программирования
    1. Поколения языков программирования
    2. Системы типов
    3. Стратегия проверки типов
    4. Уровень абстракции
    5. Модели исполнения
  3. Лексический анализ
    1. Понятие лексического анализа
    2. Роль лексического анализатора
    3. Токены, шаблоны, лексемы
    4. Регулярные выражения
  4. Реализация лексического анализатора
    1. Диаграммы переходов
    2. Распознавание шаблонов на основе недетерминированного конечного автомата
    3. Переход от недетерминированного к детерминированному конечному автомату
  5. Синтаксический анализ
    1. Понятие синтаксического анализа
    2. Роль синтаксического анализатора
  6. Грамматики
    1. Иерархия Хомского
    2. Контекстно-свободные грамматики
    3. Способы описания контекстно-свободных грамматик
    4. Нормальная форма Бакуса-Наура
    5. Порождения
    6. Деревья разбора
    7. Однозначные и неоднозначные грамматики
  7. Разработка грамматик
    1. Устранение неоднозначности
    2. Устранение левой рекурсии
    3. Левая факторизация
  8. Нисходящий синтаксический анализ
    1. Рекурсивный синтаксический анализатор
    2. LL(1)-анализатор
  9. Восходящий синтаксический анализ
    1. Метод перенос/свёртка восходящего синтаксического анализа
    2. Конфликты в процессе анализа перенос/свёртка
    3. LR-анализ
    4. LR(0)-анализатор
    5. SLR-анализатор
    6. LR(1)-анализатор
    7. LALR-анализатор
    8. Использование приоритетов и ассоциативности для разрешения конфликтов при LR-анализе
  10. Генерация промежуточного кода
    1. Ориентированные ациклические графы как промежуточный код
    2. Трёхадресный код
  11. Элементы теории типов
    1. Выражения типов
    2. Номинативная эквивалентность типов
    3. Репрезентативная эквивалентность типов
    4. Синтез типов
    5. Выведение типов
    6. Проверка типов
  12. Машинно-независимая оптимизация
    1. Источники оптимизации
    2. Семантически-эквивалентные трансформации
    3. Глобальные общие подвыражения
    4. Распространение копий
    5. Удаление бесполезного кода
    6. Перемещение кода
    7. Анализ потоков данных
  13. Среды времени выполнения
    1. Понятие среды времени выполнения
    2. Организация памяти
    3. Доступ к нелокальным данным
    4. Управление кучей
  14. Генерация целевого кода
    1. Генерация целевого кода
    2. Распределение регистров
    3. Адресация в целевом коде
  15. Машинно-зависимая оптимизация
    1. Локальная оптимизация
    2. Параллелизм уровня команд
    3. Конвейеризация
    4. Оптимизация локальности