Разработать инструмент командной строки для учебного конфигурационного языка, синтаксис которого приведен далее. Этот инструмент преобразует текст из входного формата в выходной. Синтаксические ошибки выявляются с выдачей сообщений.
Входной текст на языке json принимается из файла, путь к которому задан ключом командной строки. Выходной текст на учебном конфигурационном языке попадает в стандартный вывод.
Однострочные комментарии:
C Это однострочный комментарий
Словари:
table(
имя => значение,
имя => значение,
имя => значение,
...
)
Имена:
[a-zA-Z][_a-zA-Z0-9]*
Значения:
• Числа.
• Строки.
• Словари.
Строки:
"Это строка"
Объявление константы на этапе трансляции:
(def имя значение)
Вычисление константы на этапе трансляции:
|имя|
Результатом вычисления константного выражения является значение.
Все конструкции учебного конфигурационного языка (с учетом их возможной вложенности) должны быть покрыты тестами.
Входной файл на языке json:
{
"comment": "configuration example",
"player": {
"name": "Player1",
"health": "100",
"level": "1",
"inventory": {
"weapon": "sword",
"items": "potion"
}
}
}
Выходной файл на учебном конфигурационном языке:
C configuration example
(def comment "configuration example")
(def player table(
name => "Player1",
health => "100",
level => "1",
inventory => table(
weapon => "sword",
items => "potion"
)
))