@rsconcept/domain 1.0.0 → 1.1.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/README.md +3 -3
- package/dist/analyzer-DlSq3Y3r.d.ts +39 -0
- package/dist/arguments-extractor-1acwjQNc.d.ts +38 -0
- package/dist/ast-C8sIpKdL.d.ts +51 -0
- package/dist/ast-annotations-BiMjkKvz.d.ts +16 -0
- package/dist/branded-ZlzIcxzu.d.ts +9 -0
- package/dist/calculator-C9W2jkSx.d.ts +39 -0
- package/dist/cctext/index.d.ts +2 -1
- package/dist/cctext/index.js +2 -42
- package/dist/cctext/language-api.d.ts +10 -12
- package/dist/cctext/language-api.js +157 -227
- package/dist/cctext/language-api.js.map +1 -1
- package/dist/cctext/language.d.ts +24 -22
- package/dist/cctext/language.js +43 -39
- package/dist/cctext/language.js.map +1 -1
- package/dist/error-E1LVq_3w.d.ts +87 -0
- package/dist/graph/graph.d.ts +2 -62
- package/dist/graph/graph.js +339 -382
- package/dist/graph/graph.js.map +1 -1
- package/dist/graph/index.d.ts +2 -1
- package/dist/graph/index.js +2 -384
- package/dist/graph-DR8rL2o3.d.ts +64 -0
- package/dist/hash-Y8I4c6Al.d.ts +8 -0
- package/dist/index-BKZ67WMa.d.ts +1 -0
- package/dist/index-BVVgDSdq.d.ts +1 -0
- package/dist/index-DmtQKWjk.d.ts +1 -0
- package/dist/index-_6s0AX1B.d.ts +1 -0
- package/dist/index.d.ts +27 -28
- package/dist/index.js +23 -5851
- package/dist/lezer-tree-iS7LpLBJ.d.ts +14 -0
- package/dist/library/folder-tree.d.ts +22 -20
- package/dist/library/folder-tree.js +108 -130
- package/dist/library/folder-tree.js.map +1 -1
- package/dist/library/index.d.ts +8 -17
- package/dist/library/index.js +7 -2800
- package/dist/library/library-api.d.ts +3 -1
- package/dist/library/library-api.js +9 -8
- package/dist/library/library-api.js.map +1 -1
- package/dist/library/library.d.ts +2 -56
- package/dist/library/library.js +23 -19
- package/dist/library/library.js.map +1 -1
- package/dist/library/oss-api.d.ts +26 -37
- package/dist/library/oss-api.js +257 -1096
- package/dist/library/oss-api.js.map +1 -1
- package/dist/library/oss-layout-api.d.ts +28 -28
- package/dist/library/oss-layout-api.js +239 -316
- package/dist/library/oss-layout-api.js.map +1 -1
- package/dist/library/oss-layout.d.ts +2 -25
- package/dist/library/oss-layout.js +1 -1
- package/dist/library/oss.d.ts +87 -89
- package/dist/library/oss.js +27 -26
- package/dist/library/oss.js.map +1 -1
- package/dist/library/rsengine.d.ts +100 -106
- package/dist/library/rsengine.js +439 -2599
- package/dist/library/rsengine.js.map +1 -1
- package/dist/library/rsform-api.d.ts +11 -16
- package/dist/library/rsform-api.js +313 -825
- package/dist/library/rsform-api.js.map +1 -1
- package/dist/library/rsform.d.ts +159 -167
- package/dist/library/rsform.js +29 -28
- package/dist/library/rsform.js.map +1 -1
- package/dist/library/rsmodel-api.d.ts +8 -15
- package/dist/library/rsmodel-api.js +172 -813
- package/dist/library/rsmodel-api.js.map +1 -1
- package/dist/library/rsmodel.d.ts +27 -33
- package/dist/library/rsmodel.js +16 -23
- package/dist/library/rsmodel.js.map +1 -1
- package/dist/library/structure-planner.d.ts +20 -26
- package/dist/library/structure-planner.js +106 -474
- package/dist/library/structure-planner.js.map +1 -1
- package/dist/library-CYun28Xz.d.ts +58 -0
- package/dist/oss-layout-3glgAqfn.d.ts +27 -0
- package/dist/parser-Bwd8LxJ1.d.ts +7 -0
- package/dist/parsing/ast.d.ts +2 -49
- package/dist/parsing/ast.js +68 -76
- package/dist/parsing/ast.js.map +1 -1
- package/dist/parsing/index.d.ts +3 -3
- package/dist/parsing/index.js +3 -141
- package/dist/parsing/lezer-tree.d.ts +2 -13
- package/dist/parsing/lezer-tree.js +50 -43
- package/dist/parsing/lezer-tree.js.map +1 -1
- package/dist/rslang/api.d.ts +9 -14
- package/dist/rslang/api.js +114 -827
- package/dist/rslang/api.js.map +1 -1
- package/dist/rslang/ast-annotations.d.ts +2 -18
- package/dist/rslang/ast-annotations.js +34 -45
- package/dist/rslang/ast-annotations.js.map +1 -1
- package/dist/rslang/error.d.ts +2 -85
- package/dist/rslang/error.js +88 -150
- package/dist/rslang/error.js.map +1 -1
- package/dist/rslang/eval/calculator.d.ts +2 -43
- package/dist/rslang/eval/calculator.js +81 -1636
- package/dist/rslang/eval/calculator.js.map +1 -1
- package/dist/rslang/eval/evaluation-cache.d.ts +22 -26
- package/dist/rslang/eval/evaluation-cache.js +168 -287
- package/dist/rslang/eval/evaluation-cache.js.map +1 -1
- package/dist/rslang/eval/evaluator.d.ts +59 -63
- package/dist/rslang/eval/evaluator.js +602 -1509
- package/dist/rslang/eval/evaluator.js.map +1 -1
- package/dist/rslang/eval/value-api.d.ts +2 -48
- package/dist/rslang/eval/value-api.js +2 -490
- package/dist/rslang/eval/value.d.ts +2 -36
- package/dist/rslang/eval/value.js +2 -118
- package/dist/rslang/index.d.ts +14 -17
- package/dist/rslang/index.js +12 -4314
- package/dist/rslang/labels.d.ts +6 -6
- package/dist/rslang/labels.js +139 -305
- package/dist/rslang/labels.js.map +1 -1
- package/dist/rslang/parser/expression-generator.d.ts +5 -5
- package/dist/rslang/parser/expression-generator.js +248 -446
- package/dist/rslang/parser/expression-generator.js.map +1 -1
- package/dist/rslang/parser/normalize.d.ts +4 -8
- package/dist/rslang/parser/normalize.js +286 -481
- package/dist/rslang/parser/normalize.js.map +1 -1
- package/dist/rslang/parser/parser.d.ts +2 -5
- package/dist/rslang/parser/parser.js +30 -21
- package/dist/rslang/parser/parser.js.map +1 -1
- package/dist/rslang/parser/parser.terms.d.ts +43 -41
- package/dist/rslang/parser/parser.terms.js +44 -83
- package/dist/rslang/parser/parser.terms.js.map +1 -1
- package/dist/rslang/parser/syntax-errors.d.ts +5 -8
- package/dist/rslang/parser/syntax-errors.js +113 -382
- package/dist/rslang/parser/syntax-errors.js.map +1 -1
- package/dist/rslang/parser/token.d.ts +2 -79
- package/dist/rslang/parser/token.js +81 -93
- package/dist/rslang/parser/token.js.map +1 -1
- package/dist/rslang/semantic/analyzer.d.ts +2 -39
- package/dist/rslang/semantic/analyzer.js +186 -2600
- package/dist/rslang/semantic/analyzer.js.map +1 -1
- package/dist/rslang/semantic/arguments-extractor.d.ts +2 -42
- package/dist/rslang/semantic/arguments-extractor.js +202 -361
- package/dist/rslang/semantic/arguments-extractor.js.map +1 -1
- package/dist/rslang/semantic/type-auditor.d.ts +64 -68
- package/dist/rslang/semantic/type-auditor.js +594 -1564
- package/dist/rslang/semantic/type-auditor.js.map +1 -1
- package/dist/rslang/semantic/typification-api.d.ts +4 -7
- package/dist/rslang/semantic/typification-api.js +162 -303
- package/dist/rslang/semantic/typification-api.js.map +1 -1
- package/dist/rslang/semantic/typification-parser.d.ts +2 -12
- package/dist/rslang/semantic/typification-parser.js +165 -219
- package/dist/rslang/semantic/typification-parser.js.map +1 -1
- package/dist/rslang/semantic/typification.d.ts +2 -119
- package/dist/rslang/semantic/typification.js +66 -52
- package/dist/rslang/semantic/typification.js.map +1 -1
- package/dist/rslang/semantic/value-auditor.d.ts +32 -38
- package/dist/rslang/semantic/value-auditor.js +206 -518
- package/dist/rslang/semantic/value-auditor.js.map +1 -1
- package/dist/rslang/semantic/value-class.d.ts +2 -10
- package/dist/rslang/semantic/value-class.js +8 -7
- package/dist/rslang/semantic/value-class.js.map +1 -1
- package/dist/rslang/typification-graph.d.ts +2 -33
- package/dist/rslang/typification-graph.js +94 -306
- package/dist/rslang/typification-graph.js.map +1 -1
- package/dist/shared/branded.d.ts +2 -7
- package/dist/shared/branded.js +1 -1
- package/dist/shared/hash.d.ts +2 -6
- package/dist/shared/hash.js +13 -13
- package/dist/shared/hash.js.map +1 -1
- package/dist/shared/index.d.ts +3 -2
- package/dist/shared/index.js +2 -18
- package/dist/token-DeXAmzwr.d.ts +81 -0
- package/dist/typification-Dk-fisgO.d.ts +120 -0
- package/dist/typification-graph-6HcZ-rKH.d.ts +30 -0
- package/dist/typification-parser-BBVx1RxP.d.ts +13 -0
- package/dist/value-B8UtCqaK.js +366 -0
- package/dist/value-B8UtCqaK.js.map +1 -0
- package/dist/value-CTjX6825.d.ts +33 -0
- package/dist/value-api-Bw-SgaYY.d.ts +49 -0
- package/dist/value-class-CNI-lqXJ.d.ts +12 -0
- package/package.json +8 -8
- package/src/library/rsform-api.test.ts +24 -0
- package/src/library/rsform-api.ts +12 -4
- package/dist/cctext/index.js.map +0 -1
- package/dist/graph/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/library/index.js.map +0 -1
- package/dist/library/oss-layout.js.map +0 -1
- package/dist/parsing/index.js.map +0 -1
- package/dist/rslang/eval/value-api.js.map +0 -1
- package/dist/rslang/eval/value.js.map +0 -1
- package/dist/rslang/index.js.map +0 -1
- package/dist/shared/branded.js.map +0 -1
- package/dist/shared/index.js.map +0 -1
|
@@ -1,836 +1,195 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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;
|
|
1
|
+
import { TypeID } from "../rslang/semantic/typification.js";
|
|
2
|
+
import { D as setNestedValue, b as makeDefaultValue, c as compare, d as tuple, g as extractValue, y as isTupleValue } from "../value-B8UtCqaK.js";
|
|
3
|
+
import "../rslang/index.js";
|
|
4
|
+
import { CstType } from "./rsform.js";
|
|
5
|
+
import { calculateSchemaStats, isBaseSet, isBasicConcept } from "./rsform-api.js";
|
|
6
|
+
import { EvalStatus } from "./rsmodel.js";
|
|
7
|
+
//#region src/library/rsmodel-api.ts
|
|
8
|
+
const RANDOM_INTEGER_MIN = -100;
|
|
9
|
+
const DEFAULT_RANDOM_SET_ELEMENTS_COUNT = 5;
|
|
10
|
+
/** Evaluate if parsed data is a basic binding data. */
|
|
562
11
|
function validateBasicBindingData(data) {
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
}
|
|
566
|
-
return Object.entries(data).every(([key, value]) => typeof value === "string" && Number.isInteger(Number(key)));
|
|
12
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) return false;
|
|
13
|
+
return Object.entries(data).every(([key, value]) => typeof value === "string" && Number.isInteger(Number(key)));
|
|
567
14
|
}
|
|
15
|
+
/** Convert parsed data to a basic binding. */
|
|
568
16
|
function toBasicBinding(data) {
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
}
|
|
573
|
-
return result;
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const [k, v] of Object.entries(data)) result[Number(k)] = v;
|
|
19
|
+
return result;
|
|
574
20
|
}
|
|
21
|
+
/** Evaluate if parsed data is a {@link Value} data. */
|
|
575
22
|
function validateValueData(data) {
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
if (!Array.isArray(data)) {
|
|
580
|
-
return false;
|
|
581
|
-
}
|
|
582
|
-
return data.every((item) => validateValueData(item));
|
|
23
|
+
if (typeof data === "number") return Number.isFinite(data);
|
|
24
|
+
if (!Array.isArray(data)) return false;
|
|
25
|
+
return data.every((item) => validateValueData(item));
|
|
583
26
|
}
|
|
584
27
|
function generateRandomValue(type, basics, cstByAlias, setElementsCount = DEFAULT_RANDOM_SET_ELEMENTS_COUNT) {
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
}
|
|
618
|
-
return result;
|
|
619
|
-
}
|
|
620
|
-
case TypeID.anyTypification:
|
|
621
|
-
return null;
|
|
622
|
-
}
|
|
623
|
-
}
|
|
28
|
+
switch (type.typeID) {
|
|
29
|
+
case TypeID.integer: return Math.floor(Math.random() * 201) + RANDOM_INTEGER_MIN;
|
|
30
|
+
case TypeID.basic: {
|
|
31
|
+
const cst = cstByAlias.get(type.baseID);
|
|
32
|
+
const binding = cst ? basics.get(cst.id) : void 0;
|
|
33
|
+
const ids = Object.keys(binding ?? {}).map(Number);
|
|
34
|
+
if (ids.length === 0) return null;
|
|
35
|
+
return ids[Math.floor(Math.random() * ids.length)];
|
|
36
|
+
}
|
|
37
|
+
case TypeID.tuple: {
|
|
38
|
+
const factors = [];
|
|
39
|
+
for (const factor of type.factors) {
|
|
40
|
+
const sample = generateRandomValue(factor, basics, cstByAlias, setElementsCount);
|
|
41
|
+
if (sample === null) return null;
|
|
42
|
+
factors.push(sample);
|
|
43
|
+
}
|
|
44
|
+
return tuple(factors);
|
|
45
|
+
}
|
|
46
|
+
case TypeID.collection: {
|
|
47
|
+
const result = [];
|
|
48
|
+
const randomElementsCount = Math.floor(Math.random() * (setElementsCount + 1));
|
|
49
|
+
for (let i = 0; i < randomElementsCount; i++) {
|
|
50
|
+
const sample = generateRandomValue(type.base, basics, cstByAlias, setElementsCount);
|
|
51
|
+
if (sample === null) return null;
|
|
52
|
+
result.push(sample);
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
case TypeID.anyTypification: return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Calculate statistics for {@link RSModel}. */
|
|
624
60
|
function calculateModelStats(schema, engine, _engineGeneration) {
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
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
|
-
}
|
|
61
|
+
const items = schema.items;
|
|
62
|
+
const statusByID = /* @__PURE__ */ new Map();
|
|
63
|
+
for (const cst of items) statusByID.set(cst.id, engine.getCstStatus(cst.id));
|
|
64
|
+
return {
|
|
65
|
+
...calculateSchemaStats(schema),
|
|
66
|
+
base_elements: items.reduce((sum, cst) => sum + countBaseElements(cst, engine), 0),
|
|
67
|
+
count_missing_base: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && isBasicConcept(cst.cst_type) ? 1 : 0), 0),
|
|
68
|
+
count_false_axioms: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.AXIOM_FALSE ? 1 : 0), 0),
|
|
69
|
+
count_invalid_data: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.INVALID_DATA ? 1 : 0), 0),
|
|
70
|
+
count_invalid_calculations: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EVAL_FAIL || statusByID.get(cst.id) === EvalStatus.NOT_PROCESSED ? 1 : 0), 0),
|
|
71
|
+
count_empty_terms: items.reduce((sum, cst) => sum + (statusByID.get(cst.id) === EvalStatus.EMPTY && cst.cst_type === CstType.TERM ? 1 : 0), 0)
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/** Checks whether evaluation status contributes to model status issues. */
|
|
655
75
|
function isModelIssue(engine, cst) {
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
76
|
+
const status = engine.getCstStatus(cst.id);
|
|
77
|
+
const isBasic = isBasicConcept(cst.cst_type);
|
|
78
|
+
return status === EvalStatus.EVAL_FAIL || status === EvalStatus.AXIOM_FALSE || status === EvalStatus.INVALID_DATA || isBasic && status === EvalStatus.EMPTY;
|
|
659
79
|
}
|
|
80
|
+
/** Evaluate if {@link CstType} is interpretable. */
|
|
660
81
|
function isInterpretable(type) {
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
}
|
|
82
|
+
switch (type) {
|
|
83
|
+
case CstType.BASE:
|
|
84
|
+
case CstType.CONSTANT:
|
|
85
|
+
case CstType.STRUCTURED:
|
|
86
|
+
case CstType.AXIOM:
|
|
87
|
+
case CstType.TERM:
|
|
88
|
+
case CstType.STATEMENT: return true;
|
|
89
|
+
case CstType.NOMINAL:
|
|
90
|
+
case CstType.FUNCTION:
|
|
91
|
+
case CstType.PREDICATE: return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Evaluate if {@link CstType} is inferrable. */
|
|
675
95
|
function isInferrable(type) {
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
}
|
|
96
|
+
switch (type) {
|
|
97
|
+
case CstType.AXIOM:
|
|
98
|
+
case CstType.STATEMENT:
|
|
99
|
+
case CstType.TERM: return true;
|
|
100
|
+
case CstType.NOMINAL:
|
|
101
|
+
case CstType.BASE:
|
|
102
|
+
case CstType.CONSTANT:
|
|
103
|
+
case CstType.STRUCTURED:
|
|
104
|
+
case CstType.FUNCTION:
|
|
105
|
+
case CstType.PREDICATE: return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Infers status of a given {@link Value} and {@link CstType}. */
|
|
690
109
|
function inferEvalStatus(value, cstType, wasCalculated = true, isInvalid = false) {
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
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
|
-
}
|
|
110
|
+
if (isBaseSet(cstType) || cstType === CstType.STRUCTURED) {
|
|
111
|
+
if (isInvalid) return EvalStatus.INVALID_DATA;
|
|
112
|
+
if (value === null || Array.isArray(value) && value.length === 0) return EvalStatus.EMPTY;
|
|
113
|
+
return EvalStatus.HAS_DATA;
|
|
114
|
+
}
|
|
115
|
+
if (!isInferrable(cstType)) return EvalStatus.NO_EVAL;
|
|
116
|
+
if (!wasCalculated) return EvalStatus.NOT_PROCESSED;
|
|
117
|
+
if (value === null) return EvalStatus.EVAL_FAIL;
|
|
118
|
+
if (cstType === CstType.AXIOM && value !== 1) return EvalStatus.AXIOM_FALSE;
|
|
119
|
+
if (Array.isArray(value) && value.length === 0) return EvalStatus.EMPTY;
|
|
120
|
+
return EvalStatus.HAS_DATA;
|
|
121
|
+
}
|
|
122
|
+
/** Tries to fix value removing invalid base elements not present in the target value.
|
|
123
|
+
* returns null if no fixing is possible.
|
|
124
|
+
* returns true if fixing was successful.
|
|
125
|
+
* returns false if fixing was not needed.
|
|
126
|
+
*/
|
|
717
127
|
function tryFixValue(value, type, targetAlias, targetValue) {
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
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
|
-
}
|
|
128
|
+
switch (type.typeID) {
|
|
129
|
+
case TypeID.integer: return false;
|
|
130
|
+
case TypeID.basic:
|
|
131
|
+
if (type.baseID !== targetAlias) return false;
|
|
132
|
+
if (typeof value !== "number") return null;
|
|
133
|
+
if (!targetValue.includes(value)) return null;
|
|
134
|
+
return false;
|
|
135
|
+
case TypeID.tuple: {
|
|
136
|
+
if (!isTupleValue(value)) return null;
|
|
137
|
+
let wasChanged = false;
|
|
138
|
+
for (let i = 0; i < type.factors.length; i++) {
|
|
139
|
+
const componentChanged = tryFixValue(value[i + 1], type.factors[i], targetAlias, targetValue);
|
|
140
|
+
if (componentChanged === null) return null;
|
|
141
|
+
if (componentChanged) wasChanged = true;
|
|
142
|
+
}
|
|
143
|
+
return wasChanged;
|
|
144
|
+
}
|
|
145
|
+
case TypeID.collection:
|
|
146
|
+
if (!Array.isArray(value) || value.length > 1 && value[0] === -111) return null;
|
|
147
|
+
let wasChanged = false;
|
|
148
|
+
const removeElements = [];
|
|
149
|
+
for (const item of value) {
|
|
150
|
+
const elementChanged = tryFixValue(item, type.base, targetAlias, targetValue);
|
|
151
|
+
if (elementChanged === null || elementChanged === true) {
|
|
152
|
+
wasChanged = true;
|
|
153
|
+
if (elementChanged === null) removeElements.push(item);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
for (const item of removeElements) {
|
|
157
|
+
const index = value.indexOf(item);
|
|
158
|
+
if (index !== -1) value.splice(index, 1);
|
|
159
|
+
}
|
|
160
|
+
if (wasChanged) {
|
|
161
|
+
value.sort((a, b) => compare(a, b));
|
|
162
|
+
let i = 1;
|
|
163
|
+
while (i < value.length) if (compare(value[i], value[i - 1]) === 0) value.splice(i, 1);
|
|
164
|
+
else i++;
|
|
165
|
+
}
|
|
166
|
+
return wasChanged;
|
|
167
|
+
case TypeID.logic:
|
|
168
|
+
case TypeID.anyTypification:
|
|
169
|
+
case TypeID.predicate:
|
|
170
|
+
case TypeID.function: return null;
|
|
171
|
+
}
|
|
787
172
|
}
|
|
788
173
|
function updateValueElement(value, path, newValue) {
|
|
789
|
-
|
|
174
|
+
return setNestedValue(value, path, newValue);
|
|
790
175
|
}
|
|
791
176
|
function deleteValueElement(value, path, type, target) {
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
const arrayValue = extractValue(value, path);
|
|
796
|
-
const updatedArray = [...arrayValue.slice(0, target), ...arrayValue.slice(target + 1)];
|
|
797
|
-
return setNestedValue(value, path, updatedArray);
|
|
177
|
+
if (path.length === 0 && type.typeID !== TypeID.collection) return null;
|
|
178
|
+
const arrayValue = extractValue(value, path);
|
|
179
|
+
return setNestedValue(value, path, [...arrayValue.slice(0, target), ...arrayValue.slice(target + 1)]);
|
|
798
180
|
}
|
|
799
181
|
function addValueElement(value, path, type, currentType) {
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
}
|
|
803
|
-
const newElem = makeDefaultValue(currentType.base);
|
|
804
|
-
const arrayValue = extractValue(value, path) ?? [];
|
|
805
|
-
const updatedArray = [newElem, ...arrayValue];
|
|
806
|
-
return setNestedValue(value, path, updatedArray);
|
|
182
|
+
if (path.length === 0 && type.typeID !== TypeID.collection) return makeDefaultValue(type);
|
|
183
|
+
return setNestedValue(value, path, [makeDefaultValue(currentType.base), ...extractValue(value, path) ?? []]);
|
|
807
184
|
}
|
|
808
185
|
function countBaseElements(cst, engine) {
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
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
|
-
};
|
|
186
|
+
if (!isBasicConcept(cst.cst_type)) return 0;
|
|
187
|
+
const value = engine.getCstValue(cst.id);
|
|
188
|
+
if (value === null) return 0;
|
|
189
|
+
if (!Array.isArray(value) || value[0] === -111) return 1;
|
|
190
|
+
return value.length;
|
|
191
|
+
}
|
|
192
|
+
//#endregion
|
|
193
|
+
export { addValueElement, calculateModelStats, deleteValueElement, generateRandomValue, inferEvalStatus, isInferrable, isInterpretable, isModelIssue, toBasicBinding, tryFixValue, updateValueElement, validateBasicBindingData, validateValueData };
|
|
194
|
+
|
|
836
195
|
//# sourceMappingURL=rsmodel-api.js.map
|