Проект: интерпретатор (5 семестр)

Проект: интерпретатор (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 нужно делать от своего лица, иначе вклад не засчитаем;
  • В конце курса — пишем одностраничный отчёт (личный вклад + самооценка).

Примеры зон ответственности #

  1. Спецификация языка
  2. Приёмочные тесты
  3. Лексер
  4. Парсер
  5. AST
  6. Интерпретация AST без VM
  7. Кодогенерация для VM
  8. Спецификация VM
  9. Реализация VM
  10. LSP-сервер
  11. VSCode