loom

Форк
0
/
json5-object.fuze 
55 строк · 2.2 Кб
1
/*  Описание грамматики объекта данных
2

3
    SIMODO Base Language.
4

5
    MIT License
6

7
    Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
8

9
    https://bmstu.codes/lsx/simodo/stars
10
*/
11

12
main структура_объекта;
13

14
include "expression";
15

16
структура_объекта
17
    = знак_начала_объекта перечень_элементов_объекта "}" {
18
                                ast.goParent();
19
                            }
20
    = знак_начала_объекта "}" {
21
                                ast.goParent();
22
                            }
23
    ;
24
    знак_начала_объекта
25
        = "{"               {
26
                                ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.ObjectStructure, 0);
27
                            }
28
        ;
29
    перечень_элементов_объекта
30
        = список_элементов_объекта
31
        = список_элементов_объекта ","
32
        ;
33
        список_элементов_объекта
34
            = элемент_объекта
35
            = список_элементов_объекта "," элемент_объекта
36
            ;
37
            элемент_объекта
38
                = наименование_элемента_объекта разделитель_элемента_объекта значение_элемента_объекта {
39
                                ast.goParent();
40
                            }
41
                ;
42
                наименование_элемента_объекта
43
                    = ANNOTATION {
44
                                ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.None, 0);
45
                            }
46
                    = ID    {
47
                                ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.None, 0);
48
                            }
49
                    ;
50
                разделитель_элемента_объекта
51
                    = ":"
52
                    ;
53
                значение_элемента_объекта
54
                    = выражение
55
                    ;
56

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.