Skip to content

Latest commit

 

History

History
80 lines (64 loc) · 2.41 KB

README.md

File metadata and controls

80 lines (64 loc) · 2.41 KB

Домашнее задание №3

Разработать инструмент командной строки для учебного конфигурационного языка, синтаксис которого приведен далее. Этот инструмент преобразует текст из входного формата в выходной. Синтаксические ошибки выявляются с выдачей сообщений.

Входной текст на языке 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"
)
))

Результаты тестов

image