- Загрузить репозиторий на компьютер. 'git clone https://github.com/YarLys/LanguageParser'
- Перейти в директорию проекта: 'cd LanguageParser'
- Выполнить инициализирующий скрипт: 'bash script.sh'. Также можно воспользоваться командой 'pip install lark'.
- Запустить программу командой: 'python main.py'.
- Ввести код исходной программы согласно заданию.
- Завершить ввод нажатием сочетания клавиш 'Ctrl + Z'.
Разработать инструмент командной строки для учебного конфигурационного языка, синтаксис которого приведен далее. Этот инструмент преобразует текст из входного формата в выходной. Синтаксические ошибки выявляются с выдачей сообщений. Входной текст на учебном конфигурационном языке принимается из стандартного ввода. Выходной текст на языке json попадает в стандартный вывод.
REM Это однострочный комментарий
<# Это многострочный комментарий #>
table([ имя = значение, имя = значение, имя = значение, ... ])
[_a-zA-Z]+
• Числа. • Строки. • Словари.
"Это строка"
имя: значение;
$(+ имя 1) Результатом вычисления константного выражения является значение.
- Сложение.
- Вычитание.
- Умножение.
- max().
Содержит функции по каждой возможности языка. Нужен для разбора дерева лексем.
Выполняет необходимые действия в зависимости от каждой лексемы, которая поступает ему в качестве аргумента.
Формирование дерева лексем, его разбор, формирование выходного текста в JSON-формате.
Ввод кода на учебном конфигурационном языке и вывод результата после преобразования.
REM Это пример с нахождением максимума
a: 40;
b: 20;
c: max(a, b);
{
"a": 40,
"b": 20,
"c": 40
}
REM Это пример со словарями
slovar([
privet = "hello",
num = 100,
dict_inside([
mir = "world",
test = 123
])
])
{
"slovar": [
{
"privet": "hello"
},
{
"num": 100
},
{
"dict_inside": [
{
"mir": "world"
},
{
"test": 123
}
]
}
]
}
first_const: "hello world";
second: 500;
third: "bye bye";
{
"first_const": "hello world",
"second": 500,
"third": "bye bye"
}








