1
/* Описание грамматики ПОЯ системы дифференциальных уравнений
4
lex.addMarkup("/*", "*/", "", lex.LexemeType.Comment);
5
lex.addMarkup("//", "", "", lex.LexemeType.Comment);
6
lex.setNationalLettersMix(false);
7
lex.setNewLineSubstitution(";");
11
// Номер потока 0 используется для отката к последнему номеру, т.к.
12
// в языке fuze не предусмотрены отрицательные константы :)
15
ast.addNode("", 20, "");
16
ast.addNode("", 2, "empty");
17
ast.addNode("", 15, "");
18
// ast.addNode_once("", 16, "__ignore_double_declaration");
22
ast.addNode("", 20, "");
26
ast.addNode("", 2, "auto");
27
ast.addNode("", 15, "");
28
ast.addNode("", 2, "tethered");
29
ast.addNode("", 15, "");
30
ast.addNode("", 16, "__equetions__");
31
ast.addNode_StepInto("", 17, "=");
32
ast.addNode_StepInto("", 31, "");
33
ast.addNode_StepInto("", 3107, "");
34
ast.addNode("", 2, "math");
35
ast.addNode_StepInto("", 92, "");
36
ast.addNode_StepInto("", 7, "");
40
ast.addNode("", 19, "");
41
ast.addNode("", 20, "");
42
ast.addNode("", 2, "auto");
43
ast.addNode("", 15, "");
44
ast.addNode("", 16, "__rights__");
45
ast.addNode_StepInto("", 17, "=");
46
ast.addNode_StepInto("", 31, "");
47
ast.addNode_StepInto("", 3103, "");
48
ast.addNode("", 2, "self");
49
ast.addNode("", 15, "");
50
ast.addNode("", 16, "__state");
51
ast.addNode("", 20, "");
52
ast.addNode("", 2, "float");
53
ast.addNode("", 15, "");
54
ast.addNode("", 16, "t");
55
ast.addNode("", 20, "");
57
ast.addNode_StepInto("", 3107, "");
58
ast.addNode("", 2, "object");
59
ast.addNode("", 15, "");
60
ast.addNode("", 16, "__d");
61
ast.addNode("", 20, "");
62
ast.addNode("", 2, "__state");
63
ast.addNode_StepInto("", 92, "");
64
ast.addNode_StepInto("", 7, "");
65
ast.addNode("", 2, "math");
66
ast.addNode_StepInto("", 92, "");
67
ast.addNode_StepInto("", 7, "");
76
ast.addNode("", 0, "");
79
ast.addNode("", 0, "");
82
ast.addNode("", 32, "");
86
ast.addNode("", 0, "");
89
ast.addNode("", 0, "");
92
ast.addNode("", 2, "__d");
93
ast.addNode("", 35, "");
94
ast.addNode("", 0, "");
97
ast.addNode("", 32, "");
99
ast.addNode("", 19, "");
100
ast.addNode("", 20, "");
107
include "include/expression.fuze";
108
//include "include/declarations-definitions";
110
remove переменная = ID;
114
ast.addNode(ast.sbl.host, ast.sbl.op.PushVariable, 0);
116
ast.addNode_once(ast.sbl.host, ast.sbl.op.DeclarationOnce, 0);
122
= список_операторов {
124
ast.addNode(ast.sbl.host, ast.sbl.op.CheckState, 0);
126
= список_операторов ";" {
128
ast.addNode(ast.sbl.host, ast.sbl.op.CheckState, 0);
134
= список_операторов ";" оператор
139
= дифференциальное_уравнение
144
= левая_часть_простого_уравнения правая_часть_присваивания {
150
правая_часть_присваивания
154
левая_часть_простого_уравнения
157
ast.addNode_once(ast.sbl.host, ast.sbl.op.DeclarationOnce, 0);
161
ast.addNode(ast.sbl.host, 2, 0);
162
ast.addNode_StepInto(ast.sbl.host, 21, 1);
166
дифференциальное_уравнение
167
= левая_часть_дифференциального_уравнения выражение {
173
левая_часть_дифференциального_уравнения
176
ast.addNode_once(ast.sbl.host, ast.sbl.op.DeclarationOnce, 0);
180
ast.addNode("", 2, 0);
181
ast.addNode("", 3, "spec");
182
ast.addNode_StepInto("", 9, 1);
183
ast.addNode("", 1, "differential");
185
ast.addNode_StepInto("", 21, 1);
186
ast.addNode("", 1, true);
191
ast.addNode("", 2, "__d");
192
ast.addNode_StepInto("", 9, 1);
193
ast.addNode("", 1, 0);
195
ast.addNode_StepInto("", 21, 2);
200
= контракт_импорта ":" список_определений_переменных
205
ast.addNode(ast.sbl.host, ast.sbl.op.Announcement, 0);
210
= импорт_обязательная_часть >
212
= импорт_обязательная_часть выражение
216
импорт_обязательная_часть
217
= "import" ANNOTATION { ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.Import, 1); }
218
= "import" ID { ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.Import, 1); }
221
список_определений_переменных
222
= объявление_или_определение_переменной
223
= список_определений_переменных "," объявление_или_определение_переменной
226
объявление_или_определение_переменной
227
= объявление_переменной
228
= объявление_переменной инициализация_переменной
232
= ID { ast.addNode(ast.sbl.host, ast.sbl.op.DeclarationOnce, 0); }
235
инициализация_переменной
236
= знак_инициализации правая_часть_присваивания
237
{ ast.goParent(); ast.addNode(ast.sbl.host, ast.sbl.op.PostInitialize, 0); }
241
= "=" { ast.addNode_StepInto(ast.sbl.host, ast.sbl.op.Initialize, 0); }
244
правая_часть_присваивания