gram:cd
Table of Contents
Описание курса
Цели и задачи
Цель курса: Формирование системных знаний о теории формальных языков и автоматов с акцентом на практическое применение в разработке компиляторов и языковых процессоров.
Компетенции:
Знать:
- Иерархию Хомского и классы формальных грамматик
- Принципы работы детерминированных и недетерминированных автоматов
- Методы синтаксического анализа (LL, LR, рекурсивный спуск)
- Архитектуру компиляторов и трансляторов
Уметь:
- Проектировать грамматики для предметно-ориентированных языков
- Реализовывать лексические и синтаксические анализаторы
- Генерировать промежуточное представление кода
- Использовать ANTLR4 и LLVM для построения трансляторов
Владеть:
- Навыками работы с современными инструментами языковой разработки
- Методами оптимизации и генерации кода
- Техниками отладки языковых процессоров
Структура курса
| Раздел | Лекции | Лабы | Практ. | Сам. раб. |
|---|---|---|---|---|
| Раздел 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: Регулярные языки и конечные автоматы
Теория:
- Формальные языки и грамматики
- Конечные автоматы (ДКА/НКА)
- Регулярные выражения
- Минимизация и преобразование автоматов
Практика:
- Реализация сканеров на ANTLR4
- Генерация лексических анализаторов
- Оптимизация регулярных выражений
Раздел 2: КС-грамматики и МП-автоматы
Теория:
- Контекстно-свободные грамматики
- Автоматы с магазинной памятью
- Нормальные формы (Хомского, Грейбах)
- Свойства КС-языков
Практика:
- Проектирование грамматик для DSL
- Построение нисходящих парсеров
- Обработка синтаксических ошибок
Раздел 3: Синтаксический анализ
Теория:
- LL(1) и LR(1) анализ
- Рекурсивный спуск
- Табличные методы разбора
- Абстрактные синтаксические деревья
Практика:
- Реализация парсеров на ANTLR4
- Построение и обход AST
- Семантический анализ
Раздел 4: Практика трансляции
Теория:
- Архитектура компиляторов
- Промежуточные представления
- Генерация кода
- Оптимизации
Практика:
- Интеграция с LLVM
- Генерация native-кода
- Создание предметно-ориентированных языков
Инструментарий
Основные инструменты
ANTLR4
- Генерация лексеров и парсеров
- Поддержка множества целевых языков
- Интеграция с системами сборки
LLVM
- Промежуточное представление LLVM IR - Intermediate Representation
- Кросс-платформенная генерация кода
- Оптимизации на уровне IR
DeepSeek (контролируемое использование)
- Анализ и рефакторинг кода
- Генерация шаблонов реализаций
- Помощь в отладке сложных конструкций
Оценочные материалы
Формы контроля
- Лабораторные работы: 40%
- Практические задания: 20%
- Экзамен?: 40%
Вопросы для подготовки
- Иерархия Хомского: классы и их характеристики
- ДКА и НКА: эквивалентность и преобразования
- Регулярные выражения и их применение в лексическом анализе
- КС-грамматики: свойства и нормальные формы
- Синтаксический анализ: LL(1) vs LR(1)
- Построение AST и семантический анализ
- Генерация кода с использованием LLVM
- Оптимизации на разных этапах компиляции
Литература
Основная
- Теренс Парр - “The Definitive ANTLR 4 Reference”
- Крис Латтнер - “LLVM Essentials”
- Альфред Ахо и др. - “Компиляторы: принципы, технологии и инструменты”
Дополнительная
- Официальная документация ANTLR4
- LLVM Tutorial и Language Reference
- Статьи по построению DSL и языковых процессоров
gram/cd.txt · Last modified: by eugeneai
