Задание 6.2E

Лабораторная №6 — задание 6.2E #

Нужно реализовать и покрыть тестами проверки семантики типов данных в утилите проверки программ, основанной на ANTLR4.

⚠️ Обратите внимание #

Это задание выполняется по спецификации правил семантики, подготовленной аналитиком в задании 6.2A.

  • Спецификация должна появиться до начала кодирования — так же, как и в реальных проектах.
  • Вы можете составлять спецификацию совместно с аналитиком, а затем приступить к реализации.
  • Ждать проверки спецификации преподавателем не нужно.

Порядок выполнения #

  1. Получите спецификацию семантики для своего языка программирования у аналитика
  2. Получите у разработчика (или напишите вместе с ним) список тестов в формате markdown
  3. Получите у разработчика (или напишите вместе с ним) модуль Semantics, выполняющий семантические проверки AST
  4. Подключите этот модуль к своей утилите проверки программ на основе ANTLR4

Другими словами, вы частично переиспользуете код вместе с разработчиком:

  • в утилите проверки программ вы используете свой лексер/парсер на базе ANTLR4, а также общие модули Ast и Semantics
  • в интерпретаторе разработчик использует свой рукописный лексер/парсер, а также общие модули Ast и Semantics

Требования к тестам #

  1. Тесты должны покрывать как семантику типов, так и прочие правила семантики
  2. Должны быть тесты различных типов
    • позитивные тесты программ, правильных с точки зрения синтаксиса и семантики (из прошлых заданий)
    • негативные тесты программ, неправильных с точки зрения синтаксиса (из прошлых заданий)
    • негативные тесты программ, неправильных с точки зрения семантики (новые тесты)

В тестах достаточно проверять, что:

  • в позитивных тестах AST построено без выброса исключения
  • в негативных тестах выброшено исключение ожидаемого типа