Генератор компіляторів

Робоча програма навчальної дисципліни (відповідно до вимог МОН України).
Документ містить мету, результати навчання, структуру змісту, систему оцінювання та літературу.

Код курсу: КА-121-01

Кафедра: Кафедра мовного забезпечення

Кількість кредитів ECTS: 12 (360 годин)

Рівень: Бакалавр / Магістр

Авторський колектив: Ахо, Сеті, Ульман (класичний базис)

Мета та завдання

Формування глибоких знань і практичних навичок з побудови генераторів компіляторів та інтерпретаторів. Курс охоплює повний цикл від синтаксичного аналізу (LL, LR, LALR, PEG, комбінатори, рекурсивний спуск) до семантичного аналізу, генерації коду, алокації регістрів та інтерпретації, з акцентом на відмінності між класами граматик і практичними реалізаціями (C99, APL).

Результати навчання

Структура курсу (модулі)

  1. Синтаксичний аналіз
    Граматики та класи: LL(1), LR(0), LR(1), LALR(1), SLR. Відмінності в потужності, конфліктах зсуву/зведення, розмірах таблиць. Генератори (yacc/bison, ANTLR). PEG (Parsing Expression Grammars) та парсерні комбінатори. Рекурсивний спуск: ручна реалізація, притаманна інтерпретаторам C99 та APL. Лексичний аналіз як прелюдія.
  2. Семантичний аналіз
    Атрибутні граматики, перевірка типів, таблиці символів, область видимості, роздільна компіляція. Семантичні дії під час парсингу (LL/LR).
  3. Алокація регістрів
    Граф інтерференції, розфарбування графа (Chaitin), лінійне сканування, spilling. Взаємодія з генерацією коду.
  4. Компіляція
    Проміжне представлення (AST, IR, SSA). Генерація коду для регістрових машин. Оптимізації (локальні, глобальні). Повний конвеєр від вихідного коду до машинного / байткоду.
  5. Інтерпретація
    Деревоподібні та стекові інтерпретатори. Байткод-машини. Лінива та сувора семантика. Практичні приклади: мінімальні інтерпретатори в стилі C99 (рекурсивний спуск + AST) та APL-подібні векторизовані інтерпретатори.
  6. Практична лабораторна: повний мінімальний генератор / інтерпретатор
    Реалізація парсера (рекурсивний спуск або комбінатори), семантичного аналізу та простої генерації / інтерпретації.

Система оцінювання (100 балів)

Шкала: 90–100 — відмінно; 75–89 — добре; 60–74 — задовільно; <60 — незадовільно.

Рекомендована література

← Назад до каталогу курсів