Реализовать синтаксический разбор придуманного вами конфигурационного языка, основанного на S-выражениях (в которых у нас есть только скобки, пробелы и значения различных типов) для представления информации о студентах и группах (см. ПР 3.1).
1. Формат должен быть основан на грамматике, приведенной ниже. Детали формата на основе S-выражений необходимо продумать самостоятельно и обязательно описать их в БНФ. Формат должен поддерживать комментарии, типы данных: число, имя, строка.
2. Разбор реализовать средствами типа Lex/Yacc на выбранном ЯП (SLY в Python, Flex/Bison в C/C++, ANTLR в Java, ...).
3. После разбора результат преобразовать в JSON-представление. Пример из ПР 3.1 у вас должен получиться на выходе таким же и это надо показать в решении.
4. Программа должна иметь интерфейс командной строки: входным аргументом является имя конфигурационного файла, а результатом выполнения является вывод на экран (stdout) результата трансляции в JSON.
Дополнительный плюс за поддержку принципа DRY (то есть в язык можно добавить переменные, функции и так далее).
Базовая грамматика, которую необходимо реализовать и расширить для своих нужд (комментарии, представление data...):
::=
::= | '(' ')'
::= |
Конфликты shift/reduce, которые выдает Yacc-подобный инструмент, недопустимы. Они возникают, если у вас неоднозначная грамматика, то есть одному предложению языка могут соответствовать несколько вариантов разбора. В этом случае нужно поправить грамматику.
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |