Table of Contents

Описание курса

Цели и задачи

Цель курса: Формирование системных знаний о теории формальных языков и автоматов с акцентом на практическое применение в разработке компиляторов и языковых процессоров.

Компетенции:

Знать:

  1. Иерархию Хомского и классы формальных грамматик
  2. Принципы работы детерминированных и недетерминированных автоматов
  3. Методы синтаксического анализа (LL, LR, рекурсивный спуск)
  4. Архитектуру компиляторов и трансляторов

Уметь:

  1. Проектировать грамматики для предметно-ориентированных языков
  2. Реализовывать лексические и синтаксические анализаторы
  3. Генерировать промежуточное представление кода
  4. Использовать ANTLR4 и LLVM для построения трансляторов

Владеть:

  1. Навыками работы с современными инструментами языковой разработки
  2. Методами оптимизации и генерации кода
  3. Техниками отладки языковых процессоров

Структура курса

Раздел Лекции Лабы Практ. Сам. раб.
Раздел 1: Регулярные языки и конечные автоматы 7 4 3 7
Раздел 2: КС-грамматики и МП-автоматы 7 4 3 7
Раздел 3: Синтаксический анализ 7 4 3 7
Раздел 4: Практика трансляции 7 4 3 7
Итого 28 16 12 28

Содержание разделов

Раздел 1: Регулярные языки и конечные автоматы

Теория:

  1. Формальные языки и грамматики
  2. Конечные автоматы (ДКА/НКА)
  3. Регулярные выражения
  4. Минимизация и преобразование автоматов

Практика:

  1. Реализация сканеров на ANTLR4
  2. Генерация лексических анализаторов
  3. Оптимизация регулярных выражений

Раздел 2: КС-грамматики и МП-автоматы

Теория:

  1. Контекстно-свободные грамматики
  2. Автоматы с магазинной памятью
  3. Нормальные формы (Хомского, Грейбах)
  4. Свойства КС-языков

Практика:

  1. Проектирование грамматик для DSL
  2. Построение нисходящих парсеров
  3. Обработка синтаксических ошибок

Раздел 3: Синтаксический анализ

Теория:

  1. LL(1) и LR(1) анализ
  2. Рекурсивный спуск
  3. Табличные методы разбора
  4. Абстрактные синтаксические деревья

Практика:

  1. Реализация парсеров на ANTLR4
  2. Построение и обход AST
  3. Семантический анализ

Раздел 4: Практика трансляции

Теория:

  1. Архитектура компиляторов
  2. Промежуточные представления
  3. Генерация кода
  4. Оптимизации

Практика:

  1. Интеграция с LLVM
  2. Генерация native-кода
  3. Создание предметно-ориентированных языков

Инструментарий

Основные инструменты

ANTLR4

  1. Генерация лексеров и парсеров
  2. Поддержка множества целевых языков
  3. Интеграция с системами сборки

LLVM

  1. Промежуточное представление LLVM IR - Intermediate Representation
  2. Кросс-платформенная генерация кода
  3. Оптимизации на уровне IR

DeepSeek (контролируемое использование)

  1. Анализ и рефакторинг кода
  2. Генерация шаблонов реализаций
  3. Помощь в отладке сложных конструкций

Оценочные материалы

Формы контроля

Вопросы для подготовки

  1. Иерархия Хомского: классы и их характеристики
  2. ДКА и НКА: эквивалентность и преобразования
  3. Регулярные выражения и их применение в лексическом анализе
  4. КС-грамматики: свойства и нормальные формы
  5. Синтаксический анализ: LL(1) vs LR(1)
  6. Построение AST и семантический анализ
  7. Генерация кода с использованием LLVM
  8. Оптимизации на разных этапах компиляции

Литература

Основная

  1. Теренс Парр - “The Definitive ANTLR 4 Reference”
  2. Крис Латтнер - “LLVM Essentials”
  3. Альфред Ахо и др. - “Компиляторы: принципы, технологии и инструменты”

Дополнительная

  1. Официальная документация ANTLR4
  2. LLVM Tutorial и Language Reference
  3. Статьи по построению DSL и языковых процессоров

← Назад | Лабораторные работы →