Бакалавриат
2024/2025
Формальные языки и автоматы
Статус:
Курс по выбору (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Программа дисциплины
Аннотация
Курс включает 2 части. Первая часть посвящена изучению теории формальных языков, автоматов и грамматик, а также затрагивает пределы вычислимости (какие задачи можно решать на компьютере). Подробно и формально изучаются регулярные языки, регулярные выражения, конечные автоматы и соответствующие формализации для контекстно-свободных языков. Вторая часть курса знакомит студентов с основами конструирования компиляторов. Подробно рассматриваются LL- и LR- синтаксические анализаторы, рассказывается о промежуточных представлениях программы в компиляторе и основных алгоритмах, используемых при генерации кода. Курс включает сдачу домашних практических заданий на C++, в которых студенты реализуют алгоритмы, изучаемые в рамках курса.
Цель освоения дисциплины
- Курс позволит понять математическую базу, используемую при реализации первого этапа (фронтэнда) компилятора, изучить структуру и схему работы компилятора, алгоритмы, необходимые для генерации ассемблерного кода. В результате освоения курса студент будет готов самостоятельно реализовать неоптимизирующий компилятор.
Планируемые результаты обучения
- Понятие формальных языков, порождение и распознавание языка. Формальные грамматики, классификация по Хомскому, пустое слово, рекурсивные, рекурсивно-перечислимые и неперечислимые языки.
- Регулярные языки, регулярные выражения, НКА, ДКА, построение РВ-> НКА->ДКА, РВ->ДКА, эквивалентность ДКА и НКА, построение РВ по КА, эквивалентность КА, РВ и регулярных грамматик, лемма о накачке, замкнутость регулярных языков, минимизация автоматов
- Возможности и практическое применение регулярных выражений (regexp)
- КС-языки, КС-грамматики, Деревья разбора, неоднозначность КС-грамматик, Автоматы с магазинной памятью (МП-автоматы), эквивалентность допускания по заключительному состоянию и пустому магазину, эквивалентность языков МП-автомата и КС-грамматик, детерминированные МП-автоматы (ДМП-автоматы), лемма о накачке для КС-языков, замкнутость КС-языков, нормальная форма Хомского (приведение к НФХ)
- Разбор КС-языка, алгоритм Кока-Янгера-Касами, общая схема работы компилятора, фазы компиляции
- Структура и схема работы нисходящего синтаксического анализатора, построение таблицы анализатора, LL(1)-,LL(k)-грамматики: критерий, приведение, удаление левой рекурсии, левая факторизация. Метод рекурсивного спуска. Восстановление после ошибок
- Структура и схема работы восходящего синтаксического анализатора, построение таблицы анализатора, LR(k)-грамматики, сравнение LL и LR анализаторов, восстановление после ошибок, виды LR-анализаторов.
- Атрибутные грамматики, синтаксически управляемые определения (СУО), порядок вычисления в СУО, схемы трансляции
- Генерация промежуточного кода, трехадресный код, представления программы в компиляторе, поток управления, ГПУ, планирование инструкций, распределение регистров.
Содержание учебной дисциплины
- Формальные языки
- Регулярные языки
- Regexp
- Контекстно-свободные языки
- Синтаксический анализ
- Нисходящий синтаксический анализ
- Восходящий синтаксический анализ
- Синтаксически управляемая трансляция
- Генерация кода
Элементы контроля
- КР_1Максимально – 20 баллов Стоимость задач указана в варианте.
- КР_2Максимально – 20 баллов Стоимость задач указана в варианте.
- ЭкзПисьменно, очно, решение задач и письменные ответы на вопросы. Максимально -- 30 баллов. Экзамен состоит из нескольких задач (6-8) и вопросов. Каждый оценивается в некоторое число баллов, указанное в варианте.
- ДЗМаксимальные оценки: 2 задачи на 10 баллов, 1 задача на 5 баллов. Баллы вычисляются автоматически тестирующей системой в зависимости от кол-ва пройденных тестов. Подробные правила выставления баллов, штрафов антиплагиата и проч. находятся на странице https://earth.ispras.ru/integrity.html Для получения баллов за задачу может потребоваться ее сдать преподавателю очно (или онлайн по уважительной причине) в отведенное время.
- КР_пКонтрольная работа на 30 минут на семинаре – 5 баллов макс. Балл вычисляется автоматически тестирующей системой на основе пройденных тестов и решенных заданий.
Промежуточная аттестация
- 2024/2025 4th moduleИтоговая оценка Final = (ДЗ+КР_п+КР_1+КР_2+Экз) определяется по суммарному количеству набранных баллов: Final = 5, 10-балльная оценка = 1; Final = 20, 10-балльная оценка = 2; Final = 30, 10-балльная оценка = 3; Final = 40, 10-балльная оценка = 4; Final = 50, 10-балльная оценка = 5; Final = 60, 10-балльная оценка = 6; Final = 65, 10-балльная оценка = 7; Final = 70, 10-балльная оценка = 8; Final = 80, 10-балльная оценка = 9; Final = 95, 10-балльная оценка = 10;
Список литературы
Рекомендуемая основная литература
- Cooper, K., & Torczon, L. (2012). Engineering a Compiler. San Francisco: Elsevier Ltd. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=354941
- Введение в теорию автоматов, языков и вычислений, Хопкрофт, Д. Э., 2016
- Компиляторы : принципы, технологии и инструментарий : пер. с англ., , 2019
- Компиляторы: принципы, технологии и инструменты, Ахо, А. В., 2011
- Серебряков, В. А. Теория и реализация языков программирования : учебное пособие / В. А. Серебряков. — Москва : ФИЗМАТЛИТ, 2012. — 236 с. — ISBN 978-5-9221-1417-2. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/5294 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Keith Cooper, & Linda Torczon. (2004). Engineering a Compiler. Morgan Kaufmann.
- Введение в теорию автоматов, языков и вычислений, Хопкрофт, Д. Э., 2002
- Компиляторы : принципы, технологии и инструментарий, Ахо, А. В., 2015
- Компиляторы: принципы, технологии и инструментарий, Ахо, А. В., 2008
- Теория и реализация языков программирования : учебное пособие / В. А. Серебряков, М. П. Галочкин, Д. Р. Гончар, М. Г. Фуругян. — 2-е изд. — Москва : ИНТУИТ, 2016. — 372 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100529 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.