loom

Форк
0
/
scriptc1.fuze 
93 строки · 2.9 Кб
1
/*  Описание грамматики языка сценариев (ЯС)
2

3
    Базовый вариант без списковых выражений и возвратов, объявления структур, функций и т.д.
4
*/
5

6
include "scriptc0";
7

8
main список_операторов_ЯС;
9

10
тип = ID                { ast.addNode(ast.op.Statement_Type, 0); }
11
    ;
12

13
оператор_ЯС
14
    = объявление_перечисления
15
    = объявление_интерфейса
16
    = объявление_структуры
17
    = объявление_класса
18
    ;
19

20
объявление_перечисления
21
    = "enum" ID "{" список_перечислений "}" ";"
22
    ;
23

24
список_перечислений
25
    = элемент_перечисления
26
    = список_перечислений "," элемент_перечисления
27
    ;
28

29
элемент_перечисления
30
    = ID
31
    = ID "=" значение_перечисления
32
    ;
33

34
значение_перечисления
35
    = NUMBER
36
    = ANNOTATION
37
    = ID
38
    ;
39

40

41
объявление_интерфейса
42
    = "interface" ID тело_интерфейса ";"
43
    = "interface" ID наследование тело_интерфейса ";"
44
    ;
45

46
наследование
47
    = ":" список_интерфейсов
48
    ;
49

50
список_интерфейсов
51
    = ID
52
    = список_интерфейсов "," ID
53
    ;
54

55
тело_интерфейса
56
    = "{" перечень_методов_интерфейса "}"
57
    ;
58

59
перечень_методов_интерфейса
60
    = объявление_функции
61
    = перечень_методов_интерфейса объявление_функции
62
    ;
63

64
объявление_структуры
65
    = "struct" ID "{" перечень_членов_структуры "}" ";"
66
    ;
67

68
перечень_членов_структуры
69
    = объявление_переменной
70
    = перечень_членов_структуры объявление_переменной
71
    ;
72

73
объявление_класса
74
    = "class" ID тело_класса ";"
75
    = "class" ID наследование тело_класса ";"
76
    ;
77

78
тело_класса
79
    = "{" перечень_членов_класса "}"
80
    ;
81

82
перечень_членов_класса
83
    = объявление_переменной
84
    = перечень_членов_класса объявление_переменной
85
    = определение_функции
86
    = перечень_членов_класса определение_функции
87
//    = определение_конструктора
88
//    = перечень_членов_класса определение_конструктора
89
    ;
90

91
//определение_конструктора
92
//    = имя_функции1 список_аргументов тело_функции
93
//    ;
94

95

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

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

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

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