Проект: интерпретатор (5 семестр) #
Цель курса #
Цель курса ТАиФЯ — разработать интерпретатор со всеми фазами фронтенда компилятора:
- Лексический анализ — ручной разбор с генерацией потока токенов
- Синтаксический анализ — рекурсивный спуск с построением AST
- Семантический анализ — добавление атрибутов в AST и проверка семантической корректности программы
Итерации и оценка #
Проект имеет от 3 до 7 итераций:
- На оценку 5 (отлично) нужно сделать 7 итераций и набрать 90 баллов РИТМ
- На оценку 4 (хорошо) нужно сделать 5 итераций и набрать 75 баллов РИТМ
- На оценку 3 (посредственно) нужно сделать 3 итерации и набрать 60 баллов РИТМ
Языки программирования #
Доступно три на выбор: Go, C#, C++.
Выбор можно поменять в процессе, но придётся всё переписывать и заново устранять замечания по коду.
Три дорожки #
Есть три варианта — три дорожки разного уровня сложности.
🟢 Зелёная дорожка #
Цель: интерпретатор без VM (recursive interpreter с AST).
Состав команды: до 2 человек.
🟡 Жёлтая дорожка #
Цель: интерпретатор со своей VM (кодогенерация из AST в байт-код VM).
Состав команды: до 3 человек.
🔴 Красная дорожка #
Цель: интерпретатор со своей VM + IDE (LSP-сервер и плагин VSCode).
Состав команды: до 5 человек.
Личный вклад #
Каждый член команды должен внести свой вклад и иметь не менее одной зоны ответственности:
- Вклад — это конкретный результат, а не просто «почитал, изучил» или «попытался сделать»;
- Все коммиты в Git нужно делать от своего лица, иначе вклад не засчитаем;
- В конце курса — пишем одностраничный отчёт (личный вклад + самооценка).
Примеры зон ответственности #
- Спецификация языка
- Приёмочные тесты
- Лексер
- Парсер
- AST
- Интерпретация AST без VM
- Кодогенерация для VM
- Спецификация VM
- Реализация VM
- LSP-сервер
- VSCode