Лабораторная №3 — задание 3.1D #
Нужно создать пустой модуль синтаксического анализа и написать для него список тестов.
⚠️ Обратите внимание #
Это задание выполняется по спецификации грамматики выражений, подготовленной аналитиком в задании 3.2A.
- Спецификация должна появиться до начала кодирования — так же, как и в реальных проектах.
- Вы можете составлять спецификацию совместно с аналитиком, а затем приступить к реализации.
- Ждать проверки спецификации преподавателем не нужно.
Порядок выполнения #
- Получите спецификацию грамматики выражений для своего языка программирования у аналитика
- Создайте пустой проект реализации:
dotnet new classlib -o src/Parser- добавьте его в решение:
dotnet sln add src/Parser - добавьте ссылку на библиотеку лексического анализа:
dotnet add src/Parser reference src/Lexer
- добавьте его в решение:
- Создайте пустой проект тестов:
dotnet new xunit -o tests/Parser.UnitTests- добавьте его в решение:
dotnet sln add tests/Parser.UnitTests - добавьте ссылку на библиотеку из проекта тестов:
dotnet add tests/Parser.UnitTests reference src/Parser
- добавьте его в решение:
- Создайте список тестов
tests/Parser.UnitTests/TESTLIST.md - Заполните список тестов всеми сценариями, которые вы можете придумать по спецификации
Реализация синтаксического разбора будет в следующем задании.
Формат списка тестов #
Список тестов должен находится в модуле синтаксического анализа и называется TESTLIST.md
- Тесты описываются кратко в формате TODO-списка:
- [ ] ваш текст - Пройденные тесты обозначаются латинской буквой “x”:
- [x] ваш текст
Пример заполнения:
# Список тестов
## Список сценариев
- [ ] Разбор выражения из одного числа: `2025`
- [ ] Разбор сложения и вычитания: `1.128 + 7.5 - 8`
- [ ] Учёт левой ассоциативности при вычитании: `1.128 - 8 + 7.5`
Пример MemSql #
Можно ориентироваться на Пример MemSql
Список тестов в примере: tests/SqlParser.UnitTests/TESTLIST.md