===== Материалы курса (gram:materials) ===== === Лекции === ^ Номер ^ Тема ^ Материалы ^ Дополнительно ^ | **Лекция 1** | Введение в формальные языки. Иерархия Хомского. Регулярные языки и конечные автоматы. Регулярные языки и конечные автоматы. ДКА/НКА: преобразования и минимизация. | {{:gram:lec-1.pdf|}} | {{:gram:formal-langs-lecture1-20251114.zip|исходники}} | | **Лекция 2** | Теория трансляции. Лексический анализ, Синтаксический анализ. AST. Примеры | {{:gram:lec-2-translators.pdf|}} | FIXME | | **Лекция 2** | Теория трансляции. Семантический анализ. Аспекты представления. Примеры | {{:gram:lec-3-sem.pdf|}} | FIXME | | **Лекция 2** | Регулярные языки и конечные автоматы | {{:gram:mat:lec-2.pdf|}} | [[gram:lec-2-slides|Слайды]] | | **Лекция 3** | ДКА/НКА: преобразования и минимизация | {{:gram:mat:lec-3.pdf|}} | [[gram:lec-3-slides|Слайды]] | | **Лекция 4** | Контекстно-свободные грамматики | {{:gram:mat:lec-4.pdf|}} | [[gram:lec-4-slides|Слайды]] | | **Лекция 5** | Автоматы с магазинной памятью | {{:gram:mat:lec-5.pdf|}} | [[gram:lec-5-slides|Слайды]] | | **Лекция 6** | Синтаксический анализ: LL(1) | {{:gram:mat:lec-6.pdf|}} | [[gram:lec-6-slides|Слайды]] | | **Лекция 7** | Синтаксический анализ: LR(1) | {{:gram:mat:lec-7.pdf|}} | [[gram:lec-7-slides|Слайды]] | | **Лекция 8** | Генерация кода с LLVM | {{:gram:mat:lec-8.pdf|}} | [[gram:lec-8-slides|Слайды]] | === Лабораторные работы === ^ Номер ^ Тема ^ Задание ^ Шаблоны ^ Примеры ^ | **ЛР1** | Лексический анализ | {{:gram:mat:lab-1-task.pdf|}} | {{:gram:mat:lab-1-template.zip|}} | {{:gram:mat:lab-1-example.zip|}} | | **ЛР2** | Синтаксический анализ | {{:gram:mat:lab-2-task.pdf|}} | {{:gram:mat:lab-2-template.zip|}} | {{:gram:mat:lab-2-example.zip|}} | | **ЛР3** | Семантический анализ | {{:gram:mat:lab-3-task.pdf|}} | {{:gram:mat:lab-3-template.zip|}} | {{:gram:mat:lab-3-example.zip|}} | | **ЛР4** | Генерация кода | {{:gram:mat:lab-4-task.pdf|}} | {{:gram:mat:lab-4-template.zip|}} | {{:gram:mat:lab-4-example.zip|}} | === Практические занятия === ^ Номер ^ Тема ^ Задачи ^ Решения ^ | **ПЗ1** | Регулярные выражения и автоматы | {{:gram:mat:prac-1-tasks.pdf|}} | {{:gram:mat:prac-1-solutions.pdf|}} | | **ПЗ2** | КС-грамматики и парсеры | {{:gram:mat:prac-2-tasks.pdf|}} | {{:gram:mat:prac-2-solutions.pdf|}} | | **ПЗ3** | Синтаксические анализаторы | {{:gram:mat:prac-3-tasks.pdf|}} | {{:gram:mat:prac-3-solutions.pdf|}} | | **ПЗ4** | Генерация LLVM IR | {{:gram:mat:prac-4-tasks.pdf|}} | {{:gram:mat:prac-4-solutions.pdf|}} | === Инструменты и документация === - **ANTLR4** - [[https://www.antlr.org/|Официальный сайт]] - [[https://github.com/antlr/antlr4|GitHub репозиторий]] - {{:gram:mat:antlr4-guide.pdf|Краткое руководство}} - {{:gram:mat:antlr4-grammars.zip|Примеры грамматик}} - **LLVM** - [[https://llvm.org/|Официальный сайт]] - [[https://llvm.org/docs/tutorial/|Туториалы]] - {{:gram:mat:llvm-reference.pdf|Справочник по IR}} - {{:gram:mat:llvm-examples.zip|Примеры кода}} - **Вспомогательные инструменты** - [[https://regex101.com/|Regex101 - тестирование регулярных выражений]] - [[https://astexplorer.net/|AST Explorer - визуализация AST]] - [[https://godbolt.org/|Compiler Explorer - анализ кода]] === Примеры проектов === ^ Уровень ^ Проект ^ Описание ^ Исходный код ^ | Начальный | Калькулятор выражений | Арифметические выражения с переменными | {{:gram:mat:example-calculator.zip|}} | | Средний | Мини-язык запросов | SQL-подобный язык для фильтрации данных | {{:gram:mat:example-querylang.zip|}} | | Продвинутый | Декларативный конфигуратор | Язык для описания конфигураций систем | {{:gram:mat:example-configlang.zip|}} | | Экспертный | Полноценный компилятор | Статически типизированный язык программирования | {{:gram:mat:example-minilang.zip|}} | === Полезные ресурсы === - **Книги и учебники** - "The Definitive ANTLR 4 Reference" - Terence Parr - "Compilers: Principles, Techniques, and Tools" - Aho, Ullman et al. - "Engineering a Compiler" - Cooper, Torczon - **Онлайн-курсы** - [[https://www.coursera.org/learn/compilers|Coursera: Compilers]] - [[https://online.stanford.edu/courses/soe-ycscs1-compilers|Stanford: Compilers]] - **Сообщества** - [[https://stackoverflow.com/questions/tagged/antlr|Stack Overflow: ANTLR]] - [[https://llvm.org/docs/GettingInvolved.html|LLVM Community]] === График обновлений === **Последнее обновление:** 14.11.2025 - Добавлены материалы Лекции 1 - Обновлены задания для ЛР1 - Добавлены примеры проектов - Загружена документация по ANTLR4 **Планируемые обновления:** - 21.11.2025: Материалы Лекций 2-3 - 28.11.2025: Примеры решения практических задач - 05.12.2025: Видеозаписи лекций ---- [[gram:main|← Назад на главную]] | [[gram:cd|Описание курса]] | [[gram:labs|Лабораторные работы]]