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