@rsconcept/domain 1.0.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.
- package/LICENSE +21 -0
- package/README.md +55 -0
- package/dist/cctext/index.d.ts +1 -0
- package/dist/cctext/index.js +42 -0
- package/dist/cctext/index.js.map +1 -0
- package/dist/cctext/language-api.d.ts +43 -0
- package/dist/cctext/language-api.js +252 -0
- package/dist/cctext/language-api.js.map +1 -0
- package/dist/cctext/language.d.ts +58 -0
- package/dist/cctext/language.js +44 -0
- package/dist/cctext/language.js.map +1 -0
- package/dist/graph/graph.d.ts +62 -0
- package/dist/graph/graph.js +385 -0
- package/dist/graph/graph.js.map +1 -0
- package/dist/graph/index.d.ts +1 -0
- package/dist/graph/index.js +384 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +5851 -0
- package/dist/index.js.map +1 -0
- package/dist/library/folder-tree.d.ts +32 -0
- package/dist/library/folder-tree.js +136 -0
- package/dist/library/folder-tree.js.map +1 -0
- package/dist/library/index.d.ts +17 -0
- package/dist/library/index.js +2800 -0
- package/dist/library/index.js.map +1 -0
- package/dist/library/library-api.d.ts +6 -0
- package/dist/library/library-api.js +13 -0
- package/dist/library/library-api.js.map +1 -0
- package/dist/library/library.d.ts +56 -0
- package/dist/library/library.js +23 -0
- package/dist/library/library.js.map +1 -0
- package/dist/library/oss-api.d.ts +47 -0
- package/dist/library/oss-api.js +1105 -0
- package/dist/library/oss-api.js.map +1 -0
- package/dist/library/oss-layout-api.d.ts +36 -0
- package/dist/library/oss-layout-api.js +330 -0
- package/dist/library/oss-layout-api.js.map +1 -0
- package/dist/library/oss-layout.d.ts +25 -0
- package/dist/library/oss-layout.js +1 -0
- package/dist/library/oss-layout.js.map +1 -0
- package/dist/library/oss.d.ts +136 -0
- package/dist/library/oss.js +30 -0
- package/dist/library/oss.js.map +1 -0
- package/dist/library/rsengine.d.ts +116 -0
- package/dist/library/rsengine.js +2604 -0
- package/dist/library/rsengine.js.map +1 -0
- package/dist/library/rsform-api.d.ts +74 -0
- package/dist/library/rsform-api.js +879 -0
- package/dist/library/rsform-api.js.map +1 -0
- package/dist/library/rsform.d.ts +206 -0
- package/dist/library/rsform.js +32 -0
- package/dist/library/rsform.js.map +1 -0
- package/dist/library/rsmodel-api.d.ts +43 -0
- package/dist/library/rsmodel-api.js +836 -0
- package/dist/library/rsmodel-api.js.map +1 -0
- package/dist/library/rsmodel.d.ts +52 -0
- package/dist/library/rsmodel.js +25 -0
- package/dist/library/rsmodel.js.map +1 -0
- package/dist/library/structure-planner.d.ts +33 -0
- package/dist/library/structure-planner.js +481 -0
- package/dist/library/structure-planner.js.map +1 -0
- package/dist/parsing/ast.d.ts +49 -0
- package/dist/parsing/ast.js +93 -0
- package/dist/parsing/ast.js.map +1 -0
- package/dist/parsing/index.d.ts +3 -0
- package/dist/parsing/index.js +141 -0
- package/dist/parsing/index.js.map +1 -0
- package/dist/parsing/lezer-tree.d.ts +13 -0
- package/dist/parsing/lezer-tree.js +50 -0
- package/dist/parsing/lezer-tree.js.map +1 -0
- package/dist/rslang/api.d.ts +53 -0
- package/dist/rslang/api.js +846 -0
- package/dist/rslang/api.js.map +1 -0
- package/dist/rslang/ast-annotations.d.ts +18 -0
- package/dist/rslang/ast-annotations.js +56 -0
- package/dist/rslang/ast-annotations.js.map +1 -0
- package/dist/rslang/error.d.ts +85 -0
- package/dist/rslang/error.js +159 -0
- package/dist/rslang/error.js.map +1 -0
- package/dist/rslang/eval/calculator.d.ts +43 -0
- package/dist/rslang/eval/calculator.js +1639 -0
- package/dist/rslang/eval/calculator.js.map +1 -0
- package/dist/rslang/eval/evaluation-cache.d.ts +36 -0
- package/dist/rslang/eval/evaluation-cache.js +310 -0
- package/dist/rslang/eval/evaluation-cache.js.map +1 -0
- package/dist/rslang/eval/evaluator.d.ts +70 -0
- package/dist/rslang/eval/evaluator.js +1514 -0
- package/dist/rslang/eval/evaluator.js.map +1 -0
- package/dist/rslang/eval/value-api.d.ts +48 -0
- package/dist/rslang/eval/value-api.js +490 -0
- package/dist/rslang/eval/value-api.js.map +1 -0
- package/dist/rslang/eval/value.d.ts +36 -0
- package/dist/rslang/eval/value.js +118 -0
- package/dist/rslang/eval/value.js.map +1 -0
- package/dist/rslang/index.d.ts +17 -0
- package/dist/rslang/index.js +4314 -0
- package/dist/rslang/index.js.map +1 -0
- package/dist/rslang/labels.d.ts +16 -0
- package/dist/rslang/labels.js +315 -0
- package/dist/rslang/labels.js.map +1 -0
- package/dist/rslang/parser/expression-generator.d.ts +10 -0
- package/dist/rslang/parser/expression-generator.js +451 -0
- package/dist/rslang/parser/expression-generator.js.map +1 -0
- package/dist/rslang/parser/normalize.d.ts +11 -0
- package/dist/rslang/parser/normalize.js +507 -0
- package/dist/rslang/parser/normalize.js.map +1 -0
- package/dist/rslang/parser/parser.d.ts +5 -0
- package/dist/rslang/parser/parser.js +24 -0
- package/dist/rslang/parser/parser.js.map +1 -0
- package/dist/rslang/parser/parser.terms.d.ts +42 -0
- package/dist/rslang/parser/parser.terms.js +84 -0
- package/dist/rslang/parser/parser.terms.js.map +1 -0
- package/dist/rslang/parser/syntax-errors.d.ts +11 -0
- package/dist/rslang/parser/syntax-errors.js +403 -0
- package/dist/rslang/parser/syntax-errors.js.map +1 -0
- package/dist/rslang/parser/token.d.ts +79 -0
- package/dist/rslang/parser/token.js +95 -0
- package/dist/rslang/parser/token.js.map +1 -0
- package/dist/rslang/semantic/analyzer.d.ts +39 -0
- package/dist/rslang/semantic/analyzer.js +2604 -0
- package/dist/rslang/semantic/analyzer.js.map +1 -0
- package/dist/rslang/semantic/arguments-extractor.d.ts +42 -0
- package/dist/rslang/semantic/arguments-extractor.js +366 -0
- package/dist/rslang/semantic/arguments-extractor.js.map +1 -0
- package/dist/rslang/semantic/type-auditor.d.ts +73 -0
- package/dist/rslang/semantic/type-auditor.js +1570 -0
- package/dist/rslang/semantic/type-auditor.js.map +1 -0
- package/dist/rslang/semantic/typification-api.d.ts +27 -0
- package/dist/rslang/semantic/typification-api.js +320 -0
- package/dist/rslang/semantic/typification-api.js.map +1 -0
- package/dist/rslang/semantic/typification-parser.d.ts +12 -0
- package/dist/rslang/semantic/typification-parser.js +226 -0
- package/dist/rslang/semantic/typification-parser.js.map +1 -0
- package/dist/rslang/semantic/typification.d.ts +119 -0
- package/dist/rslang/semantic/typification.js +74 -0
- package/dist/rslang/semantic/typification.js.map +1 -0
- package/dist/rslang/semantic/value-auditor.d.ts +43 -0
- package/dist/rslang/semantic/value-auditor.js +523 -0
- package/dist/rslang/semantic/value-auditor.js.map +1 -0
- package/dist/rslang/semantic/value-class.d.ts +10 -0
- package/dist/rslang/semantic/value-class.js +9 -0
- package/dist/rslang/semantic/value-class.js.map +1 -0
- package/dist/rslang/typification-graph.d.ts +33 -0
- package/dist/rslang/typification-graph.js +311 -0
- package/dist/rslang/typification-graph.js.map +1 -0
- package/dist/shared/branded.d.ts +7 -0
- package/dist/shared/branded.js +1 -0
- package/dist/shared/branded.js.map +1 -0
- package/dist/shared/hash.d.ts +6 -0
- package/dist/shared/hash.js +18 -0
- package/dist/shared/hash.js.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +18 -0
- package/dist/shared/index.js.map +1 -0
- package/package.json +184 -0
- package/src/cctext/index.ts +9 -0
- package/src/cctext/language-api.test.ts +149 -0
- package/src/cctext/language-api.ts +285 -0
- package/src/cctext/language.ts +80 -0
- package/src/graph/graph.test.ts +392 -0
- package/src/graph/graph.ts +433 -0
- package/src/graph/index.ts +1 -0
- package/src/index.ts +96 -0
- package/src/library/folder-tree.test.ts +47 -0
- package/src/library/folder-tree.ts +156 -0
- package/src/library/index.ts +46 -0
- package/src/library/library-api.test.ts +32 -0
- package/src/library/library-api.ts +11 -0
- package/src/library/library.ts +61 -0
- package/src/library/oss-api.ts +449 -0
- package/src/library/oss-layout-api.ts +377 -0
- package/src/library/oss-layout.ts +27 -0
- package/src/library/oss.ts +150 -0
- package/src/library/rsengine.ts +593 -0
- package/src/library/rsform-api.ts +533 -0
- package/src/library/rsform.ts +228 -0
- package/src/library/rsmodel-api.ts +340 -0
- package/src/library/rsmodel.ts +50 -0
- package/src/library/structure-planner.ts +143 -0
- package/src/parsing/ast.ts +136 -0
- package/src/parsing/index.ts +15 -0
- package/src/parsing/lezer-tree.ts +69 -0
- package/src/rslang/api.test.ts +116 -0
- package/src/rslang/api.ts +183 -0
- package/src/rslang/ast-annotations.ts +70 -0
- package/src/rslang/error.ts +129 -0
- package/src/rslang/eval/calculator.test.ts +124 -0
- package/src/rslang/eval/calculator.ts +121 -0
- package/src/rslang/eval/evaluation-cache.ts +257 -0
- package/src/rslang/eval/evaluator.test.ts +352 -0
- package/src/rslang/eval/evaluator.ts +935 -0
- package/src/rslang/eval/value-api.test.ts +105 -0
- package/src/rslang/eval/value-api.ts +444 -0
- package/src/rslang/eval/value.ts +102 -0
- package/src/rslang/index.ts +23 -0
- package/src/rslang/labels.ts +191 -0
- package/src/rslang/parser/expression-generator.test.ts +100 -0
- package/src/rslang/parser/expression-generator.ts +466 -0
- package/src/rslang/parser/normalize.test.ts +99 -0
- package/src/rslang/parser/normalize.ts +462 -0
- package/src/rslang/parser/parser.terms.ts +42 -0
- package/src/rslang/parser/parser.test.ts +153 -0
- package/src/rslang/parser/parser.ts +20 -0
- package/src/rslang/parser/rslang.grammar +251 -0
- package/src/rslang/parser/syntax-errors.ts +209 -0
- package/src/rslang/parser/token.ts +106 -0
- package/src/rslang/semantic/analyzer.test.ts +59 -0
- package/src/rslang/semantic/analyzer.ts +179 -0
- package/src/rslang/semantic/arguments-extractor.ts +327 -0
- package/src/rslang/semantic/type-auditor.test.ts +326 -0
- package/src/rslang/semantic/type-auditor.ts +1049 -0
- package/src/rslang/semantic/typification-api.test.ts +46 -0
- package/src/rslang/semantic/typification-api.ts +321 -0
- package/src/rslang/semantic/typification-parser.test.ts +50 -0
- package/src/rslang/semantic/typification-parser.ts +220 -0
- package/src/rslang/semantic/typification.ts +180 -0
- package/src/rslang/semantic/value-auditor.test.ts +206 -0
- package/src/rslang/semantic/value-auditor.ts +332 -0
- package/src/rslang/semantic/value-class.ts +11 -0
- package/src/rslang/typification-graph.ts +155 -0
- package/src/shared/branded.ts +6 -0
- package/src/shared/hash.ts +17 -0
- package/src/shared/index.ts +2 -0
|
@@ -0,0 +1,836 @@
|
|
|
1
|
+
// src/parsing/ast.ts
|
|
2
|
+
var TOKEN_ERROR = 0;
|
|
3
|
+
|
|
4
|
+
// src/rslang/parser/token.ts
|
|
5
|
+
var TokenID = {
|
|
6
|
+
// Global, local IDs and literals
|
|
7
|
+
ERROR: TOKEN_ERROR,
|
|
8
|
+
ID_LOCAL: 258,
|
|
9
|
+
ID_GLOBAL: 259,
|
|
10
|
+
ID_FUNCTION: 260,
|
|
11
|
+
ID_PREDICATE: 261,
|
|
12
|
+
ID_RADICAL: 262,
|
|
13
|
+
LIT_INTEGER: 263,
|
|
14
|
+
LIT_WHOLE_NUMBERS: 264,
|
|
15
|
+
LIT_EMPTYSET: 265,
|
|
16
|
+
// Arithmetic
|
|
17
|
+
PLUS: 266,
|
|
18
|
+
MINUS: 267,
|
|
19
|
+
MULTIPLY: 268,
|
|
20
|
+
// Integer predicate symbols
|
|
21
|
+
GREATER: 269,
|
|
22
|
+
LESSER: 270,
|
|
23
|
+
GREATER_OR_EQ: 271,
|
|
24
|
+
LESSER_OR_EQ: 272,
|
|
25
|
+
// Equality comparison
|
|
26
|
+
EQUAL: 273,
|
|
27
|
+
NOTEQUAL: 274,
|
|
28
|
+
// Logic predicate symbols
|
|
29
|
+
QUANTOR_UNIVERSAL: 275,
|
|
30
|
+
QUANTOR_EXISTS: 276,
|
|
31
|
+
LOGIC_NOT: 277,
|
|
32
|
+
LOGIC_EQUIVALENT: 278,
|
|
33
|
+
LOGIC_IMPLICATION: 279,
|
|
34
|
+
LOGIC_OR: 280,
|
|
35
|
+
LOGIC_AND: 281,
|
|
36
|
+
// Set theory predicate symbols
|
|
37
|
+
SET_IN: 282,
|
|
38
|
+
SET_NOT_IN: 283,
|
|
39
|
+
SUBSET: 284,
|
|
40
|
+
SUBSET_OR_EQ: 285,
|
|
41
|
+
NOT_SUBSET: 286,
|
|
42
|
+
// Set theory operators
|
|
43
|
+
DECART: 287,
|
|
44
|
+
SET_UNION: 288,
|
|
45
|
+
SET_INTERSECTION: 289,
|
|
46
|
+
SET_MINUS: 290,
|
|
47
|
+
SET_SYMMETRIC_MINUS: 291,
|
|
48
|
+
BOOLEAN: 292,
|
|
49
|
+
// Structure operations
|
|
50
|
+
BIGPR: 293,
|
|
51
|
+
SMALLPR: 294,
|
|
52
|
+
FILTER: 295,
|
|
53
|
+
CARD: 296,
|
|
54
|
+
BOOL: 297,
|
|
55
|
+
DEBOOL: 298,
|
|
56
|
+
REDUCE: 299,
|
|
57
|
+
// Term constructions prefixes
|
|
58
|
+
DECLARATIVE: 300,
|
|
59
|
+
RECURSIVE: 301,
|
|
60
|
+
IMPERATIVE: 302,
|
|
61
|
+
ITERATE: 303,
|
|
62
|
+
ASSIGN: 304,
|
|
63
|
+
// Punctuation
|
|
64
|
+
PUNCTUATION_DEFINE: 305,
|
|
65
|
+
PUNCTUATION_STRUCT: 306,
|
|
66
|
+
PUNCTUATION_PL: 307,
|
|
67
|
+
PUNCTUATION_PR: 308,
|
|
68
|
+
PUNCTUATION_CL: 309,
|
|
69
|
+
PUNCTUATION_CR: 310,
|
|
70
|
+
PUNCTUATION_SL: 311,
|
|
71
|
+
PUNCTUATION_SR: 312,
|
|
72
|
+
PUNCTUATION_BAR: 313,
|
|
73
|
+
PUNCTUATION_COMMA: 314,
|
|
74
|
+
PUNCTUATION_SEMICOLON: 315,
|
|
75
|
+
// ======= Non-terminal tokens =========
|
|
76
|
+
NT_ENUM_DECL: 316,
|
|
77
|
+
NT_TUPLE: 317,
|
|
78
|
+
NT_ENUMERATION: 318,
|
|
79
|
+
NT_TUPLE_DECL: 319,
|
|
80
|
+
NT_ARG_DECL: 320,
|
|
81
|
+
NT_FUNC_DEFINITION: 321,
|
|
82
|
+
NT_ARGUMENTS: 322,
|
|
83
|
+
NT_FUNC_CALL: 323,
|
|
84
|
+
NT_DECLARATIVE_EXPR: 324,
|
|
85
|
+
NT_IMPERATIVE_EXPR: 325,
|
|
86
|
+
NT_RECURSIVE_FULL: 326,
|
|
87
|
+
NT_RECURSIVE_SHORT: 327,
|
|
88
|
+
// ======= Helper tokens ========
|
|
89
|
+
INTERRUPT: 328,
|
|
90
|
+
END: 329
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// src/rslang/semantic/typification.ts
|
|
94
|
+
var TypeID = {
|
|
95
|
+
anyTypification: 1,
|
|
96
|
+
integer: 2,
|
|
97
|
+
basic: 3,
|
|
98
|
+
tuple: 4,
|
|
99
|
+
collection: 5,
|
|
100
|
+
logic: 6,
|
|
101
|
+
function: 7,
|
|
102
|
+
predicate: 8
|
|
103
|
+
};
|
|
104
|
+
var TypeClass = {
|
|
105
|
+
logic: 1,
|
|
106
|
+
typification: 2,
|
|
107
|
+
function: 3,
|
|
108
|
+
predicate: 4
|
|
109
|
+
};
|
|
110
|
+
var LogicT = { typeID: TypeID.logic };
|
|
111
|
+
var IntegerT = {
|
|
112
|
+
typeID: TypeID.integer,
|
|
113
|
+
isOrdered: true,
|
|
114
|
+
isArithmetic: true,
|
|
115
|
+
isIntegerCompatible: true
|
|
116
|
+
};
|
|
117
|
+
var AnyTypificationT = { typeID: TypeID.anyTypification };
|
|
118
|
+
var EmptySetT = bool(AnyTypificationT);
|
|
119
|
+
function bool(base) {
|
|
120
|
+
return { typeID: TypeID.collection, base };
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/rslang/eval/value-api.ts
|
|
124
|
+
function printValue(data) {
|
|
125
|
+
if (!Array.isArray(data)) {
|
|
126
|
+
return String(data);
|
|
127
|
+
}
|
|
128
|
+
const len = data.length;
|
|
129
|
+
if (data.length === 0) {
|
|
130
|
+
return "{}";
|
|
131
|
+
}
|
|
132
|
+
const isTuple = data[0] === TUPLE_ID;
|
|
133
|
+
const start = isTuple ? 1 : 0;
|
|
134
|
+
let result = isTuple ? "(" : "{";
|
|
135
|
+
for (let i = start; i < len; i++) {
|
|
136
|
+
if (i > start) result += ", ";
|
|
137
|
+
result += printValue(data[i]);
|
|
138
|
+
}
|
|
139
|
+
result += isTuple ? ")" : "}";
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
function isTupleValue(data) {
|
|
143
|
+
return Array.isArray(data) && data.length > 1 && data[0] === TUPLE_ID;
|
|
144
|
+
}
|
|
145
|
+
function extractValue(target, path) {
|
|
146
|
+
let current = target;
|
|
147
|
+
let i = 0;
|
|
148
|
+
while (i < path.length) {
|
|
149
|
+
if (!Array.isArray(current) || current.length <= path[i]) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
current = current[path[i]];
|
|
153
|
+
i++;
|
|
154
|
+
}
|
|
155
|
+
return current;
|
|
156
|
+
}
|
|
157
|
+
function makeDefaultValue(type) {
|
|
158
|
+
switch (type.typeID) {
|
|
159
|
+
case TypeID.anyTypification:
|
|
160
|
+
case TypeID.integer:
|
|
161
|
+
case TypeID.basic:
|
|
162
|
+
return INVALID_ELEMENT;
|
|
163
|
+
case TypeID.collection:
|
|
164
|
+
return [];
|
|
165
|
+
case TypeID.tuple:
|
|
166
|
+
return tuple(type.factors.map((item) => makeDefaultValue(item)));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function setNestedValue(target, path, newVal) {
|
|
170
|
+
if (path.length === 0) {
|
|
171
|
+
return newVal;
|
|
172
|
+
}
|
|
173
|
+
const [head, ...rest] = path;
|
|
174
|
+
const arr = Array.isArray(target) ? [...target] : [];
|
|
175
|
+
arr[head] = setNestedValue(arr[head], makeValuePath(rest), newVal);
|
|
176
|
+
return arr;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// src/rslang/eval/value.ts
|
|
180
|
+
var TUPLE_ID = -111;
|
|
181
|
+
var INVALID_ELEMENT = -1;
|
|
182
|
+
var VALUE_TRUE = 1;
|
|
183
|
+
function makeValuePath(path) {
|
|
184
|
+
return path;
|
|
185
|
+
}
|
|
186
|
+
function compare(v1, v2) {
|
|
187
|
+
const stack1 = [v1];
|
|
188
|
+
const stack2 = [v2];
|
|
189
|
+
while (stack1.length > 0 && stack2.length > 0) {
|
|
190
|
+
const el1 = stack1.pop();
|
|
191
|
+
const el2 = stack2.pop();
|
|
192
|
+
if (el1 === el2) {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
const type1 = typeof el1;
|
|
196
|
+
const type2 = typeof el2;
|
|
197
|
+
if (type1 === "number" && type2 === "number") {
|
|
198
|
+
const numDiff = el1 - el2;
|
|
199
|
+
if (numDiff !== 0) return numDiff;
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
const isArray1 = Array.isArray(el1);
|
|
203
|
+
const isArray2 = Array.isArray(el2);
|
|
204
|
+
if (!isArray1 || !isArray2) {
|
|
205
|
+
throw new Error(`Cannot compare different types ${printValue(el1)} and ${printValue(el2)}`);
|
|
206
|
+
}
|
|
207
|
+
const arr1 = el1;
|
|
208
|
+
const arr2 = el2;
|
|
209
|
+
const len1 = arr1.length;
|
|
210
|
+
const len2 = arr2.length;
|
|
211
|
+
if (len1 !== len2) {
|
|
212
|
+
return len1 - len2;
|
|
213
|
+
}
|
|
214
|
+
for (let i = len1 - 1; i >= 0; i--) {
|
|
215
|
+
stack1.push(arr1[i]);
|
|
216
|
+
stack2.push(arr2[i]);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return 0;
|
|
220
|
+
}
|
|
221
|
+
function tuple(components) {
|
|
222
|
+
return [TUPLE_ID, ...components];
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// src/rslang/parser/parser.ts
|
|
226
|
+
import { LRParser } from "@lezer/lr";
|
|
227
|
+
var parser = LRParser.deserialize({
|
|
228
|
+
version: 14,
|
|
229
|
+
states: "2lO!sQPOOOVQPO'#CdO$qQPO'#C`O&pQPO'#C`O*bQPO'#C_Q*jQPOOO,TQPO'#CyOVQPO'#CtO,]QPO'#CtOOQO'#Ct'#CtOOQO'#C^'#C^OOQO'#ES'#ESOOQO'#ET'#ETO,bQPO'#DeO,iQPO'#DfO,qQPO'#DhO,vQPO'#DjO,{QPO'#DnO-QQPO'#DrOOQO'#EU'#EUOOQO'#EV'#EVOOQO'#DS'#DSO-VQPO'#DSO-[QPO'#DSOOQO'#EQ'#EQO,TQPO'#DzQOQPOOO-aQPO'#ERO-nQPO,59OO-vQPO'#CeO-{QPO,58xO/lQPO,59tOVQPO,58yOVQPO,58yOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO'#CdOOQO'#C`'#C`OOQO'#C{'#C{O1]QPO,59eO2rQPO,59`OVQPO,59`OOQO'#ER'#ERO5TQPO,5:PO5]QPO,5:UOVQPO,5:QOOQO,5:Q,5:QOVQPO,5:SO,TQPO,5:UOVQPO,5:YO,TQPO,5:^OVQPO,59nOVQPO,59nO5dQPO'#D|OOQO'#D{'#D{O5iQPO,5:fOOQO1G.j1G.jOVQPO,59POOQO1G.d1G.dOOQO1G/`1G/`O5qQPO1G.eO7vQPO1G.eO:zQPO1G/TO=]QPO1G/TO?nQPO1G/TOBPQPO1G/TOGyQPO1G/`OHQQPO1G/`OKpQPO1G/`O! `QPO1G/`O! gQPO1G/`O! nQPO1G/`O! uQPO1G/`O,TQPO,59gOVQPO1G/PO!%aQPO1G.zOOQO1G/k1G/kOVQPO1G/pO!%iQPO1G/lO!%pQPO1G/nO!%xQPO1G/pO!%}QPO1G/tO!&UQPO1G/xO!&ZQPO1G/YO!&cQPO1G/YOVQPO,5:hO,TQPO,5:gOVQPO1G0QO!&jQPO1G.kOOQO1G/R1G/RO!&zQPO7+$kOOQO7+$f7+$fO!(gQPO7+%[OOQO7+%W7+%WO!(nQPO7+%YOVQPO7+%[OVQPO7+%`OVQPO7+%dOOQO7+$t7+$tO!(sQPO1G0SOOQO1G0R1G0RO!(}QPO7+%lO!)UQPO<<HVOVQPO<<HvOVQPO<<HtO!+gQPO<<HvO!+nQPO'#DoO!+xQPO<<HzO!,QQPO<<IOO!,XQPOAN>bO!,`QPOAN>`OVQPOAN>bOVQPO,5:ZOOQOAN>fAN>fOVQPOAN>jOOQOG23|G23|OOQOG23zG23zO!,gQPOG23|O!,nQPO1G/uO!,xQPOG24UOOQOLD)hLD)hOOQOLD)pLD)pOVQPOLD)pO!-SQPO!$'M[OOQO!)9Bv!)9Bv",
|
|
230
|
+
stateData: "!-l~O!sOS~OTQOVPOiVOjWOnUOpUOwZOxZOyZOz[O{[O!W]O!Z^O!]_O!``O!aaO!ebO!gfO!hdO!idO!jdO!kdO!ldO!mdO~OkiO~PVOZSX[SX]!wX^!wX_!wX`!wXa!wXb!wXc!wXd!wXe!wXf!wXg!wXr!wXs!wXt!wXu!wX}!wX!O!wX!P!wX!Q!wX!R!wX!S!wX!T!wX!U!wXY!wX!V!wX~O!q!wXU!wXl!wX!_!wXT!wXV!wXi!wXj!wXn!wXp!wXw!wXx!wXy!wXz!wX{!wX!W!wX!Z!wX!]!wX!`!wX!a!wX!e!wX!g!wX!h!wX!i!wX!j!wX!k!wX!l!wX!m!wX!d!wX~P!zOZSX[SX]!xX^!xX_!xX`!xXa!xXb!xXc!xXd!xXe!xXf!xXg!xXr!xXs!xXt!xXu!xX}!xX!O!xX!P!xX!Q!xX!R!xX!S!xX!T!xX!U!xX!q!xXY!xX!V!xXU!xXl!xX!_!xXT!xXV!xXi!xXj!xXn!xXp!xXw!xXx!xXy!xXz!xX{!xX!W!xX!Z!xX!]!xX!`!xX!a!xX!e!xX!g!xX!h!xX!i!xX!j!xX!k!xX!l!xX!m!xX!d!xX~OZpO[pO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~OT!POV!OO~Ok!TO~OT!WO~PYOV!XO!Z^O~Ok!ZO~O!W![O~O!W!]O~O!W!^O~Ok!_O~OV!`O~OY!uX!V!uXl!uX~P*jOU!dOY!uX~OY!eO~OU!fOY!tX]!tX^!tX_!tX`!tXa!tXb!tXc!tXd!tXe!tXf!tXg!tXr!tXs!tXt!tXu!tX}!tX!O!tX!P!tX!Q!tX!R!tX!S!tX!T!tX!U!tX~OU!gOYvX]vX^vX_vX`vXavXbvXcvXdvXevXfvXgvXrvXsvXtvXuvX}vX!OvX!PvX!QvX!RvX!SvX!TvX!UvX~OY!uO]!vO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~Orhashathauha!qhaUhaYha!Vhalha!_haThaVhaihajhanhaphawhaxhayhazha{ha!Wha!Zha!]ha!`ha!aha!eha!gha!hha!iha!jha!kha!lha!mha!dha~P1eOY!eO!V!xO~O]!yO~P!zO]#RO~OY#SOl#TO~O!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P*jO]Ri^Ri_Ri`RiaRibRicRidRieRifRigRirRisRitRiuRi!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P+iOssOttOuuOrqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOttOuuOrqisqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOuuOrqisqitqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOrqisqitqiuqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eO}vO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!P|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!O|i~PDbO!OwO~PDbO}vO!OwO!PxO!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!R|i!S|i!T|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!Q|i~PHXO}vO!OwO!PxO!QyO!T|O!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!S|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!R|i~PKwO!RzO~PKwO!QyO~PHXO}vO!OwO!PxO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~OY!eOl#XO~OU#ZO~P*jOY!eOl#[O~O]#]O~O!_#^O~P*jO[#_O~OY!eOl#`O~OU#`O~P*jOUXiYXi!VXilXi~P*jO]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~PVO!_#eO~P*jOV#fO~OY!pil!pi~P*jO!q!nq~P*jOrmysmytmyumy!qmyUmyYmy!Vmylmy!_myTmyVmyimyjmynmypmywmyxmyymyzmy{my!Wmy!Zmy!]my!`my!amy!emy!gmy!hmy!imy!jmy!kmy!lmy!mmy!dmy~P1eO!_#mO~P*jO!V!cX!d!cX~P*jO!V#oO!d#nO~O!_#pO~P*jO!V#qO~P*jOU#rO~P*jO!V#vO~P*jO!V!ci!d!ci~P*jO!V#wO!_#xO~P*jO!V#zO~P*jO!]!hj!gz{!j!k!l!m!iT!e!a!`!a~",
|
|
231
|
+
goto: "1O!zPP!{#y$uPPP&R'VPPPPPPPPPPPPPP#yPPPP'aP(]P#yPPPP(`PPPPP)[PPPPPPPPPP*Y+UP*YP*YPPP*Y,TPP*YPPPPPPP,W,Z,^PPP,d.v/W/W/W0S!phOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRnP!sYOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rSOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xQ!QUS!ai#SQ!|![Q#O!^R#V!u!rROPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x]!PUi![!^!u#SSlP!OX!U]!T!Z!_!sXOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!RU!shOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!peOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRoP!scOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rcOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!Y^R#i#^RjOR!ciQ!biR#b#SQTO[kP]!O!T!Z!_Q!SVQ!gvQ!hpQ!iqQ!jrQ!ksQ!ltQ!muQ!nwQ!oxQ!pyQ!qzQ!r{Q!s|Q!t}Q!z!XQ!}!]Q#Q!`Q#U!eQ#W!vQ#Y!yQ#a#RQ#c#TQ#d#WQ#g#]Q#h#^Q#j#_Q#k#eQ#l#fQ#s#mQ#t#nQ#u#pR#y#xSmP!OQ!V]Q!w!TQ!{!ZR#P!_!seOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!sgOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x",
|
|
232
|
+
nodeNames: "\u26A0 Expression Logic Logic_predicates Variable Local ) ( Tuple Expr_enum_min2 , :\u2208 := \u2208 \u2209 \u2286 \u2284 \u2282 > \u2265 < \u2264 \u2260 = Logic_unary \xAC Predicate [ ] Logic_quantor \u2200 Variable_pack \u2203 Logic_binary \u21D4 \u21D2 \u2228 & Setexpr Integer EmptySet IntegerSet Global Radical Setexpr_binary * + - \u222A \\ \u2206 \u2229 \xD7 } { Enumeration Boolean \u212C Filter_expression Filter Declarative | PrefixD PrefixI Imperative Imp_blocks ; PrefixR Recursion Function BigPr SmallPr Card Bool Debool Red Function_decl Arguments Declaration",
|
|
233
|
+
maxTerm: 87,
|
|
234
|
+
nodeProps: [
|
|
235
|
+
["openedBy", 6, "(", 53, "{"],
|
|
236
|
+
["closedBy", 7, ")", 54, "}"]
|
|
237
|
+
],
|
|
238
|
+
skippedNodes: [0],
|
|
239
|
+
repeatNodeCount: 0,
|
|
240
|
+
tokenData: "6j~R!jX^%spq%svw&hxy&myz&rz{&w{|&||}'R}!O'W!Q![']![!]'e!]!^'x!^!_'}!_!`(S!`!a(X!c!d(^!e!f(^!f!g(l!h!i(t!k!l)h!p!q(^!r!s)m!t!u*a!u!v(^!v!w(^!z!{(^!|!}*q!}#O*v#O#P*{#P#Q+Q#R#S+V#T#U+V#U#V+m#V#W-]#W#X.x#X#d+V#d#e1b#e#f+V#f#g2w#g#o+V#o#p4R#p#q4W#q#r4]#y#z%s$f$g%s$r$s4b%o%p4g5i6S+V#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s% l% m4l%%Y%%Z4q%%[%%]4v%&Y%&Z4{%&]%&^5Q%&_%&`5V%&`%&a5[%&b%&c5a%&c%&d5f%'S%'T5k%'T%'U5p%'U%'V5u%(^%(_5z%(b%(c6P%(c%(d6U%)Q%)R6Z%)S%)T6`%)U%)V6e&FU&FV%s~%xY!s~X^%spq%s#y#z%s$f$g%s#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s&FU&FV%s~&mOu~~&rOV~~&wOU~~&|O}~~'RO!O~~'WOY~~']O!P~~'bPw~!Q![']~'hQ!_!`'n%&b%&c's~'sO[~~'xOZ~~'}O!d~~(SOd~~(XOg~~(^Ob~~(aP!Q![(d~(iPz~!Q![(d~(qP!`~!Q![(d~(wQ!Q![(}#]#^)V~)SP!g~!Q![(}~)YP!R![)]~)bQ!]~|})V!Q![)]~)mO!a~~)pQ!Q![)v#f#g*O~){Pj~!Q![)v~*RP!R![*U~*ZQ!h~|}*O!Q![*U~*fP!e~!Q![*i~*nP{~!Q![*i~*vOy~~*{Ok~~+QO!R~~+VOl~~+[RT~!Q![+e#T#o+V5i6S+V~+jPT~!Q![+e~+rTT~!Q![+e#T#c+V#c#d,R#d#o+V5i6S+V~,WTT~!Q![+e#T#c+V#c#d,g#d#o+V5i6S+V~,lTT~!Q![+e#T#`+V#`#a,{#a#o+V5i6S+V~-SR!k~T~!Q![+e#T#o+V5i6S+V~-bST~!Q![+e#T#U-n#U#o+V5i6S+V~-sTT~!Q![+e#T#f+V#f#g.S#g#o+V5i6S+V~.XTT~!Q![+e#T#W+V#W#X.h#X#o+V5i6S+V~.oR!j~T~!Q![+e#T#o+V5i6S+V~.}TT~!Q![+e#T#X+V#X#Y/^#Y#o+V5i6S+V~/cTT~!Q![+e#T#U+V#U#V/r#V#o+V5i6S+V~/wTT~!Q![+e#T#c+V#c#d0W#d#o+V5i6S+V~0]TT~!Q![+e#T#c+V#c#d0l#d#o+V5i6S+V~0qTT~!Q![+e#T#`+V#`#a1Q#a#o+V5i6S+V~1XR!l~T~!Q![+e#T#o+V5i6S+V~1gTT~!Q![+e#T#f+V#f#g1v#g#o+V5i6S+V~1{ST~!Q!R+e!R![2X#T#o+V5i6S+V~2`Q!i~T~|}2f!Q![2X~2iP!R![2l~2qQ!i~|}2f!Q![2l~2|TT~!Q![+e#T#X+V#X#Y3]#Y#o+V5i6S+V~3bTT~!Q![+e#T#W+V#W#X3q#X#o+V5i6S+V~3xR!m~T~!Q![+e#T#o+V5i6S+V~4WO!W~~4]O!_~~4bO!V~~4gOi~~4lO!U~~4qO!Z~~4vOs~~4{Or~~5QOn~~5VOp~~5[Ox~~5aO!S~~5fO]~~5kO^~~5pOt~~5uO!T~~5zO!Q~~6POf~~6UOe~~6ZOc~~6`Oa~~6eO`~~6jO_~",
|
|
241
|
+
tokenizers: [0],
|
|
242
|
+
topRules: { "Expression": [0, 1] },
|
|
243
|
+
tokenPrec: 2679
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
// src/rslang/parser/parser.terms.ts
|
|
247
|
+
var Local = 5;
|
|
248
|
+
var Tuple = 8;
|
|
249
|
+
var Predicate = 26;
|
|
250
|
+
var Variable_pack = 31;
|
|
251
|
+
var Integer = 39;
|
|
252
|
+
var EmptySet = 40;
|
|
253
|
+
var IntegerSet = 41;
|
|
254
|
+
var Global = 42;
|
|
255
|
+
var Radical = 43;
|
|
256
|
+
var Enumeration = 55;
|
|
257
|
+
var Boolean = 56;
|
|
258
|
+
var Filter = 59;
|
|
259
|
+
var Declarative = 60;
|
|
260
|
+
var Imperative = 64;
|
|
261
|
+
var Function = 69;
|
|
262
|
+
var BigPr = 70;
|
|
263
|
+
var SmallPr = 71;
|
|
264
|
+
var Card = 72;
|
|
265
|
+
var Bool = 73;
|
|
266
|
+
var Debool = 74;
|
|
267
|
+
var Red = 75;
|
|
268
|
+
var Function_decl = 76;
|
|
269
|
+
var Arguments = 77;
|
|
270
|
+
var Declaration = 78;
|
|
271
|
+
|
|
272
|
+
// src/rslang/parser/normalize.ts
|
|
273
|
+
var idRecord = {
|
|
274
|
+
[Global]: TokenID.ID_GLOBAL,
|
|
275
|
+
[Local]: TokenID.ID_LOCAL,
|
|
276
|
+
[Radical]: TokenID.ID_RADICAL,
|
|
277
|
+
[Function]: TokenID.ID_FUNCTION,
|
|
278
|
+
[Predicate]: TokenID.ID_PREDICATE,
|
|
279
|
+
[Integer]: TokenID.LIT_INTEGER,
|
|
280
|
+
[EmptySet]: TokenID.LIT_EMPTYSET,
|
|
281
|
+
[IntegerSet]: TokenID.LIT_WHOLE_NUMBERS,
|
|
282
|
+
[Boolean]: TokenID.BOOLEAN,
|
|
283
|
+
[BigPr]: TokenID.BIGPR,
|
|
284
|
+
[SmallPr]: TokenID.SMALLPR,
|
|
285
|
+
[Filter]: TokenID.FILTER,
|
|
286
|
+
[Bool]: TokenID.BOOL,
|
|
287
|
+
[Debool]: TokenID.DEBOOL,
|
|
288
|
+
[Red]: TokenID.REDUCE,
|
|
289
|
+
[Card]: TokenID.CARD,
|
|
290
|
+
[Enumeration]: TokenID.NT_ENUMERATION,
|
|
291
|
+
[Tuple]: TokenID.NT_TUPLE,
|
|
292
|
+
[Arguments]: TokenID.NT_ARGUMENTS,
|
|
293
|
+
[Declaration]: TokenID.NT_ARG_DECL,
|
|
294
|
+
[Function_decl]: TokenID.NT_FUNC_DEFINITION,
|
|
295
|
+
[Variable_pack]: TokenID.NT_ENUM_DECL,
|
|
296
|
+
[Declarative]: TokenID.NT_DECLARATIVE_EXPR,
|
|
297
|
+
[Imperative]: TokenID.NT_IMPERATIVE_EXPR
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
// src/rslang/labels.ts
|
|
301
|
+
var labelTokenRecord = {
|
|
302
|
+
[TokenID.DECART]: "\xD7",
|
|
303
|
+
[TokenID.PUNCTUATION_PL]: "( )",
|
|
304
|
+
[TokenID.PUNCTUATION_SL]: "[ ]",
|
|
305
|
+
[TokenID.QUANTOR_UNIVERSAL]: "\u2200",
|
|
306
|
+
[TokenID.QUANTOR_EXISTS]: "\u2203",
|
|
307
|
+
[TokenID.LOGIC_NOT]: "\xAC",
|
|
308
|
+
[TokenID.LOGIC_AND]: "&",
|
|
309
|
+
[TokenID.LOGIC_OR]: "\u2228",
|
|
310
|
+
[TokenID.LOGIC_IMPLICATION]: "\u21D2",
|
|
311
|
+
[TokenID.LOGIC_EQUIVALENT]: "\u21D4",
|
|
312
|
+
[TokenID.LIT_EMPTYSET]: "\u2205",
|
|
313
|
+
[TokenID.LIT_WHOLE_NUMBERS]: "Z",
|
|
314
|
+
[TokenID.MULTIPLY]: "*",
|
|
315
|
+
[TokenID.EQUAL]: "=",
|
|
316
|
+
[TokenID.NOTEQUAL]: "\u2260",
|
|
317
|
+
[TokenID.GREATER_OR_EQ]: "\u2265",
|
|
318
|
+
[TokenID.LESSER_OR_EQ]: "\u2264",
|
|
319
|
+
[TokenID.SET_IN]: "\u2208",
|
|
320
|
+
[TokenID.SET_NOT_IN]: "\u2209",
|
|
321
|
+
[TokenID.SUBSET_OR_EQ]: "\u2286",
|
|
322
|
+
[TokenID.SUBSET]: "\u2282",
|
|
323
|
+
[TokenID.NOT_SUBSET]: "\u2284",
|
|
324
|
+
[TokenID.SET_INTERSECTION]: "\u2229",
|
|
325
|
+
[TokenID.SET_UNION]: "\u222A",
|
|
326
|
+
[TokenID.SET_MINUS]: "\\",
|
|
327
|
+
[TokenID.SET_SYMMETRIC_MINUS]: "\u2206",
|
|
328
|
+
[TokenID.BOOLEAN]: "\u212C()",
|
|
329
|
+
[TokenID.NT_DECLARATIVE_EXPR]: "D{}",
|
|
330
|
+
[TokenID.NT_IMPERATIVE_EXPR]: "I{}",
|
|
331
|
+
[TokenID.NT_RECURSIVE_FULL]: "R{}",
|
|
332
|
+
[TokenID.BIGPR]: "Pr1()",
|
|
333
|
+
[TokenID.SMALLPR]: "pr1()",
|
|
334
|
+
[TokenID.FILTER]: "Fi1[]()",
|
|
335
|
+
[TokenID.REDUCE]: "red()",
|
|
336
|
+
[TokenID.CARD]: "card()",
|
|
337
|
+
[TokenID.BOOL]: "bool()",
|
|
338
|
+
[TokenID.DEBOOL]: "debool()",
|
|
339
|
+
[TokenID.ASSIGN]: ":=",
|
|
340
|
+
[TokenID.ITERATE]: ":\u2208"
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
// src/rslang/semantic/typification-api.ts
|
|
344
|
+
var TypeIDToClass = {
|
|
345
|
+
[TypeID.anyTypification]: TypeClass.typification,
|
|
346
|
+
[TypeID.integer]: TypeClass.typification,
|
|
347
|
+
[TypeID.basic]: TypeClass.typification,
|
|
348
|
+
[TypeID.tuple]: TypeClass.typification,
|
|
349
|
+
[TypeID.collection]: TypeClass.typification,
|
|
350
|
+
[TypeID.logic]: TypeClass.logic,
|
|
351
|
+
[TypeID.function]: TypeClass.function,
|
|
352
|
+
[TypeID.predicate]: TypeClass.predicate
|
|
353
|
+
};
|
|
354
|
+
|
|
355
|
+
// src/rslang/semantic/value-class.ts
|
|
356
|
+
var ValueClass = {
|
|
357
|
+
VALUE: "value",
|
|
358
|
+
PROPERTY: "property"
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
// src/library/rsform.ts
|
|
362
|
+
var CstType = {
|
|
363
|
+
NOMINAL: "nominal",
|
|
364
|
+
BASE: "basic",
|
|
365
|
+
STRUCTURED: "structure",
|
|
366
|
+
TERM: "term",
|
|
367
|
+
AXIOM: "axiom",
|
|
368
|
+
FUNCTION: "function",
|
|
369
|
+
PREDICATE: "predicate",
|
|
370
|
+
CONSTANT: "constant",
|
|
371
|
+
STATEMENT: "statement"
|
|
372
|
+
};
|
|
373
|
+
var CstClass = {
|
|
374
|
+
NOMINAL: "nominal",
|
|
375
|
+
BASIC: "basic",
|
|
376
|
+
DERIVED: "derived",
|
|
377
|
+
STATEMENT: "statement",
|
|
378
|
+
TEMPLATE: "template"
|
|
379
|
+
};
|
|
380
|
+
var CstStatus = {
|
|
381
|
+
VERIFIED: "verified",
|
|
382
|
+
INCORRECT: "incorrect",
|
|
383
|
+
INCALCULABLE: "incalculable",
|
|
384
|
+
PROPERTY: "property",
|
|
385
|
+
UNKNOWN: "unknown"
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
// src/library/rsform-api.ts
|
|
389
|
+
var CST_TYPE_PREFIX = {
|
|
390
|
+
[CstType.NOMINAL]: "N",
|
|
391
|
+
[CstType.BASE]: "X",
|
|
392
|
+
[CstType.CONSTANT]: "C",
|
|
393
|
+
[CstType.STRUCTURED]: "S",
|
|
394
|
+
[CstType.AXIOM]: "A",
|
|
395
|
+
[CstType.TERM]: "D",
|
|
396
|
+
[CstType.FUNCTION]: "F",
|
|
397
|
+
[CstType.PREDICATE]: "P",
|
|
398
|
+
[CstType.STATEMENT]: "T"
|
|
399
|
+
};
|
|
400
|
+
var CST_TYPE_TO_CLASS = {
|
|
401
|
+
[CstType.NOMINAL]: CstClass.NOMINAL,
|
|
402
|
+
[CstType.BASE]: CstClass.BASIC,
|
|
403
|
+
[CstType.CONSTANT]: CstClass.BASIC,
|
|
404
|
+
[CstType.STRUCTURED]: CstClass.BASIC,
|
|
405
|
+
[CstType.TERM]: CstClass.DERIVED,
|
|
406
|
+
[CstType.FUNCTION]: CstClass.DERIVED,
|
|
407
|
+
[CstType.AXIOM]: CstClass.STATEMENT,
|
|
408
|
+
[CstType.PREDICATE]: CstClass.DERIVED,
|
|
409
|
+
[CstType.STATEMENT]: CstClass.STATEMENT
|
|
410
|
+
};
|
|
411
|
+
function isSchemaIssue(cst) {
|
|
412
|
+
if (cst.homonyms.length > 0 || cst.formalDuplicates.length > 0 || cst.status === CstStatus.INCORRECT || cst.status === CstStatus.INCALCULABLE || cst.is_type_mismatch) {
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
|
|
416
|
+
if (!cst.convention || !cst.term_resolved) {
|
|
417
|
+
return true;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
function isBasicConcept(type) {
|
|
423
|
+
switch (type) {
|
|
424
|
+
case CstType.NOMINAL:
|
|
425
|
+
case CstType.BASE:
|
|
426
|
+
case CstType.CONSTANT:
|
|
427
|
+
case CstType.STRUCTURED:
|
|
428
|
+
case CstType.AXIOM:
|
|
429
|
+
return true;
|
|
430
|
+
case CstType.TERM:
|
|
431
|
+
case CstType.FUNCTION:
|
|
432
|
+
case CstType.PREDICATE:
|
|
433
|
+
case CstType.STATEMENT:
|
|
434
|
+
return false;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
function isBaseSet(type) {
|
|
438
|
+
switch (type) {
|
|
439
|
+
case CstType.BASE:
|
|
440
|
+
case CstType.CONSTANT:
|
|
441
|
+
return true;
|
|
442
|
+
case CstType.NOMINAL:
|
|
443
|
+
case CstType.STRUCTURED:
|
|
444
|
+
case CstType.AXIOM:
|
|
445
|
+
case CstType.TERM:
|
|
446
|
+
case CstType.FUNCTION:
|
|
447
|
+
case CstType.PREDICATE:
|
|
448
|
+
case CstType.STATEMENT:
|
|
449
|
+
return false;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
function isLogical(type) {
|
|
453
|
+
switch (type) {
|
|
454
|
+
case CstType.AXIOM:
|
|
455
|
+
case CstType.STATEMENT:
|
|
456
|
+
return true;
|
|
457
|
+
case CstType.NOMINAL:
|
|
458
|
+
case CstType.BASE:
|
|
459
|
+
case CstType.CONSTANT:
|
|
460
|
+
case CstType.STRUCTURED:
|
|
461
|
+
case CstType.TERM:
|
|
462
|
+
case CstType.FUNCTION:
|
|
463
|
+
case CstType.PREDICATE:
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
function calculateSchemaStats(target) {
|
|
468
|
+
const items = target.items;
|
|
469
|
+
return {
|
|
470
|
+
count_all: items.length,
|
|
471
|
+
count_crucial: items.reduce((sum, cst) => sum + (cst.crucial ? 1 : 0), 0),
|
|
472
|
+
step_complexity: items.reduce((sum, cst) => sum + calculateStepComplexity(cst), 0),
|
|
473
|
+
count_problematic: items.reduce((sum, cst) => sum + (isSchemaIssue(cst) ? 1 : 0), 0),
|
|
474
|
+
count_homonyms: items.reduce((sum, cst) => sum + (cst.homonyms.length > 0 ? 1 : 0), 0),
|
|
475
|
+
count_formal_duplicates: items.reduce((sum, cst) => sum + (cst.formalDuplicates.length > 0 ? 1 : 0), 0),
|
|
476
|
+
count_missing_convention: items.reduce((sum, cst) => sum + (isMissingConvention(cst) ? 1 : 0), 0),
|
|
477
|
+
count_type_mismatch: items.reduce((sum, cst) => sum + (cst.is_type_mismatch ? 1 : 0), 0),
|
|
478
|
+
count_incorrect: items.reduce((sum, cst) => sum + (cst.status === CstStatus.INCORRECT ? 1 : 0), 0),
|
|
479
|
+
count_property: items.reduce((sum, cst) => sum + (cst.analysis?.valueClass === ValueClass.PROPERTY ? 1 : 0), 0),
|
|
480
|
+
count_incalculable: items.reduce(
|
|
481
|
+
(sum, cst) => sum + (cst.analysis?.success && cst.analysis.valueClass === null ? 1 : 0),
|
|
482
|
+
0
|
|
483
|
+
),
|
|
484
|
+
count_inherited: items.reduce((sum, cst) => sum + (cst.is_inherited ? 1 : 0), 0),
|
|
485
|
+
count_text_term: items.reduce((sum, cst) => sum + (cst.term_raw ? 1 : 0), 0),
|
|
486
|
+
count_definition: items.reduce((sum, cst) => sum + (cst.definition_raw ? 1 : 0), 0),
|
|
487
|
+
count_convention: items.reduce((sum, cst) => sum + (isBasicConcept(cst.cst_type) && cst.convention ? 1 : 0), 0),
|
|
488
|
+
count_comment: items.reduce((sum, cst) => sum + (!isBasicConcept(cst.cst_type) && !cst.convention ? 1 : 0), 0),
|
|
489
|
+
count_base: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.BASE ? 1 : 0), 0),
|
|
490
|
+
count_constant: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.CONSTANT ? 1 : 0), 0),
|
|
491
|
+
count_structured: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STRUCTURED ? 1 : 0), 0),
|
|
492
|
+
count_axiom: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.AXIOM ? 1 : 0), 0),
|
|
493
|
+
count_term: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.TERM ? 1 : 0), 0),
|
|
494
|
+
count_function: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.FUNCTION ? 1 : 0), 0),
|
|
495
|
+
count_predicate: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.PREDICATE ? 1 : 0), 0),
|
|
496
|
+
count_statement: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STATEMENT ? 1 : 0), 0),
|
|
497
|
+
count_nominal: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.NOMINAL ? 1 : 0), 0)
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
function calculateStepComplexity(cst) {
|
|
501
|
+
if (cst.cst_type === CstType.AXIOM || cst.cst_type === CstType.NOMINAL || !isBasicConcept(cst.cst_type)) {
|
|
502
|
+
return 0;
|
|
503
|
+
}
|
|
504
|
+
if (cst.cst_type === CstType.BASE || cst.cst_type === CstType.CONSTANT || !cst.effectiveType) {
|
|
505
|
+
return 1;
|
|
506
|
+
}
|
|
507
|
+
const type = cst.effectiveType;
|
|
508
|
+
return calculateTypificationComplexity(type) + 1;
|
|
509
|
+
}
|
|
510
|
+
function calculateTypificationComplexity(type) {
|
|
511
|
+
switch (type.typeID) {
|
|
512
|
+
case TypeID.basic:
|
|
513
|
+
case TypeID.integer:
|
|
514
|
+
case TypeID.anyTypification:
|
|
515
|
+
return 0;
|
|
516
|
+
case TypeID.tuple:
|
|
517
|
+
return type.factors.length + type.factors.reduce((sum, factor) => sum + calculateTypificationComplexity(factor), 0);
|
|
518
|
+
case TypeID.collection:
|
|
519
|
+
if (type.base.typeID === TypeID.tuple) {
|
|
520
|
+
let sum = 0;
|
|
521
|
+
type.base.factors.forEach((factor) => {
|
|
522
|
+
sum += calculateTypificationComplexity(factor);
|
|
523
|
+
});
|
|
524
|
+
return sum + type.base.factors.length;
|
|
525
|
+
} else if (type.base.typeID === TypeID.collection) {
|
|
526
|
+
return calculateTypificationComplexity(type.base) + 1;
|
|
527
|
+
}
|
|
528
|
+
return 0;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
function isMissingConvention(cst) {
|
|
532
|
+
if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
|
|
533
|
+
if (!cst.convention || !cst.term_resolved) {
|
|
534
|
+
return true;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return false;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// src/library/rsmodel.ts
|
|
541
|
+
var EvalStatus = {
|
|
542
|
+
NO_EVAL: 1,
|
|
543
|
+
// не вычисляется
|
|
544
|
+
NOT_PROCESSED: 2,
|
|
545
|
+
// Интерпретация не вычислялась
|
|
546
|
+
INVALID_DATA: 3,
|
|
547
|
+
// Неверные данные
|
|
548
|
+
EVAL_FAIL: 4,
|
|
549
|
+
// Ошибка при вычислении
|
|
550
|
+
AXIOM_FALSE: 5,
|
|
551
|
+
// Значение аксиомы = FALSE
|
|
552
|
+
EMPTY: 6,
|
|
553
|
+
// Значение пусто
|
|
554
|
+
HAS_DATA: 7
|
|
555
|
+
// Интерпретация вычислена и не пуста
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
// src/library/rsmodel-api.ts
|
|
559
|
+
var RANDOM_INTEGER_MIN = -100;
|
|
560
|
+
var RANDOM_INTEGER_MAX = 100;
|
|
561
|
+
var DEFAULT_RANDOM_SET_ELEMENTS_COUNT = 5;
|
|
562
|
+
function validateBasicBindingData(data) {
|
|
563
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) {
|
|
564
|
+
return false;
|
|
565
|
+
}
|
|
566
|
+
return Object.entries(data).every(([key, value]) => typeof value === "string" && Number.isInteger(Number(key)));
|
|
567
|
+
}
|
|
568
|
+
function toBasicBinding(data) {
|
|
569
|
+
const result = {};
|
|
570
|
+
for (const [k, v] of Object.entries(data)) {
|
|
571
|
+
result[Number(k)] = v;
|
|
572
|
+
}
|
|
573
|
+
return result;
|
|
574
|
+
}
|
|
575
|
+
function validateValueData(data) {
|
|
576
|
+
if (typeof data === "number") {
|
|
577
|
+
return Number.isFinite(data);
|
|
578
|
+
}
|
|
579
|
+
if (!Array.isArray(data)) {
|
|
580
|
+
return false;
|
|
581
|
+
}
|
|
582
|
+
return data.every((item) => validateValueData(item));
|
|
583
|
+
}
|
|
584
|
+
function generateRandomValue(type, basics, cstByAlias, setElementsCount = DEFAULT_RANDOM_SET_ELEMENTS_COUNT) {
|
|
585
|
+
switch (type.typeID) {
|
|
586
|
+
case TypeID.integer:
|
|
587
|
+
return Math.floor(Math.random() * (RANDOM_INTEGER_MAX - RANDOM_INTEGER_MIN + 1)) + RANDOM_INTEGER_MIN;
|
|
588
|
+
case TypeID.basic: {
|
|
589
|
+
const cst = cstByAlias.get(type.baseID);
|
|
590
|
+
const binding = cst ? basics.get(cst.id) : void 0;
|
|
591
|
+
const ids = Object.keys(binding ?? {}).map(Number);
|
|
592
|
+
if (ids.length === 0) {
|
|
593
|
+
return null;
|
|
594
|
+
}
|
|
595
|
+
return ids[Math.floor(Math.random() * ids.length)];
|
|
596
|
+
}
|
|
597
|
+
case TypeID.tuple: {
|
|
598
|
+
const factors = [];
|
|
599
|
+
for (const factor of type.factors) {
|
|
600
|
+
const sample = generateRandomValue(factor, basics, cstByAlias, setElementsCount);
|
|
601
|
+
if (sample === null) {
|
|
602
|
+
return null;
|
|
603
|
+
}
|
|
604
|
+
factors.push(sample);
|
|
605
|
+
}
|
|
606
|
+
return tuple(factors);
|
|
607
|
+
}
|
|
608
|
+
case TypeID.collection: {
|
|
609
|
+
const result = [];
|
|
610
|
+
const randomElementsCount = Math.floor(Math.random() * (setElementsCount + 1));
|
|
611
|
+
for (let i = 0; i < randomElementsCount; i++) {
|
|
612
|
+
const sample = generateRandomValue(type.base, basics, cstByAlias, setElementsCount);
|
|
613
|
+
if (sample === null) {
|
|
614
|
+
return null;
|
|
615
|
+
}
|
|
616
|
+
result.push(sample);
|
|
617
|
+
}
|
|
618
|
+
return result;
|
|
619
|
+
}
|
|
620
|
+
case TypeID.anyTypification:
|
|
621
|
+
return null;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
function calculateModelStats(schema, engine, _engineGeneration) {
|
|
625
|
+
const items = schema.items;
|
|
626
|
+
const statusByID = /* @__PURE__ */ new Map();
|
|
627
|
+
for (const cst of items) {
|
|
628
|
+
statusByID.set(cst.id, engine.getCstStatus(cst.id));
|
|
629
|
+
}
|
|
630
|
+
return {
|
|
631
|
+
...calculateSchemaStats(schema),
|
|
632
|
+
base_elements: items.reduce((sum, cst) => sum + countBaseElements(cst, engine), 0),
|
|
633
|
+
count_missing_base: items.reduce(
|
|
634
|
+
(sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && isBasicConcept(cst.cst_type) ? 1 : 0),
|
|
635
|
+
0
|
|
636
|
+
),
|
|
637
|
+
count_false_axioms: items.reduce(
|
|
638
|
+
(sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.AXIOM_FALSE ? 1 : 0),
|
|
639
|
+
0
|
|
640
|
+
),
|
|
641
|
+
count_invalid_data: items.reduce(
|
|
642
|
+
(sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.INVALID_DATA ? 1 : 0),
|
|
643
|
+
0
|
|
644
|
+
),
|
|
645
|
+
count_invalid_calculations: items.reduce(
|
|
646
|
+
(sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EVAL_FAIL || statusByID.get(cst.id) === EvalStatus.NOT_PROCESSED ? 1 : 0),
|
|
647
|
+
0
|
|
648
|
+
),
|
|
649
|
+
count_empty_terms: items.reduce(
|
|
650
|
+
(sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && cst.cst_type === CstType.TERM ? 1 : 0),
|
|
651
|
+
0
|
|
652
|
+
)
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
function isModelIssue(engine, cst) {
|
|
656
|
+
const status = engine.getCstStatus(cst.id);
|
|
657
|
+
const isBasic = isBasicConcept(cst.cst_type);
|
|
658
|
+
return status === EvalStatus.EVAL_FAIL || status === EvalStatus.AXIOM_FALSE || status === EvalStatus.INVALID_DATA || isBasic && status === EvalStatus.EMPTY;
|
|
659
|
+
}
|
|
660
|
+
function isInterpretable(type) {
|
|
661
|
+
switch (type) {
|
|
662
|
+
case CstType.BASE:
|
|
663
|
+
case CstType.CONSTANT:
|
|
664
|
+
case CstType.STRUCTURED:
|
|
665
|
+
case CstType.AXIOM:
|
|
666
|
+
case CstType.TERM:
|
|
667
|
+
case CstType.STATEMENT:
|
|
668
|
+
return true;
|
|
669
|
+
case CstType.NOMINAL:
|
|
670
|
+
case CstType.FUNCTION:
|
|
671
|
+
case CstType.PREDICATE:
|
|
672
|
+
return false;
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
function isInferrable(type) {
|
|
676
|
+
switch (type) {
|
|
677
|
+
case CstType.AXIOM:
|
|
678
|
+
case CstType.STATEMENT:
|
|
679
|
+
case CstType.TERM:
|
|
680
|
+
return true;
|
|
681
|
+
case CstType.NOMINAL:
|
|
682
|
+
case CstType.BASE:
|
|
683
|
+
case CstType.CONSTANT:
|
|
684
|
+
case CstType.STRUCTURED:
|
|
685
|
+
case CstType.FUNCTION:
|
|
686
|
+
case CstType.PREDICATE:
|
|
687
|
+
return false;
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
function inferEvalStatus(value, cstType, wasCalculated = true, isInvalid = false) {
|
|
691
|
+
if (isBaseSet(cstType) || cstType === CstType.STRUCTURED) {
|
|
692
|
+
if (isInvalid) {
|
|
693
|
+
return EvalStatus.INVALID_DATA;
|
|
694
|
+
}
|
|
695
|
+
if (value === null || Array.isArray(value) && value.length === 0) {
|
|
696
|
+
return EvalStatus.EMPTY;
|
|
697
|
+
}
|
|
698
|
+
return EvalStatus.HAS_DATA;
|
|
699
|
+
}
|
|
700
|
+
if (!isInferrable(cstType)) {
|
|
701
|
+
return EvalStatus.NO_EVAL;
|
|
702
|
+
}
|
|
703
|
+
if (!wasCalculated) {
|
|
704
|
+
return EvalStatus.NOT_PROCESSED;
|
|
705
|
+
}
|
|
706
|
+
if (value === null) {
|
|
707
|
+
return EvalStatus.EVAL_FAIL;
|
|
708
|
+
}
|
|
709
|
+
if (cstType === CstType.AXIOM && value !== VALUE_TRUE) {
|
|
710
|
+
return EvalStatus.AXIOM_FALSE;
|
|
711
|
+
}
|
|
712
|
+
if (Array.isArray(value) && value.length === 0) {
|
|
713
|
+
return EvalStatus.EMPTY;
|
|
714
|
+
}
|
|
715
|
+
return EvalStatus.HAS_DATA;
|
|
716
|
+
}
|
|
717
|
+
function tryFixValue(value, type, targetAlias, targetValue) {
|
|
718
|
+
switch (type.typeID) {
|
|
719
|
+
case TypeID.integer:
|
|
720
|
+
return false;
|
|
721
|
+
case TypeID.basic:
|
|
722
|
+
if (type.baseID !== targetAlias) {
|
|
723
|
+
return false;
|
|
724
|
+
}
|
|
725
|
+
if (typeof value !== "number") {
|
|
726
|
+
return null;
|
|
727
|
+
}
|
|
728
|
+
if (!targetValue.includes(value)) {
|
|
729
|
+
return null;
|
|
730
|
+
}
|
|
731
|
+
return false;
|
|
732
|
+
case TypeID.tuple: {
|
|
733
|
+
if (!isTupleValue(value)) {
|
|
734
|
+
return null;
|
|
735
|
+
}
|
|
736
|
+
let wasChanged2 = false;
|
|
737
|
+
for (let i = 0; i < type.factors.length; i++) {
|
|
738
|
+
const componentChanged = tryFixValue(value[i + 1], type.factors[i], targetAlias, targetValue);
|
|
739
|
+
if (componentChanged === null) {
|
|
740
|
+
return null;
|
|
741
|
+
}
|
|
742
|
+
if (componentChanged) {
|
|
743
|
+
wasChanged2 = true;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
return wasChanged2;
|
|
747
|
+
}
|
|
748
|
+
case TypeID.collection:
|
|
749
|
+
if (!Array.isArray(value) || value.length > 1 && value[0] === TUPLE_ID) {
|
|
750
|
+
return null;
|
|
751
|
+
}
|
|
752
|
+
let wasChanged = false;
|
|
753
|
+
const removeElements = [];
|
|
754
|
+
for (const item of value) {
|
|
755
|
+
const elementChanged = tryFixValue(item, type.base, targetAlias, targetValue);
|
|
756
|
+
if (elementChanged === null || elementChanged === true) {
|
|
757
|
+
wasChanged = true;
|
|
758
|
+
if (elementChanged === null) {
|
|
759
|
+
removeElements.push(item);
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
for (const item of removeElements) {
|
|
764
|
+
const index = value.indexOf(item);
|
|
765
|
+
if (index !== -1) {
|
|
766
|
+
value.splice(index, 1);
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
if (wasChanged) {
|
|
770
|
+
value.sort((a, b) => compare(a, b));
|
|
771
|
+
let i = 1;
|
|
772
|
+
while (i < value.length) {
|
|
773
|
+
if (compare(value[i], value[i - 1]) === 0) {
|
|
774
|
+
value.splice(i, 1);
|
|
775
|
+
} else {
|
|
776
|
+
i++;
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
return wasChanged;
|
|
781
|
+
case TypeID.logic:
|
|
782
|
+
case TypeID.anyTypification:
|
|
783
|
+
case TypeID.predicate:
|
|
784
|
+
case TypeID.function:
|
|
785
|
+
return null;
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
function updateValueElement(value, path, newValue) {
|
|
789
|
+
return setNestedValue(value, path, newValue);
|
|
790
|
+
}
|
|
791
|
+
function deleteValueElement(value, path, type, target) {
|
|
792
|
+
if (path.length === 0 && type.typeID !== TypeID.collection) {
|
|
793
|
+
return null;
|
|
794
|
+
}
|
|
795
|
+
const arrayValue = extractValue(value, path);
|
|
796
|
+
const updatedArray = [...arrayValue.slice(0, target), ...arrayValue.slice(target + 1)];
|
|
797
|
+
return setNestedValue(value, path, updatedArray);
|
|
798
|
+
}
|
|
799
|
+
function addValueElement(value, path, type, currentType) {
|
|
800
|
+
if (path.length === 0 && type.typeID !== TypeID.collection) {
|
|
801
|
+
return makeDefaultValue(type);
|
|
802
|
+
}
|
|
803
|
+
const newElem = makeDefaultValue(currentType.base);
|
|
804
|
+
const arrayValue = extractValue(value, path) ?? [];
|
|
805
|
+
const updatedArray = [newElem, ...arrayValue];
|
|
806
|
+
return setNestedValue(value, path, updatedArray);
|
|
807
|
+
}
|
|
808
|
+
function countBaseElements(cst, engine) {
|
|
809
|
+
if (!isBasicConcept(cst.cst_type)) {
|
|
810
|
+
return 0;
|
|
811
|
+
}
|
|
812
|
+
const value = engine.getCstValue(cst.id);
|
|
813
|
+
if (value === null) {
|
|
814
|
+
return 0;
|
|
815
|
+
}
|
|
816
|
+
if (!Array.isArray(value) || value[0] === TUPLE_ID) {
|
|
817
|
+
return 1;
|
|
818
|
+
}
|
|
819
|
+
return value.length;
|
|
820
|
+
}
|
|
821
|
+
export {
|
|
822
|
+
addValueElement,
|
|
823
|
+
calculateModelStats,
|
|
824
|
+
deleteValueElement,
|
|
825
|
+
generateRandomValue,
|
|
826
|
+
inferEvalStatus,
|
|
827
|
+
isInferrable,
|
|
828
|
+
isInterpretable,
|
|
829
|
+
isModelIssue,
|
|
830
|
+
toBasicBinding,
|
|
831
|
+
tryFixValue,
|
|
832
|
+
updateValueElement,
|
|
833
|
+
validateBasicBindingData,
|
|
834
|
+
validateValueData
|
|
835
|
+
};
|
|
836
|
+
//# sourceMappingURL=rsmodel-api.js.map
|