Разработка с нуля. Разработать и реализовать интерпретатор мини-языка запросов, аналогичного SQL, для эмуляции работы с базой данных пользователей. Задание включает в себя: 1. Реализация парсера запросов (QueryParser) Создать парсер, который из строки команды строит объект запроса Query (или сообщает об ошибке парсинга). 2. Поддержка 4 типов команд: SELECT (с подкомандами FILTER, ORDER) INSERT REMOVE CLEAR Каждая команда имеет строгий синтаксис. Пробелы, порядок, регистр – критичны. 3. Работа с эмулированной базой данных База представлена классом Database (хранит список пользователей User). Пользователь имеет поля: id, firstName, lastName, city, age. 4. Реализация классов запросов (Query и QueryResult): SelectQuery, InsertQuery, RemoveQuery, ClearQuery – запросы SelectQueryResult, InsertQueryResult, RemoveQueryResult, ClearQueryResult – результаты Нужно реализовать только методы execute() и message() — остальное трогать нельзя. 5. Обработка ошибок Все некорректные команды должны обрабатываться без падения, с сообщением об ошибке (через ParsingResult::error). 6. Юнит-тестирование с JUnit 5 Обязательное покрытие кода тестами. Тесты должны быть независимыми, корректно проверяющими результат. 7. Оформление по правилам: Именование, структура проекта, отступы, длина строк — строго по документу «Правила оформления программ» [7†source]. 8. Формат сдачи: ZIP-архив IntelliJ-проекта строго по шаблону: HW3_<ГРУППА>_<ФИО>.zip Внутри: .idea, *.iml, src, test, возможно README.txt. Это краткое описание, есть файлы и шаблон с четким тз ВОЖНО: не использовать вовсе или использовать очень аккуратно ИИ, т.к. задание жестко проверяется через систему антиплагиат и кураторами.