@rsconcept/domain 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +3 -3
  2. package/dist/analyzer-DlSq3Y3r.d.ts +39 -0
  3. package/dist/arguments-extractor-1acwjQNc.d.ts +38 -0
  4. package/dist/ast-C8sIpKdL.d.ts +51 -0
  5. package/dist/ast-annotations-BiMjkKvz.d.ts +16 -0
  6. package/dist/branded-ZlzIcxzu.d.ts +9 -0
  7. package/dist/calculator-C9W2jkSx.d.ts +39 -0
  8. package/dist/cctext/index.d.ts +2 -1
  9. package/dist/cctext/index.js +2 -42
  10. package/dist/cctext/language-api.d.ts +10 -12
  11. package/dist/cctext/language-api.js +157 -227
  12. package/dist/cctext/language-api.js.map +1 -1
  13. package/dist/cctext/language.d.ts +24 -22
  14. package/dist/cctext/language.js +43 -39
  15. package/dist/cctext/language.js.map +1 -1
  16. package/dist/error-E1LVq_3w.d.ts +87 -0
  17. package/dist/graph/graph.d.ts +2 -62
  18. package/dist/graph/graph.js +339 -382
  19. package/dist/graph/graph.js.map +1 -1
  20. package/dist/graph/index.d.ts +2 -1
  21. package/dist/graph/index.js +2 -384
  22. package/dist/graph-DR8rL2o3.d.ts +64 -0
  23. package/dist/hash-Y8I4c6Al.d.ts +8 -0
  24. package/dist/index-BKZ67WMa.d.ts +1 -0
  25. package/dist/index-BVVgDSdq.d.ts +1 -0
  26. package/dist/index-DmtQKWjk.d.ts +1 -0
  27. package/dist/index-_6s0AX1B.d.ts +1 -0
  28. package/dist/index.d.ts +27 -28
  29. package/dist/index.js +23 -5851
  30. package/dist/lezer-tree-iS7LpLBJ.d.ts +14 -0
  31. package/dist/library/folder-tree.d.ts +22 -20
  32. package/dist/library/folder-tree.js +108 -130
  33. package/dist/library/folder-tree.js.map +1 -1
  34. package/dist/library/index.d.ts +8 -17
  35. package/dist/library/index.js +7 -2800
  36. package/dist/library/library-api.d.ts +3 -1
  37. package/dist/library/library-api.js +9 -8
  38. package/dist/library/library-api.js.map +1 -1
  39. package/dist/library/library.d.ts +2 -56
  40. package/dist/library/library.js +23 -19
  41. package/dist/library/library.js.map +1 -1
  42. package/dist/library/oss-api.d.ts +26 -37
  43. package/dist/library/oss-api.js +258 -1096
  44. package/dist/library/oss-api.js.map +1 -1
  45. package/dist/library/oss-layout-api.d.ts +28 -28
  46. package/dist/library/oss-layout-api.js +239 -316
  47. package/dist/library/oss-layout-api.js.map +1 -1
  48. package/dist/library/oss-layout.d.ts +2 -25
  49. package/dist/library/oss-layout.js +1 -1
  50. package/dist/library/oss.d.ts +87 -89
  51. package/dist/library/oss.js +27 -26
  52. package/dist/library/oss.js.map +1 -1
  53. package/dist/library/rsengine.d.ts +100 -106
  54. package/dist/library/rsengine.js +439 -2599
  55. package/dist/library/rsengine.js.map +1 -1
  56. package/dist/library/rsform-api.d.ts +11 -16
  57. package/dist/library/rsform-api.js +313 -825
  58. package/dist/library/rsform-api.js.map +1 -1
  59. package/dist/library/rsform.d.ts +159 -167
  60. package/dist/library/rsform.js +29 -28
  61. package/dist/library/rsform.js.map +1 -1
  62. package/dist/library/rsmodel-api.d.ts +8 -15
  63. package/dist/library/rsmodel-api.js +172 -813
  64. package/dist/library/rsmodel-api.js.map +1 -1
  65. package/dist/library/rsmodel.d.ts +27 -33
  66. package/dist/library/rsmodel.js +16 -23
  67. package/dist/library/rsmodel.js.map +1 -1
  68. package/dist/library/structure-planner.d.ts +20 -26
  69. package/dist/library/structure-planner.js +106 -474
  70. package/dist/library/structure-planner.js.map +1 -1
  71. package/dist/library-CYun28Xz.d.ts +58 -0
  72. package/dist/oss-layout-3glgAqfn.d.ts +27 -0
  73. package/dist/parser-Bwd8LxJ1.d.ts +7 -0
  74. package/dist/parsing/ast.d.ts +2 -49
  75. package/dist/parsing/ast.js +68 -76
  76. package/dist/parsing/ast.js.map +1 -1
  77. package/dist/parsing/index.d.ts +3 -3
  78. package/dist/parsing/index.js +3 -141
  79. package/dist/parsing/lezer-tree.d.ts +2 -13
  80. package/dist/parsing/lezer-tree.js +50 -43
  81. package/dist/parsing/lezer-tree.js.map +1 -1
  82. package/dist/rslang/api.d.ts +9 -14
  83. package/dist/rslang/api.js +114 -827
  84. package/dist/rslang/api.js.map +1 -1
  85. package/dist/rslang/ast-annotations.d.ts +2 -18
  86. package/dist/rslang/ast-annotations.js +34 -45
  87. package/dist/rslang/ast-annotations.js.map +1 -1
  88. package/dist/rslang/error.d.ts +2 -85
  89. package/dist/rslang/error.js +88 -150
  90. package/dist/rslang/error.js.map +1 -1
  91. package/dist/rslang/eval/calculator.d.ts +2 -43
  92. package/dist/rslang/eval/calculator.js +81 -1636
  93. package/dist/rslang/eval/calculator.js.map +1 -1
  94. package/dist/rslang/eval/evaluation-cache.d.ts +22 -26
  95. package/dist/rslang/eval/evaluation-cache.js +168 -287
  96. package/dist/rslang/eval/evaluation-cache.js.map +1 -1
  97. package/dist/rslang/eval/evaluator.d.ts +59 -63
  98. package/dist/rslang/eval/evaluator.js +602 -1509
  99. package/dist/rslang/eval/evaluator.js.map +1 -1
  100. package/dist/rslang/eval/value-api.d.ts +2 -48
  101. package/dist/rslang/eval/value-api.js +2 -490
  102. package/dist/rslang/eval/value.d.ts +2 -36
  103. package/dist/rslang/eval/value.js +2 -118
  104. package/dist/rslang/index.d.ts +14 -17
  105. package/dist/rslang/index.js +12 -4314
  106. package/dist/rslang/labels.d.ts +6 -6
  107. package/dist/rslang/labels.js +139 -305
  108. package/dist/rslang/labels.js.map +1 -1
  109. package/dist/rslang/parser/expression-generator.d.ts +5 -5
  110. package/dist/rslang/parser/expression-generator.js +248 -446
  111. package/dist/rslang/parser/expression-generator.js.map +1 -1
  112. package/dist/rslang/parser/normalize.d.ts +4 -8
  113. package/dist/rslang/parser/normalize.js +286 -481
  114. package/dist/rslang/parser/normalize.js.map +1 -1
  115. package/dist/rslang/parser/parser.d.ts +2 -5
  116. package/dist/rslang/parser/parser.js +30 -21
  117. package/dist/rslang/parser/parser.js.map +1 -1
  118. package/dist/rslang/parser/parser.terms.d.ts +43 -41
  119. package/dist/rslang/parser/parser.terms.js +44 -83
  120. package/dist/rslang/parser/parser.terms.js.map +1 -1
  121. package/dist/rslang/parser/syntax-errors.d.ts +5 -8
  122. package/dist/rslang/parser/syntax-errors.js +113 -382
  123. package/dist/rslang/parser/syntax-errors.js.map +1 -1
  124. package/dist/rslang/parser/token.d.ts +2 -79
  125. package/dist/rslang/parser/token.js +81 -93
  126. package/dist/rslang/parser/token.js.map +1 -1
  127. package/dist/rslang/semantic/analyzer.d.ts +2 -39
  128. package/dist/rslang/semantic/analyzer.js +186 -2600
  129. package/dist/rslang/semantic/analyzer.js.map +1 -1
  130. package/dist/rslang/semantic/arguments-extractor.d.ts +2 -42
  131. package/dist/rslang/semantic/arguments-extractor.js +202 -361
  132. package/dist/rslang/semantic/arguments-extractor.js.map +1 -1
  133. package/dist/rslang/semantic/type-auditor.d.ts +64 -68
  134. package/dist/rslang/semantic/type-auditor.js +594 -1564
  135. package/dist/rslang/semantic/type-auditor.js.map +1 -1
  136. package/dist/rslang/semantic/typification-api.d.ts +4 -7
  137. package/dist/rslang/semantic/typification-api.js +162 -303
  138. package/dist/rslang/semantic/typification-api.js.map +1 -1
  139. package/dist/rslang/semantic/typification-parser.d.ts +2 -12
  140. package/dist/rslang/semantic/typification-parser.js +165 -219
  141. package/dist/rslang/semantic/typification-parser.js.map +1 -1
  142. package/dist/rslang/semantic/typification.d.ts +2 -119
  143. package/dist/rslang/semantic/typification.js +66 -52
  144. package/dist/rslang/semantic/typification.js.map +1 -1
  145. package/dist/rslang/semantic/value-auditor.d.ts +32 -38
  146. package/dist/rslang/semantic/value-auditor.js +206 -518
  147. package/dist/rslang/semantic/value-auditor.js.map +1 -1
  148. package/dist/rslang/semantic/value-class.d.ts +2 -10
  149. package/dist/rslang/semantic/value-class.js +8 -7
  150. package/dist/rslang/semantic/value-class.js.map +1 -1
  151. package/dist/rslang/typification-graph.d.ts +2 -33
  152. package/dist/rslang/typification-graph.js +94 -306
  153. package/dist/rslang/typification-graph.js.map +1 -1
  154. package/dist/shared/branded.d.ts +2 -7
  155. package/dist/shared/branded.js +1 -1
  156. package/dist/shared/hash.d.ts +2 -6
  157. package/dist/shared/hash.js +13 -13
  158. package/dist/shared/hash.js.map +1 -1
  159. package/dist/shared/index.d.ts +3 -2
  160. package/dist/shared/index.js +2 -18
  161. package/dist/token-DeXAmzwr.d.ts +81 -0
  162. package/dist/typification-Dk-fisgO.d.ts +120 -0
  163. package/dist/typification-graph-6HcZ-rKH.d.ts +30 -0
  164. package/dist/typification-parser-BBVx1RxP.d.ts +13 -0
  165. package/dist/value-B8UtCqaK.js +366 -0
  166. package/dist/value-B8UtCqaK.js.map +1 -0
  167. package/dist/value-CTjX6825.d.ts +33 -0
  168. package/dist/value-api-Bw-SgaYY.d.ts +49 -0
  169. package/dist/value-class-CNI-lqXJ.d.ts +12 -0
  170. package/package.json +8 -8
  171. package/src/library/oss-api.test.ts +76 -0
  172. package/src/library/oss-api.ts +4 -1
  173. package/src/library/rsform-api.test.ts +24 -0
  174. package/src/library/rsform-api.ts +12 -4
  175. package/dist/cctext/index.js.map +0 -1
  176. package/dist/graph/index.js.map +0 -1
  177. package/dist/index.js.map +0 -1
  178. package/dist/library/index.js.map +0 -1
  179. package/dist/library/oss-layout.js.map +0 -1
  180. package/dist/parsing/index.js.map +0 -1
  181. package/dist/rslang/eval/value-api.js.map +0 -1
  182. package/dist/rslang/eval/value.js.map +0 -1
  183. package/dist/rslang/index.js.map +0 -1
  184. package/dist/shared/branded.js.map +0 -1
  185. package/dist/shared/index.js.map +0 -1
@@ -1,507 +1,312 @@
1
- // src/parsing/ast.ts
2
- var TOKEN_ERROR = 0;
3
- function visitAstDFS(node, callback) {
4
- for (const child of node.children) {
5
- visitAstDFS(child, callback);
6
- }
7
- callback(node);
8
- }
9
-
10
- // src/rslang/parser/parser.terms.ts
11
- var Expression = 1;
12
- var Logic = 2;
13
- var Logic_predicates = 3;
14
- var Variable = 4;
15
- var Local = 5;
16
- var Tuple = 8;
17
- var Expr_enum_min2 = 9;
18
- var Logic_unary = 24;
19
- var Predicate = 26;
20
- var Logic_quantor = 29;
21
- var Variable_pack = 31;
22
- var Logic_binary = 33;
23
- var Setexpr = 38;
24
- var Integer = 39;
25
- var EmptySet = 40;
26
- var IntegerSet = 41;
27
- var Global = 42;
28
- var Radical = 43;
29
- var Setexpr_binary = 44;
30
- var Enumeration = 55;
31
- var Boolean = 56;
32
- var Filter_expression = 58;
33
- var Filter = 59;
34
- var Declarative = 60;
35
- var PrefixD = 62;
36
- var Imperative = 64;
37
- var Imp_blocks = 65;
38
- var Recursion = 68;
39
- var Function = 69;
40
- var BigPr = 70;
41
- var SmallPr = 71;
42
- var Card = 72;
43
- var Bool = 73;
44
- var Debool = 74;
45
- var Red = 75;
46
- var Function_decl = 76;
47
- var Arguments = 77;
48
- var Declaration = 78;
49
-
50
- // src/rslang/parser/token.ts
51
- var TokenID = {
52
- // Global, local IDs and literals
53
- ERROR: TOKEN_ERROR,
54
- ID_LOCAL: 258,
55
- ID_GLOBAL: 259,
56
- ID_FUNCTION: 260,
57
- ID_PREDICATE: 261,
58
- ID_RADICAL: 262,
59
- LIT_INTEGER: 263,
60
- LIT_WHOLE_NUMBERS: 264,
61
- LIT_EMPTYSET: 265,
62
- // Arithmetic
63
- PLUS: 266,
64
- MINUS: 267,
65
- MULTIPLY: 268,
66
- // Integer predicate symbols
67
- GREATER: 269,
68
- LESSER: 270,
69
- GREATER_OR_EQ: 271,
70
- LESSER_OR_EQ: 272,
71
- // Equality comparison
72
- EQUAL: 273,
73
- NOTEQUAL: 274,
74
- // Logic predicate symbols
75
- QUANTOR_UNIVERSAL: 275,
76
- QUANTOR_EXISTS: 276,
77
- LOGIC_NOT: 277,
78
- LOGIC_EQUIVALENT: 278,
79
- LOGIC_IMPLICATION: 279,
80
- LOGIC_OR: 280,
81
- LOGIC_AND: 281,
82
- // Set theory predicate symbols
83
- SET_IN: 282,
84
- SET_NOT_IN: 283,
85
- SUBSET: 284,
86
- SUBSET_OR_EQ: 285,
87
- NOT_SUBSET: 286,
88
- // Set theory operators
89
- DECART: 287,
90
- SET_UNION: 288,
91
- SET_INTERSECTION: 289,
92
- SET_MINUS: 290,
93
- SET_SYMMETRIC_MINUS: 291,
94
- BOOLEAN: 292,
95
- // Structure operations
96
- BIGPR: 293,
97
- SMALLPR: 294,
98
- FILTER: 295,
99
- CARD: 296,
100
- BOOL: 297,
101
- DEBOOL: 298,
102
- REDUCE: 299,
103
- // Term constructions prefixes
104
- DECLARATIVE: 300,
105
- RECURSIVE: 301,
106
- IMPERATIVE: 302,
107
- ITERATE: 303,
108
- ASSIGN: 304,
109
- // Punctuation
110
- PUNCTUATION_DEFINE: 305,
111
- PUNCTUATION_STRUCT: 306,
112
- PUNCTUATION_PL: 307,
113
- PUNCTUATION_PR: 308,
114
- PUNCTUATION_CL: 309,
115
- PUNCTUATION_CR: 310,
116
- PUNCTUATION_SL: 311,
117
- PUNCTUATION_SR: 312,
118
- PUNCTUATION_BAR: 313,
119
- PUNCTUATION_COMMA: 314,
120
- PUNCTUATION_SEMICOLON: 315,
121
- // ======= Non-terminal tokens =========
122
- NT_ENUM_DECL: 316,
123
- NT_TUPLE: 317,
124
- NT_ENUMERATION: 318,
125
- NT_TUPLE_DECL: 319,
126
- NT_ARG_DECL: 320,
127
- NT_FUNC_DEFINITION: 321,
128
- NT_ARGUMENTS: 322,
129
- NT_FUNC_CALL: 323,
130
- NT_DECLARATIVE_EXPR: 324,
131
- NT_IMPERATIVE_EXPR: 325,
132
- NT_RECURSIVE_FULL: 326,
133
- NT_RECURSIVE_SHORT: 327,
134
- // ======= Helper tokens ========
135
- INTERRUPT: 328,
136
- END: 329
137
- };
138
-
139
- // src/rslang/parser/normalize.ts
1
+ import { visitAstDFS } from "../../parsing/ast.js";
2
+ import "../../parsing/index.js";
3
+ import { TokenID } from "./token.js";
4
+ import "./parser.terms.js";
5
+ //#region src/rslang/parser/normalize.ts
6
+ /**
7
+ * Module: Transforming AST to a simple form.
8
+ */
9
+ /** Normalizes AST to a simple form. */
140
10
  function normalizeAST(ast, input) {
141
- visitAstDFS(ast, (node) => normalizeNode(node, input));
11
+ visitAstDFS(ast, (node) => normalizeNode(node, input));
142
12
  }
143
- var idRecord = {
144
- [Global]: TokenID.ID_GLOBAL,
145
- [Local]: TokenID.ID_LOCAL,
146
- [Radical]: TokenID.ID_RADICAL,
147
- [Function]: TokenID.ID_FUNCTION,
148
- [Predicate]: TokenID.ID_PREDICATE,
149
- [Integer]: TokenID.LIT_INTEGER,
150
- [EmptySet]: TokenID.LIT_EMPTYSET,
151
- [IntegerSet]: TokenID.LIT_WHOLE_NUMBERS,
152
- [Boolean]: TokenID.BOOLEAN,
153
- [BigPr]: TokenID.BIGPR,
154
- [SmallPr]: TokenID.SMALLPR,
155
- [Filter]: TokenID.FILTER,
156
- [Bool]: TokenID.BOOL,
157
- [Debool]: TokenID.DEBOOL,
158
- [Red]: TokenID.REDUCE,
159
- [Card]: TokenID.CARD,
160
- [Enumeration]: TokenID.NT_ENUMERATION,
161
- [Tuple]: TokenID.NT_TUPLE,
162
- [Arguments]: TokenID.NT_ARGUMENTS,
163
- [Declaration]: TokenID.NT_ARG_DECL,
164
- [Function_decl]: TokenID.NT_FUNC_DEFINITION,
165
- [Variable_pack]: TokenID.NT_ENUM_DECL,
166
- [Declarative]: TokenID.NT_DECLARATIVE_EXPR,
167
- [Imperative]: TokenID.NT_IMPERATIVE_EXPR
13
+ const idRecord = {
14
+ [42]: TokenID.ID_GLOBAL,
15
+ [5]: TokenID.ID_LOCAL,
16
+ [43]: TokenID.ID_RADICAL,
17
+ [69]: TokenID.ID_FUNCTION,
18
+ [26]: TokenID.ID_PREDICATE,
19
+ [39]: TokenID.LIT_INTEGER,
20
+ [40]: TokenID.LIT_EMPTYSET,
21
+ [41]: TokenID.LIT_WHOLE_NUMBERS,
22
+ [56]: TokenID.BOOLEAN,
23
+ [70]: TokenID.BIGPR,
24
+ [71]: TokenID.SMALLPR,
25
+ [59]: TokenID.FILTER,
26
+ [73]: TokenID.BOOL,
27
+ [74]: TokenID.DEBOOL,
28
+ [75]: TokenID.REDUCE,
29
+ [72]: TokenID.CARD,
30
+ [55]: TokenID.NT_ENUMERATION,
31
+ [8]: TokenID.NT_TUPLE,
32
+ [77]: TokenID.NT_ARGUMENTS,
33
+ [78]: TokenID.NT_ARG_DECL,
34
+ [76]: TokenID.NT_FUNC_DEFINITION,
35
+ [31]: TokenID.NT_ENUM_DECL,
36
+ [60]: TokenID.NT_DECLARATIVE_EXPR,
37
+ [64]: TokenID.NT_IMPERATIVE_EXPR
168
38
  };
169
39
  function normalizeNode(node, input) {
170
- if (node.hasError) {
171
- return;
172
- }
173
- switch (node.typeID) {
174
- case 0:
175
- return;
176
- case Expression:
177
- promoteSingleChild(node);
178
- return;
179
- case EmptySet:
180
- case IntegerSet:
181
- node.typeID = idRecord[node.typeID];
182
- clearData(node);
183
- return;
184
- case Integer:
185
- node.typeID = idRecord[node.typeID];
186
- node.data.dataType = "number";
187
- node.data.value = Number(input.slice(node.from, node.to));
188
- return;
189
- case Function:
190
- case Predicate:
191
- case Global:
192
- case Local:
193
- case Radical:
194
- case Integer:
195
- node.typeID = idRecord[node.typeID];
196
- node.data.dataType = "string";
197
- node.data.value = input.slice(node.from, node.to);
198
- return;
199
- case Boolean:
200
- node.typeID = idRecord[node.typeID];
201
- if (node.children.length === 4) {
202
- node.children = [node.children[2]];
203
- } else {
204
- node.children = [node.children[1]];
205
- }
206
- clearData(node);
207
- return;
208
- case Filter:
209
- case BigPr:
210
- case SmallPr:
211
- node.typeID = idRecord[node.typeID];
212
- node.data.dataType = "string[]";
213
- node.data.value = parseIndex(input.slice(node.from + 2, node.to));
214
- return;
215
- case Red:
216
- case Debool:
217
- case Bool:
218
- case Card:
219
- node.typeID = idRecord[node.typeID];
220
- clearData(node);
221
- return;
222
- case Function_decl:
223
- node.typeID = idRecord[node.typeID];
224
- clearData(node);
225
- node.children = [node.children[1], node.children[3]];
226
- return;
227
- case Declaration:
228
- node.typeID = idRecord[node.typeID];
229
- clearData(node);
230
- node.children = [node.children[0], node.children[2]];
231
- return;
232
- case Arguments:
233
- node.typeID = idRecord[node.typeID];
234
- clearData(node);
235
- if (node.children.length === 3) {
236
- processLeftEnum(node);
237
- }
238
- return;
239
- case Expr_enum_min2:
240
- processLeftEnum(node);
241
- return;
242
- case Setexpr:
243
- if (node.children.length === 1) {
244
- promoteSingleChild(node);
245
- } else if (node.children.length === 4) {
246
- processTextFunction(node);
247
- }
248
- return;
249
- case Tuple:
250
- case Enumeration:
251
- node.typeID = idRecord[node.typeID];
252
- clearData(node);
253
- if (node.children[1].typeID === Expr_enum_min2) {
254
- for (const child of node.children[1].children) {
255
- child.parent = node;
256
- }
257
- node.children = node.children[1].children;
258
- } else {
259
- node.children = [node.children[1]];
260
- }
261
- return;
262
- case Logic_binary:
263
- case Logic_predicates:
264
- case Setexpr_binary:
265
- if (node.children[0].data.value === "(") {
266
- processParenthesis(node);
267
- } else {
268
- clearData(node);
269
- node.typeID = symbolToToken(node.children[1].data.value);
270
- if (node.typeID === TokenID.DECART) {
271
- processDecartChildren(node);
272
- } else {
273
- node.children = [node.children[0], node.children[2]];
274
- }
275
- }
276
- return;
277
- case Filter_expression:
278
- processFilter(node);
279
- return;
280
- case Logic:
281
- if (node.children[0].data.value === "(") {
282
- processParenthesis(node);
283
- } else {
284
- promoteSingleChild(node);
285
- }
286
- return;
287
- case Logic_unary:
288
- if (node.children[0].data.value === "\xAC") {
289
- clearData(node);
290
- node.typeID = TokenID.LOGIC_NOT;
291
- node.children = [node.children[1]];
292
- } else if (node.children[0].typeID === TokenID.ID_PREDICATE) {
293
- processTextFunction(node);
294
- } else {
295
- promoteSingleChild(node);
296
- }
297
- return;
298
- case Logic_quantor:
299
- clearData(node);
300
- node.typeID = symbolToToken(node.children[0].data.value);
301
- node.children = [node.children[1], node.children[3], node.children[4]];
302
- return;
303
- case Variable:
304
- convertTupleDeclaration(node.children[0]);
305
- promoteSingleChild(node);
306
- return;
307
- case Variable_pack:
308
- if (node.children.length === 1) {
309
- promoteSingleChild(node);
310
- } else {
311
- node.typeID = idRecord[node.typeID];
312
- processLeftEnum(node);
313
- }
314
- return;
315
- case Declarative:
316
- node.typeID = idRecord[node.typeID];
317
- clearData(node);
318
- if (node.children[0].typeID === PrefixD) {
319
- node.children = [node.children[2], node.children[4], node.children[6]];
320
- } else {
321
- node.children = [node.children[1], node.children[3], node.children[5]];
322
- }
323
- return;
324
- case Imp_blocks:
325
- if (node.children.length === 1) {
326
- if (node.parent?.typeID === Imp_blocks) {
327
- promoteSingleChild(node);
328
- }
329
- } else {
330
- processLeftEnum(node);
331
- }
332
- return;
333
- case Imperative:
334
- node.typeID = idRecord[node.typeID];
335
- clearData(node);
336
- for (const child of node.children[4].children) {
337
- child.parent = node;
338
- }
339
- node.children = [node.children[2], ...node.children[4].children];
340
- return;
341
- case Recursion:
342
- if (node.children.length > 9) {
343
- node.typeID = TokenID.NT_RECURSIVE_FULL;
344
- node.children = [node.children[2], node.children[4], node.children[6], node.children[8]];
345
- } else {
346
- node.typeID = TokenID.NT_RECURSIVE_SHORT;
347
- node.children = [node.children[2], node.children[4], node.children[6]];
348
- }
349
- return;
350
- }
40
+ if (node.hasError) return;
41
+ switch (node.typeID) {
42
+ case 0: return;
43
+ case 1:
44
+ promoteSingleChild(node);
45
+ return;
46
+ case 40:
47
+ case 41:
48
+ node.typeID = idRecord[node.typeID];
49
+ clearData(node);
50
+ return;
51
+ case 39:
52
+ node.typeID = idRecord[node.typeID];
53
+ node.data.dataType = "number";
54
+ node.data.value = Number(input.slice(node.from, node.to));
55
+ return;
56
+ case 69:
57
+ case 26:
58
+ case 42:
59
+ case 5:
60
+ case 43:
61
+ case 39:
62
+ node.typeID = idRecord[node.typeID];
63
+ node.data.dataType = "string";
64
+ node.data.value = input.slice(node.from, node.to);
65
+ return;
66
+ case 56:
67
+ node.typeID = idRecord[node.typeID];
68
+ if (node.children.length === 4) node.children = [node.children[2]];
69
+ else node.children = [node.children[1]];
70
+ clearData(node);
71
+ return;
72
+ case 59:
73
+ case 70:
74
+ case 71:
75
+ node.typeID = idRecord[node.typeID];
76
+ node.data.dataType = "string[]";
77
+ node.data.value = parseIndex(input.slice(node.from + 2, node.to));
78
+ return;
79
+ case 75:
80
+ case 74:
81
+ case 73:
82
+ case 72:
83
+ node.typeID = idRecord[node.typeID];
84
+ clearData(node);
85
+ return;
86
+ case 76:
87
+ node.typeID = idRecord[node.typeID];
88
+ clearData(node);
89
+ node.children = [node.children[1], node.children[3]];
90
+ return;
91
+ case 78:
92
+ node.typeID = idRecord[node.typeID];
93
+ clearData(node);
94
+ node.children = [node.children[0], node.children[2]];
95
+ return;
96
+ case 77:
97
+ node.typeID = idRecord[node.typeID];
98
+ clearData(node);
99
+ if (node.children.length === 3) processLeftEnum(node);
100
+ return;
101
+ case 9:
102
+ processLeftEnum(node);
103
+ return;
104
+ case 38:
105
+ if (node.children.length === 1) promoteSingleChild(node);
106
+ else if (node.children.length === 4) processTextFunction(node);
107
+ return;
108
+ case 8:
109
+ case 55:
110
+ node.typeID = idRecord[node.typeID];
111
+ clearData(node);
112
+ if (node.children[1].typeID === 9) {
113
+ for (const child of node.children[1].children) child.parent = node;
114
+ node.children = node.children[1].children;
115
+ } else node.children = [node.children[1]];
116
+ return;
117
+ case 33:
118
+ case 3:
119
+ case 44:
120
+ if (node.children[0].data.value === "(") processParenthesis(node);
121
+ else {
122
+ clearData(node);
123
+ node.typeID = symbolToToken(node.children[1].data.value);
124
+ if (node.typeID === TokenID.DECART) processDecartChildren(node);
125
+ else node.children = [node.children[0], node.children[2]];
126
+ }
127
+ return;
128
+ case 58:
129
+ processFilter(node);
130
+ return;
131
+ case 2:
132
+ if (node.children[0].data.value === "(") processParenthesis(node);
133
+ else promoteSingleChild(node);
134
+ return;
135
+ case 24:
136
+ if (node.children[0].data.value === "¬") {
137
+ clearData(node);
138
+ node.typeID = TokenID.LOGIC_NOT;
139
+ node.children = [node.children[1]];
140
+ } else if (node.children[0].typeID === TokenID.ID_PREDICATE) processTextFunction(node);
141
+ else promoteSingleChild(node);
142
+ return;
143
+ case 29:
144
+ clearData(node);
145
+ node.typeID = symbolToToken(node.children[0].data.value);
146
+ node.children = [
147
+ node.children[1],
148
+ node.children[3],
149
+ node.children[4]
150
+ ];
151
+ return;
152
+ case 4:
153
+ convertTupleDeclaration(node.children[0]);
154
+ promoteSingleChild(node);
155
+ return;
156
+ case 31:
157
+ if (node.children.length === 1) promoteSingleChild(node);
158
+ else {
159
+ node.typeID = idRecord[node.typeID];
160
+ processLeftEnum(node);
161
+ }
162
+ return;
163
+ case 60:
164
+ node.typeID = idRecord[node.typeID];
165
+ clearData(node);
166
+ if (node.children[0].typeID === 62) node.children = [
167
+ node.children[2],
168
+ node.children[4],
169
+ node.children[6]
170
+ ];
171
+ else node.children = [
172
+ node.children[1],
173
+ node.children[3],
174
+ node.children[5]
175
+ ];
176
+ return;
177
+ case 65:
178
+ if (node.children.length === 1) {
179
+ if (node.parent?.typeID === 65) promoteSingleChild(node);
180
+ } else processLeftEnum(node);
181
+ return;
182
+ case 64:
183
+ node.typeID = idRecord[node.typeID];
184
+ clearData(node);
185
+ for (const child of node.children[4].children) child.parent = node;
186
+ node.children = [node.children[2], ...node.children[4].children];
187
+ return;
188
+ case 68:
189
+ if (node.children.length > 9) {
190
+ node.typeID = TokenID.NT_RECURSIVE_FULL;
191
+ node.children = [
192
+ node.children[2],
193
+ node.children[4],
194
+ node.children[6],
195
+ node.children[8]
196
+ ];
197
+ } else {
198
+ node.typeID = TokenID.NT_RECURSIVE_SHORT;
199
+ node.children = [
200
+ node.children[2],
201
+ node.children[4],
202
+ node.children[6]
203
+ ];
204
+ }
205
+ return;
206
+ }
351
207
  }
352
208
  function convertTupleDeclaration(node) {
353
- if (node.typeID !== TokenID.NT_TUPLE) {
354
- return;
355
- }
356
- node.typeID = TokenID.NT_TUPLE_DECL;
357
- for (const child of node.children) {
358
- convertTupleDeclaration(child);
359
- }
209
+ if (node.typeID !== TokenID.NT_TUPLE) return;
210
+ node.typeID = TokenID.NT_TUPLE_DECL;
211
+ for (const child of node.children) convertTupleDeclaration(child);
360
212
  }
361
213
  function clearData(node) {
362
- node.data.value = null;
363
- node.data.dataType = "null";
214
+ node.data.value = null;
215
+ node.data.dataType = "null";
364
216
  }
365
217
  function promoteSingleChild(node, index = 0) {
366
- for (const child of node.children[index].children) {
367
- child.parent = node;
368
- }
369
- node.typeID = node.children[index].typeID;
370
- node.data = node.children[index].data;
371
- node.parenthesis = node.children[index].parenthesis;
372
- node.children = node.children[index].children;
218
+ for (const child of node.children[index].children) child.parent = node;
219
+ node.typeID = node.children[index].typeID;
220
+ node.data = node.children[index].data;
221
+ node.parenthesis = node.children[index].parenthesis;
222
+ node.children = node.children[index].children;
373
223
  }
374
224
  function parseIndex(text) {
375
- return text.split(",");
225
+ return text.split(",");
376
226
  }
377
227
  function symbolToToken(symbol) {
378
- switch (symbol) {
379
- case "+":
380
- return TokenID.PLUS;
381
- case "-":
382
- return TokenID.MINUS;
383
- case "*":
384
- return TokenID.MULTIPLY;
385
- case "\u222A":
386
- return TokenID.SET_UNION;
387
- case "\\":
388
- return TokenID.SET_MINUS;
389
- case "\u2206":
390
- return TokenID.SET_SYMMETRIC_MINUS;
391
- case "\u2229":
392
- return TokenID.SET_INTERSECTION;
393
- case "\xD7":
394
- return TokenID.DECART;
395
- case "\u2208":
396
- return TokenID.SET_IN;
397
- case "\u2209":
398
- return TokenID.SET_NOT_IN;
399
- case "\u2286":
400
- return TokenID.SUBSET_OR_EQ;
401
- case "\u2284":
402
- return TokenID.NOT_SUBSET;
403
- case "\u2282":
404
- return TokenID.SUBSET;
405
- case ">":
406
- return TokenID.GREATER;
407
- case "\u2265":
408
- return TokenID.GREATER_OR_EQ;
409
- case "<":
410
- return TokenID.LESSER;
411
- case "\u2264":
412
- return TokenID.LESSER_OR_EQ;
413
- case "\u2260":
414
- return TokenID.NOTEQUAL;
415
- case "=":
416
- return TokenID.EQUAL;
417
- case ":\u2208":
418
- return TokenID.ITERATE;
419
- case ":=":
420
- return TokenID.ASSIGN;
421
- case "\xAC":
422
- return TokenID.LOGIC_NOT;
423
- case "\u21D4":
424
- return TokenID.LOGIC_EQUIVALENT;
425
- case "\u21D2":
426
- return TokenID.LOGIC_IMPLICATION;
427
- case "\u2228":
428
- return TokenID.LOGIC_OR;
429
- case "&":
430
- return TokenID.LOGIC_AND;
431
- case "\u2200":
432
- return TokenID.QUANTOR_UNIVERSAL;
433
- case "\u2203":
434
- return TokenID.QUANTOR_EXISTS;
435
- }
436
- return TokenID.ERROR;
228
+ switch (symbol) {
229
+ case "+": return TokenID.PLUS;
230
+ case "-": return TokenID.MINUS;
231
+ case "*": return TokenID.MULTIPLY;
232
+ case "∪": return TokenID.SET_UNION;
233
+ case "\\": return TokenID.SET_MINUS;
234
+ case "∆": return TokenID.SET_SYMMETRIC_MINUS;
235
+ case "": return TokenID.SET_INTERSECTION;
236
+ case "×": return TokenID.DECART;
237
+ case "": return TokenID.SET_IN;
238
+ case "∉": return TokenID.SET_NOT_IN;
239
+ case "": return TokenID.SUBSET_OR_EQ;
240
+ case "⊄": return TokenID.NOT_SUBSET;
241
+ case "": return TokenID.SUBSET;
242
+ case ">": return TokenID.GREATER;
243
+ case "": return TokenID.GREATER_OR_EQ;
244
+ case "<": return TokenID.LESSER;
245
+ case "": return TokenID.LESSER_OR_EQ;
246
+ case "≠": return TokenID.NOTEQUAL;
247
+ case "=": return TokenID.EQUAL;
248
+ case ":∈": return TokenID.ITERATE;
249
+ case ":=": return TokenID.ASSIGN;
250
+ case "¬": return TokenID.LOGIC_NOT;
251
+ case "": return TokenID.LOGIC_EQUIVALENT;
252
+ case "⇒": return TokenID.LOGIC_IMPLICATION;
253
+ case "": return TokenID.LOGIC_OR;
254
+ case "&": return TokenID.LOGIC_AND;
255
+ case "": return TokenID.QUANTOR_UNIVERSAL;
256
+ case "∃": return TokenID.QUANTOR_EXISTS;
257
+ }
258
+ return TokenID.ERROR;
437
259
  }
438
260
  function processParenthesis(node) {
439
- promoteSingleChild(node, 1);
440
- node.parenthesis = true;
261
+ promoteSingleChild(node, 1);
262
+ node.parenthesis = true;
441
263
  }
442
264
  function processLeftEnum(node) {
443
- if (node.children[0].typeID === node.typeID) {
444
- for (const child of node.children[0].children) {
445
- child.parent = node;
446
- }
447
- node.children = [...node.children[0].children, node.children[2]];
448
- } else {
449
- node.children = [node.children[0], node.children[2]];
450
- }
265
+ if (node.children[0].typeID === node.typeID) {
266
+ for (const child of node.children[0].children) child.parent = node;
267
+ node.children = [...node.children[0].children, node.children[2]];
268
+ } else node.children = [node.children[0], node.children[2]];
451
269
  }
452
270
  function processDecartChildren(node) {
453
- const newChildren = [];
454
- if (node.children[0].typeID === TokenID.DECART && !node.children[0].parenthesis) {
455
- for (const child of node.children[0].children) {
456
- child.parent = node;
457
- newChildren.push(child);
458
- }
459
- } else {
460
- newChildren.push(node.children[0]);
461
- }
462
- if (node.children[2].typeID === TokenID.DECART && !node.children[2].parenthesis) {
463
- for (const child of node.children[2].children) {
464
- child.parent = node;
465
- newChildren.push(child);
466
- }
467
- } else {
468
- newChildren.push(node.children[2]);
469
- }
470
- node.children = newChildren;
271
+ const newChildren = [];
272
+ if (node.children[0].typeID === TokenID.DECART && !node.children[0].parenthesis) for (const child of node.children[0].children) {
273
+ child.parent = node;
274
+ newChildren.push(child);
275
+ }
276
+ else newChildren.push(node.children[0]);
277
+ if (node.children[2].typeID === TokenID.DECART && !node.children[2].parenthesis) for (const child of node.children[2].children) {
278
+ child.parent = node;
279
+ newChildren.push(child);
280
+ }
281
+ else newChildren.push(node.children[2]);
282
+ node.children = newChildren;
471
283
  }
472
284
  function processTextFunction(node) {
473
- if (node.children[0].typeID === TokenID.ID_FUNCTION || node.children[0].typeID === TokenID.ID_PREDICATE) {
474
- node.typeID = TokenID.NT_FUNC_CALL;
475
- clearData(node);
476
- if (node.children[2].typeID === Expr_enum_min2) {
477
- for (const child of node.children[2].children) {
478
- child.parent = node;
479
- }
480
- node.children = [node.children[0], ...node.children[2].children];
481
- } else {
482
- node.children = [node.children[0], node.children[2]];
483
- }
484
- } else {
485
- node.typeID = node.children[0].typeID;
486
- node.data = node.children[0].data;
487
- node.children = [node.children[2]];
488
- }
285
+ if (node.children[0].typeID === TokenID.ID_FUNCTION || node.children[0].typeID === TokenID.ID_PREDICATE) {
286
+ node.typeID = TokenID.NT_FUNC_CALL;
287
+ clearData(node);
288
+ if (node.children[2].typeID === 9) {
289
+ for (const child of node.children[2].children) child.parent = node;
290
+ node.children = [node.children[0], ...node.children[2].children];
291
+ } else node.children = [node.children[0], node.children[2]];
292
+ } else {
293
+ node.typeID = node.children[0].typeID;
294
+ node.data = node.children[0].data;
295
+ node.children = [node.children[2]];
296
+ }
489
297
  }
490
298
  function processFilter(node) {
491
- const children = [];
492
- if (node.children[2].typeID === Expr_enum_min2) {
493
- for (const child of node.children[2].children) {
494
- child.parent = node;
495
- children.push(child);
496
- }
497
- } else {
498
- children.push(node.children[2]);
499
- }
500
- children.push(node.children[5]);
501
- promoteSingleChild(node);
502
- node.children = children;
299
+ const children = [];
300
+ if (node.children[2].typeID === 9) for (const child of node.children[2].children) {
301
+ child.parent = node;
302
+ children.push(child);
303
+ }
304
+ else children.push(node.children[2]);
305
+ children.push(node.children[5]);
306
+ promoteSingleChild(node);
307
+ node.children = children;
503
308
  }
504
- export {
505
- normalizeAST
506
- };
309
+ //#endregion
310
+ export { normalizeAST };
311
+
507
312
  //# sourceMappingURL=normalize.js.map