loom
1/* Описание грамматики объекта данных
2
3SIMODO Base Language.
4
5MIT License
6
7Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
8
9https://bmstu.codes/lsx/simodo/stars
10*/
11
12main структура_объекта;
13
14include "expression";
15
16структура_объекта
17= знак_начала_объекта перечень_элементов_объекта "}" {
18ast.goParent();
19}
20= знак_начала_объекта "}" {
21ast.goParent();
22}
23;
24знак_начала_объекта
25= "{" {
26ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.ObjectStructure, 0);
27}
28;
29перечень_элементов_объекта
30= список_элементов_объекта
31= список_элементов_объекта ","
32;
33список_элементов_объекта
34= элемент_объекта
35= список_элементов_объекта "," элемент_объекта
36;
37элемент_объекта
38= наименование_элемента_объекта разделитель_элемента_объекта значение_элемента_объекта {
39ast.goParent();
40}
41;
42наименование_элемента_объекта
43= ANNOTATION {
44ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.None, 0);
45}
46= ID {
47ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.None, 0);
48}
49;
50разделитель_элемента_объекта
51= ":"
52;
53значение_элемента_объекта
54= выражение
55;
56