Основы методов трансляции
3 курс, 5 семестр Язык: русский
Описание
В данном курсе обучающиеся создадут свой собственный компилятор, используя LLVM для генерации кода.
Ключевые особенности:
- Свободный выбор языка для реализации компилятора
- Постепенное расширение возможностей исходного языка
- Автоматическое тестирование каждой стадии компиляции
- Созданный компилятор послужит основой для следующего семестра
Преподаватель
-
Трепаков Иван Сергеевич
Организация курса
Данный курс состоит из 5 модулей, заключающихся в реализации компилятора для постепенно расширяющегося языка:
- Бестиповый язык выражений (6 недель)
- Управляющие конструкции (2 недели)
- Функции (2 недели)
- Типовая система (2 недели)
- Структуры и массивы (2 недели)
В первом модуле происходит знакомство с инфраструктурой, первая реализация лексера, парсера и генерации LLVM IR. В остальных модулях происходит расширение языка функциональностью, которая требует поддержки на различных стадиях текущей версии компилятора.
Итоговая оценка
Итоговая оценка выставляется по результатам выполнения модулей:
- 5 — выполнены все 5 модулей
- 4 — выполнены 4 из 5 модулей
- 3 — выполнены 3 из 5 модулей
Практика
Практическая часть данного курса заключается в разработке компилятора, на базе стартового репозитория nsu-syspro/compiler-base. Каждый студент создает собственный fork стартового репозитория, и всю дальнейшую разработку ведет в нем.
Стартовый репозиторий содержит грамматики для всех 5 модулей, систему тестирования, а также набор тестов к каждому модулю на результаты работы каждой стадии компиляции (поток токенов и AST в виде JSON, код возврата и ожидаемый вывод). Обучающимся настоятельно рекомендуется добавлять свои тесты для улучшения тестового покрытия собственного компилятора.
Для разработки можно использовать любой язык программирования и обязательно настроить систему автоматического тестирования на каждое изменение.
Саму разработку каждого модуля необходимо вести в отдельной ветке (в процессе можно делать PR в эту ветку, если нужно), на которую в итоге должен быть создан PR, который должен будет пройти ревью преподавателя.
В связи со свободным выбором языка для реализации, ревью будет проводиться с точки зрения архитектуры компилятора, а не качества кода реализации.
Материалы
Презентации: nsu-syspro/compiler-slides
Стартовый репозиторий: nsu-syspro/compiler-base
Занятия
Бестиповый язык выражений
| Дата | Тема | Презентация |
|---|---|---|
| Введение | Introduction | |
| 07.09.2026 | Знакомство с архитектурой |