@rsconcept/domain 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +258 -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/oss-api.test.ts +76 -0
- package/src/library/oss-api.ts +4 -1
- 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,879 +1,367 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// 10241
|
|
23
|
-
localNotUsed: 10242,
|
|
24
|
-
// 10242
|
|
25
|
-
localUndeclared: 34817,
|
|
26
|
-
// 34817
|
|
27
|
-
localShadowing: 34818,
|
|
28
|
-
// 34818
|
|
29
|
-
typesNotEqual: 34819,
|
|
30
|
-
// 34819
|
|
31
|
-
globalNotTyped: 34820,
|
|
32
|
-
// 34820
|
|
33
|
-
invalidDecart: 34821,
|
|
34
|
-
// 34821
|
|
35
|
-
invalidBoolean: 34822,
|
|
36
|
-
// 34822
|
|
37
|
-
invalidTypeOperation: 34823,
|
|
38
|
-
// 34823
|
|
39
|
-
invalidCard: 34824,
|
|
40
|
-
// 34824
|
|
41
|
-
invalidDebool: 34825,
|
|
42
|
-
// 34825
|
|
43
|
-
globalFuncWithoutArgs: 34827,
|
|
44
|
-
// 34827
|
|
45
|
-
invalidReduce: 34832,
|
|
46
|
-
// 34832
|
|
47
|
-
invalidProjectionTuple: 34833,
|
|
48
|
-
// 34833
|
|
49
|
-
invalidProjectionSet: 34834,
|
|
50
|
-
// 34834
|
|
51
|
-
invalidEnumeration: 34835,
|
|
52
|
-
// 34835
|
|
53
|
-
invalidCortegeDeclare: 34836,
|
|
54
|
-
// 34836
|
|
55
|
-
localOutOfScope: 34837,
|
|
56
|
-
// 34837
|
|
57
|
-
invalidElementPredicate: 34838,
|
|
58
|
-
// 34838
|
|
59
|
-
invalidEmptySetUsage: 34839,
|
|
60
|
-
// 34839
|
|
61
|
-
invalidArgsArity: 34840,
|
|
62
|
-
// 34840
|
|
63
|
-
invalidArgumentType: 34841,
|
|
64
|
-
// 34841
|
|
65
|
-
globalStructure: 34844,
|
|
66
|
-
// 34844
|
|
67
|
-
radicalUsage: 34849,
|
|
68
|
-
// 34849
|
|
69
|
-
invalidFilterArgumentType: 34850,
|
|
70
|
-
// 34850
|
|
71
|
-
invalidFilterArity: 34851,
|
|
72
|
-
// 34851
|
|
73
|
-
arithmeticNotSupported: 34852,
|
|
74
|
-
// 34852
|
|
75
|
-
typesNotCompatible: 34853,
|
|
76
|
-
// 34853
|
|
77
|
-
orderingNotSupported: 34854,
|
|
78
|
-
// 34854
|
|
79
|
-
expectedLogic: 34855,
|
|
80
|
-
// 34855
|
|
81
|
-
expectedSetexpr: 34856,
|
|
82
|
-
// 34856
|
|
83
|
-
invalidArgumentCortegeDeclare: 34857,
|
|
84
|
-
// 34857
|
|
85
|
-
globalNoValue: 34880,
|
|
86
|
-
// 34880
|
|
87
|
-
invalidPropertyUsage: 34881,
|
|
88
|
-
// 34881
|
|
89
|
-
// Value evaluation (runtime)
|
|
90
|
-
calcUnknownError: 33024,
|
|
91
|
-
// 35328
|
|
92
|
-
setOverflow: 33025,
|
|
93
|
-
// 35329
|
|
94
|
-
booleanBaseLimit: 33026,
|
|
95
|
-
// 35330
|
|
96
|
-
calcGlobalMissing: 33027,
|
|
97
|
-
// 35331
|
|
98
|
-
iterationsLimit: 33028,
|
|
99
|
-
// 35332
|
|
100
|
-
calcInvalidDebool: 33029,
|
|
101
|
-
// 35333
|
|
102
|
-
iterateInfinity: 33030,
|
|
103
|
-
// 35334
|
|
104
|
-
calculationNotSupported: 33031,
|
|
105
|
-
// 35335
|
|
106
|
-
cstEmptyDerived: 34913,
|
|
107
|
-
// 34913
|
|
108
|
-
definitionNotAllowed: 34914
|
|
109
|
-
// 34914
|
|
1
|
+
import { RSErrorCode } from "../rslang/error.js";
|
|
2
|
+
import { TypeClass, TypeID, basic, bool, constant, isTypification } from "../rslang/semantic/typification.js";
|
|
3
|
+
import { applyPath } from "../rslang/semantic/typification-api.js";
|
|
4
|
+
import { ValueClass } from "../rslang/semantic/value-class.js";
|
|
5
|
+
import "../rslang/index.js";
|
|
6
|
+
import { CstClass, CstStatus, CstType } from "./rsform.js";
|
|
7
|
+
//#region src/library/rsform-api.ts
|
|
8
|
+
/**
|
|
9
|
+
* Module: API for formal representation for systems of concepts.
|
|
10
|
+
*/
|
|
11
|
+
/** Record of {@link CstType} prefixes. */
|
|
12
|
+
const CST_TYPE_PREFIX = {
|
|
13
|
+
[CstType.NOMINAL]: "N",
|
|
14
|
+
[CstType.BASE]: "X",
|
|
15
|
+
[CstType.CONSTANT]: "C",
|
|
16
|
+
[CstType.STRUCTURED]: "S",
|
|
17
|
+
[CstType.AXIOM]: "A",
|
|
18
|
+
[CstType.TERM]: "D",
|
|
19
|
+
[CstType.FUNCTION]: "F",
|
|
20
|
+
[CstType.PREDICATE]: "P",
|
|
21
|
+
[CstType.STATEMENT]: "T"
|
|
110
22
|
};
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
ID_PREDICATE: 261,
|
|
123
|
-
ID_RADICAL: 262,
|
|
124
|
-
LIT_INTEGER: 263,
|
|
125
|
-
LIT_WHOLE_NUMBERS: 264,
|
|
126
|
-
LIT_EMPTYSET: 265,
|
|
127
|
-
// Arithmetic
|
|
128
|
-
PLUS: 266,
|
|
129
|
-
MINUS: 267,
|
|
130
|
-
MULTIPLY: 268,
|
|
131
|
-
// Integer predicate symbols
|
|
132
|
-
GREATER: 269,
|
|
133
|
-
LESSER: 270,
|
|
134
|
-
GREATER_OR_EQ: 271,
|
|
135
|
-
LESSER_OR_EQ: 272,
|
|
136
|
-
// Equality comparison
|
|
137
|
-
EQUAL: 273,
|
|
138
|
-
NOTEQUAL: 274,
|
|
139
|
-
// Logic predicate symbols
|
|
140
|
-
QUANTOR_UNIVERSAL: 275,
|
|
141
|
-
QUANTOR_EXISTS: 276,
|
|
142
|
-
LOGIC_NOT: 277,
|
|
143
|
-
LOGIC_EQUIVALENT: 278,
|
|
144
|
-
LOGIC_IMPLICATION: 279,
|
|
145
|
-
LOGIC_OR: 280,
|
|
146
|
-
LOGIC_AND: 281,
|
|
147
|
-
// Set theory predicate symbols
|
|
148
|
-
SET_IN: 282,
|
|
149
|
-
SET_NOT_IN: 283,
|
|
150
|
-
SUBSET: 284,
|
|
151
|
-
SUBSET_OR_EQ: 285,
|
|
152
|
-
NOT_SUBSET: 286,
|
|
153
|
-
// Set theory operators
|
|
154
|
-
DECART: 287,
|
|
155
|
-
SET_UNION: 288,
|
|
156
|
-
SET_INTERSECTION: 289,
|
|
157
|
-
SET_MINUS: 290,
|
|
158
|
-
SET_SYMMETRIC_MINUS: 291,
|
|
159
|
-
BOOLEAN: 292,
|
|
160
|
-
// Structure operations
|
|
161
|
-
BIGPR: 293,
|
|
162
|
-
SMALLPR: 294,
|
|
163
|
-
FILTER: 295,
|
|
164
|
-
CARD: 296,
|
|
165
|
-
BOOL: 297,
|
|
166
|
-
DEBOOL: 298,
|
|
167
|
-
REDUCE: 299,
|
|
168
|
-
// Term constructions prefixes
|
|
169
|
-
DECLARATIVE: 300,
|
|
170
|
-
RECURSIVE: 301,
|
|
171
|
-
IMPERATIVE: 302,
|
|
172
|
-
ITERATE: 303,
|
|
173
|
-
ASSIGN: 304,
|
|
174
|
-
// Punctuation
|
|
175
|
-
PUNCTUATION_DEFINE: 305,
|
|
176
|
-
PUNCTUATION_STRUCT: 306,
|
|
177
|
-
PUNCTUATION_PL: 307,
|
|
178
|
-
PUNCTUATION_PR: 308,
|
|
179
|
-
PUNCTUATION_CL: 309,
|
|
180
|
-
PUNCTUATION_CR: 310,
|
|
181
|
-
PUNCTUATION_SL: 311,
|
|
182
|
-
PUNCTUATION_SR: 312,
|
|
183
|
-
PUNCTUATION_BAR: 313,
|
|
184
|
-
PUNCTUATION_COMMA: 314,
|
|
185
|
-
PUNCTUATION_SEMICOLON: 315,
|
|
186
|
-
// ======= Non-terminal tokens =========
|
|
187
|
-
NT_ENUM_DECL: 316,
|
|
188
|
-
NT_TUPLE: 317,
|
|
189
|
-
NT_ENUMERATION: 318,
|
|
190
|
-
NT_TUPLE_DECL: 319,
|
|
191
|
-
NT_ARG_DECL: 320,
|
|
192
|
-
NT_FUNC_DEFINITION: 321,
|
|
193
|
-
NT_ARGUMENTS: 322,
|
|
194
|
-
NT_FUNC_CALL: 323,
|
|
195
|
-
NT_DECLARATIVE_EXPR: 324,
|
|
196
|
-
NT_IMPERATIVE_EXPR: 325,
|
|
197
|
-
NT_RECURSIVE_FULL: 326,
|
|
198
|
-
NT_RECURSIVE_SHORT: 327,
|
|
199
|
-
// ======= Helper tokens ========
|
|
200
|
-
INTERRUPT: 328,
|
|
201
|
-
END: 329
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
// src/rslang/semantic/typification.ts
|
|
205
|
-
var TypeID = {
|
|
206
|
-
anyTypification: 1,
|
|
207
|
-
integer: 2,
|
|
208
|
-
basic: 3,
|
|
209
|
-
tuple: 4,
|
|
210
|
-
collection: 5,
|
|
211
|
-
logic: 6,
|
|
212
|
-
function: 7,
|
|
213
|
-
predicate: 8
|
|
214
|
-
};
|
|
215
|
-
var TypeClass = {
|
|
216
|
-
logic: 1,
|
|
217
|
-
typification: 2,
|
|
218
|
-
function: 3,
|
|
219
|
-
predicate: 4
|
|
220
|
-
};
|
|
221
|
-
var LogicT = { typeID: TypeID.logic };
|
|
222
|
-
var IntegerT = {
|
|
223
|
-
typeID: TypeID.integer,
|
|
224
|
-
isOrdered: true,
|
|
225
|
-
isArithmetic: true,
|
|
226
|
-
isIntegerCompatible: true
|
|
227
|
-
};
|
|
228
|
-
var AnyTypificationT = { typeID: TypeID.anyTypification };
|
|
229
|
-
var EmptySetT = bool(AnyTypificationT);
|
|
230
|
-
function basic(alias) {
|
|
231
|
-
return { typeID: TypeID.basic, baseID: alias };
|
|
232
|
-
}
|
|
233
|
-
function constant(alias) {
|
|
234
|
-
return { typeID: TypeID.basic, baseID: alias, isOrdered: true, isArithmetic: true, isIntegerCompatible: true };
|
|
235
|
-
}
|
|
236
|
-
function bool(base) {
|
|
237
|
-
return { typeID: TypeID.collection, base };
|
|
238
|
-
}
|
|
239
|
-
function component(target, index) {
|
|
240
|
-
return target.factors[index - 1] ?? null;
|
|
241
|
-
}
|
|
242
|
-
function isTypification(type) {
|
|
243
|
-
return type?.typeID === TypeID.basic || type?.typeID === TypeID.anyTypification || type?.typeID === TypeID.integer || type?.typeID === TypeID.collection || type?.typeID === TypeID.tuple;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// src/rslang/parser/parser.ts
|
|
247
|
-
import { LRParser } from "@lezer/lr";
|
|
248
|
-
var parser = LRParser.deserialize({
|
|
249
|
-
version: 14,
|
|
250
|
-
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",
|
|
251
|
-
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~",
|
|
252
|
-
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",
|
|
253
|
-
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",
|
|
254
|
-
maxTerm: 87,
|
|
255
|
-
nodeProps: [
|
|
256
|
-
["openedBy", 6, "(", 53, "{"],
|
|
257
|
-
["closedBy", 7, ")", 54, "}"]
|
|
258
|
-
],
|
|
259
|
-
skippedNodes: [0],
|
|
260
|
-
repeatNodeCount: 0,
|
|
261
|
-
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_~",
|
|
262
|
-
tokenizers: [0],
|
|
263
|
-
topRules: { "Expression": [0, 1] },
|
|
264
|
-
tokenPrec: 2679
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
// src/rslang/parser/parser.terms.ts
|
|
268
|
-
var Local = 5;
|
|
269
|
-
var Tuple = 8;
|
|
270
|
-
var Predicate = 26;
|
|
271
|
-
var Variable_pack = 31;
|
|
272
|
-
var Integer = 39;
|
|
273
|
-
var EmptySet = 40;
|
|
274
|
-
var IntegerSet = 41;
|
|
275
|
-
var Global = 42;
|
|
276
|
-
var Radical = 43;
|
|
277
|
-
var Enumeration = 55;
|
|
278
|
-
var Boolean = 56;
|
|
279
|
-
var Filter = 59;
|
|
280
|
-
var Declarative = 60;
|
|
281
|
-
var Imperative = 64;
|
|
282
|
-
var Function = 69;
|
|
283
|
-
var BigPr = 70;
|
|
284
|
-
var SmallPr = 71;
|
|
285
|
-
var Card = 72;
|
|
286
|
-
var Bool = 73;
|
|
287
|
-
var Debool = 74;
|
|
288
|
-
var Red = 75;
|
|
289
|
-
var Function_decl = 76;
|
|
290
|
-
var Arguments = 77;
|
|
291
|
-
var Declaration = 78;
|
|
292
|
-
|
|
293
|
-
// src/rslang/parser/normalize.ts
|
|
294
|
-
var idRecord = {
|
|
295
|
-
[Global]: TokenID.ID_GLOBAL,
|
|
296
|
-
[Local]: TokenID.ID_LOCAL,
|
|
297
|
-
[Radical]: TokenID.ID_RADICAL,
|
|
298
|
-
[Function]: TokenID.ID_FUNCTION,
|
|
299
|
-
[Predicate]: TokenID.ID_PREDICATE,
|
|
300
|
-
[Integer]: TokenID.LIT_INTEGER,
|
|
301
|
-
[EmptySet]: TokenID.LIT_EMPTYSET,
|
|
302
|
-
[IntegerSet]: TokenID.LIT_WHOLE_NUMBERS,
|
|
303
|
-
[Boolean]: TokenID.BOOLEAN,
|
|
304
|
-
[BigPr]: TokenID.BIGPR,
|
|
305
|
-
[SmallPr]: TokenID.SMALLPR,
|
|
306
|
-
[Filter]: TokenID.FILTER,
|
|
307
|
-
[Bool]: TokenID.BOOL,
|
|
308
|
-
[Debool]: TokenID.DEBOOL,
|
|
309
|
-
[Red]: TokenID.REDUCE,
|
|
310
|
-
[Card]: TokenID.CARD,
|
|
311
|
-
[Enumeration]: TokenID.NT_ENUMERATION,
|
|
312
|
-
[Tuple]: TokenID.NT_TUPLE,
|
|
313
|
-
[Arguments]: TokenID.NT_ARGUMENTS,
|
|
314
|
-
[Declaration]: TokenID.NT_ARG_DECL,
|
|
315
|
-
[Function_decl]: TokenID.NT_FUNC_DEFINITION,
|
|
316
|
-
[Variable_pack]: TokenID.NT_ENUM_DECL,
|
|
317
|
-
[Declarative]: TokenID.NT_DECLARATIVE_EXPR,
|
|
318
|
-
[Imperative]: TokenID.NT_IMPERATIVE_EXPR
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
// src/rslang/labels.ts
|
|
322
|
-
var labelTokenRecord = {
|
|
323
|
-
[TokenID.DECART]: "\xD7",
|
|
324
|
-
[TokenID.PUNCTUATION_PL]: "( )",
|
|
325
|
-
[TokenID.PUNCTUATION_SL]: "[ ]",
|
|
326
|
-
[TokenID.QUANTOR_UNIVERSAL]: "\u2200",
|
|
327
|
-
[TokenID.QUANTOR_EXISTS]: "\u2203",
|
|
328
|
-
[TokenID.LOGIC_NOT]: "\xAC",
|
|
329
|
-
[TokenID.LOGIC_AND]: "&",
|
|
330
|
-
[TokenID.LOGIC_OR]: "\u2228",
|
|
331
|
-
[TokenID.LOGIC_IMPLICATION]: "\u21D2",
|
|
332
|
-
[TokenID.LOGIC_EQUIVALENT]: "\u21D4",
|
|
333
|
-
[TokenID.LIT_EMPTYSET]: "\u2205",
|
|
334
|
-
[TokenID.LIT_WHOLE_NUMBERS]: "Z",
|
|
335
|
-
[TokenID.MULTIPLY]: "*",
|
|
336
|
-
[TokenID.EQUAL]: "=",
|
|
337
|
-
[TokenID.NOTEQUAL]: "\u2260",
|
|
338
|
-
[TokenID.GREATER_OR_EQ]: "\u2265",
|
|
339
|
-
[TokenID.LESSER_OR_EQ]: "\u2264",
|
|
340
|
-
[TokenID.SET_IN]: "\u2208",
|
|
341
|
-
[TokenID.SET_NOT_IN]: "\u2209",
|
|
342
|
-
[TokenID.SUBSET_OR_EQ]: "\u2286",
|
|
343
|
-
[TokenID.SUBSET]: "\u2282",
|
|
344
|
-
[TokenID.NOT_SUBSET]: "\u2284",
|
|
345
|
-
[TokenID.SET_INTERSECTION]: "\u2229",
|
|
346
|
-
[TokenID.SET_UNION]: "\u222A",
|
|
347
|
-
[TokenID.SET_MINUS]: "\\",
|
|
348
|
-
[TokenID.SET_SYMMETRIC_MINUS]: "\u2206",
|
|
349
|
-
[TokenID.BOOLEAN]: "\u212C()",
|
|
350
|
-
[TokenID.NT_DECLARATIVE_EXPR]: "D{}",
|
|
351
|
-
[TokenID.NT_IMPERATIVE_EXPR]: "I{}",
|
|
352
|
-
[TokenID.NT_RECURSIVE_FULL]: "R{}",
|
|
353
|
-
[TokenID.BIGPR]: "Pr1()",
|
|
354
|
-
[TokenID.SMALLPR]: "pr1()",
|
|
355
|
-
[TokenID.FILTER]: "Fi1[]()",
|
|
356
|
-
[TokenID.REDUCE]: "red()",
|
|
357
|
-
[TokenID.CARD]: "card()",
|
|
358
|
-
[TokenID.BOOL]: "bool()",
|
|
359
|
-
[TokenID.DEBOOL]: "debool()",
|
|
360
|
-
[TokenID.ASSIGN]: ":=",
|
|
361
|
-
[TokenID.ITERATE]: ":\u2208"
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
// src/rslang/semantic/typification-api.ts
|
|
365
|
-
var TypeIDToClass = {
|
|
366
|
-
[TypeID.anyTypification]: TypeClass.typification,
|
|
367
|
-
[TypeID.integer]: TypeClass.typification,
|
|
368
|
-
[TypeID.basic]: TypeClass.typification,
|
|
369
|
-
[TypeID.tuple]: TypeClass.typification,
|
|
370
|
-
[TypeID.collection]: TypeClass.typification,
|
|
371
|
-
[TypeID.logic]: TypeClass.logic,
|
|
372
|
-
[TypeID.function]: TypeClass.function,
|
|
373
|
-
[TypeID.predicate]: TypeClass.predicate
|
|
374
|
-
};
|
|
375
|
-
function applyPath(target, path, index = 0) {
|
|
376
|
-
let current = target;
|
|
377
|
-
let i = index;
|
|
378
|
-
while (i < path.length && current) {
|
|
379
|
-
switch (current.typeID) {
|
|
380
|
-
case TypeID.anyTypification:
|
|
381
|
-
case TypeID.integer:
|
|
382
|
-
case TypeID.basic:
|
|
383
|
-
return null;
|
|
384
|
-
case TypeID.collection:
|
|
385
|
-
current = current.base;
|
|
386
|
-
i++;
|
|
387
|
-
break;
|
|
388
|
-
case TypeID.tuple:
|
|
389
|
-
current = component(current, path[i]);
|
|
390
|
-
if (current === null) {
|
|
391
|
-
return null;
|
|
392
|
-
}
|
|
393
|
-
i++;
|
|
394
|
-
break;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
return current;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
// src/rslang/semantic/value-class.ts
|
|
401
|
-
var ValueClass = {
|
|
402
|
-
VALUE: "value",
|
|
403
|
-
PROPERTY: "property"
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
// src/library/rsform.ts
|
|
407
|
-
var CstType = {
|
|
408
|
-
NOMINAL: "nominal",
|
|
409
|
-
BASE: "basic",
|
|
410
|
-
STRUCTURED: "structure",
|
|
411
|
-
TERM: "term",
|
|
412
|
-
AXIOM: "axiom",
|
|
413
|
-
FUNCTION: "function",
|
|
414
|
-
PREDICATE: "predicate",
|
|
415
|
-
CONSTANT: "constant",
|
|
416
|
-
STATEMENT: "statement"
|
|
417
|
-
};
|
|
418
|
-
var CstClass = {
|
|
419
|
-
NOMINAL: "nominal",
|
|
420
|
-
BASIC: "basic",
|
|
421
|
-
DERIVED: "derived",
|
|
422
|
-
STATEMENT: "statement",
|
|
423
|
-
TEMPLATE: "template"
|
|
424
|
-
};
|
|
425
|
-
var CstStatus = {
|
|
426
|
-
VERIFIED: "verified",
|
|
427
|
-
INCORRECT: "incorrect",
|
|
428
|
-
INCALCULABLE: "incalculable",
|
|
429
|
-
PROPERTY: "property",
|
|
430
|
-
UNKNOWN: "unknown"
|
|
431
|
-
};
|
|
432
|
-
|
|
433
|
-
// src/library/rsform-api.ts
|
|
434
|
-
var CST_TYPE_PREFIX = {
|
|
435
|
-
[CstType.NOMINAL]: "N",
|
|
436
|
-
[CstType.BASE]: "X",
|
|
437
|
-
[CstType.CONSTANT]: "C",
|
|
438
|
-
[CstType.STRUCTURED]: "S",
|
|
439
|
-
[CstType.AXIOM]: "A",
|
|
440
|
-
[CstType.TERM]: "D",
|
|
441
|
-
[CstType.FUNCTION]: "F",
|
|
442
|
-
[CstType.PREDICATE]: "P",
|
|
443
|
-
[CstType.STATEMENT]: "T"
|
|
444
|
-
};
|
|
445
|
-
var CST_TYPE_TO_CLASS = {
|
|
446
|
-
[CstType.NOMINAL]: CstClass.NOMINAL,
|
|
447
|
-
[CstType.BASE]: CstClass.BASIC,
|
|
448
|
-
[CstType.CONSTANT]: CstClass.BASIC,
|
|
449
|
-
[CstType.STRUCTURED]: CstClass.BASIC,
|
|
450
|
-
[CstType.TERM]: CstClass.DERIVED,
|
|
451
|
-
[CstType.FUNCTION]: CstClass.DERIVED,
|
|
452
|
-
[CstType.AXIOM]: CstClass.STATEMENT,
|
|
453
|
-
[CstType.PREDICATE]: CstClass.DERIVED,
|
|
454
|
-
[CstType.STATEMENT]: CstClass.STATEMENT
|
|
23
|
+
/** Record of {@link CstType} to {@link CstClass} mapping. */
|
|
24
|
+
const CST_TYPE_TO_CLASS = {
|
|
25
|
+
[CstType.NOMINAL]: CstClass.NOMINAL,
|
|
26
|
+
[CstType.BASE]: CstClass.BASIC,
|
|
27
|
+
[CstType.CONSTANT]: CstClass.BASIC,
|
|
28
|
+
[CstType.STRUCTURED]: CstClass.BASIC,
|
|
29
|
+
[CstType.TERM]: CstClass.DERIVED,
|
|
30
|
+
[CstType.FUNCTION]: CstClass.DERIVED,
|
|
31
|
+
[CstType.AXIOM]: CstClass.STATEMENT,
|
|
32
|
+
[CstType.PREDICATE]: CstClass.DERIVED,
|
|
33
|
+
[CstType.STATEMENT]: CstClass.STATEMENT
|
|
455
34
|
};
|
|
35
|
+
/** Checks if {@link Constituenta} is a schema issue. */
|
|
456
36
|
function isSchemaIssue(cst) {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
return true;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
return false;
|
|
37
|
+
if (cst.homonyms.length > 0 || cst.formalDuplicates.length > 0 || cst.status === CstStatus.INCORRECT || cst.status === CstStatus.INCALCULABLE || cst.is_type_mismatch) return true;
|
|
38
|
+
if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
|
|
39
|
+
if (!cst.convention || !cst.term_resolved) return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
466
42
|
}
|
|
43
|
+
/** Infers the status of an expression based on parsing and value information. */
|
|
467
44
|
function inferStatus(parse, value) {
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
return CstStatus.INCALCULABLE;
|
|
473
|
-
}
|
|
474
|
-
if (value === ValueClass.PROPERTY) {
|
|
475
|
-
return CstStatus.PROPERTY;
|
|
476
|
-
}
|
|
477
|
-
return CstStatus.VERIFIED;
|
|
45
|
+
if (!parse) return CstStatus.INCORRECT;
|
|
46
|
+
if (value === null) return CstStatus.INCALCULABLE;
|
|
47
|
+
if (value === ValueClass.PROPERTY) return CstStatus.PROPERTY;
|
|
48
|
+
return CstStatus.VERIFIED;
|
|
478
49
|
}
|
|
50
|
+
/** Infers type of constituent for a given template and arguments. */
|
|
479
51
|
function inferTemplatedType(templateType, args) {
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
return CstType.AXIOM;
|
|
484
|
-
} else {
|
|
485
|
-
return CstType.TERM;
|
|
486
|
-
}
|
|
52
|
+
if (args.length === 0 || args.some((arg) => !arg.value)) return templateType;
|
|
53
|
+
else if (templateType === CstType.PREDICATE) return CstType.AXIOM;
|
|
54
|
+
else return CstType.TERM;
|
|
487
55
|
}
|
|
56
|
+
/** Checks if given expression is a template. */
|
|
488
57
|
function inferTemplate(expression) {
|
|
489
|
-
|
|
490
|
-
|
|
58
|
+
const match = expression.match(/R\d+/g);
|
|
59
|
+
return (match && match?.length > 0) ?? false;
|
|
491
60
|
}
|
|
61
|
+
/** Infers the {@link CstClass} based on the provided {@link CstType} and template status. */
|
|
492
62
|
function inferClass(type, isTemplate = false) {
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
}
|
|
496
|
-
return CST_TYPE_TO_CLASS[type];
|
|
63
|
+
if (isTemplate) return CstClass.TEMPLATE;
|
|
64
|
+
return CST_TYPE_TO_CLASS[type];
|
|
497
65
|
}
|
|
66
|
+
/** Check if {@link Constituenta} is a template or a category. */
|
|
498
67
|
function isTemplateCst(cst) {
|
|
499
|
-
|
|
68
|
+
return cst.cst_type === CstType.FUNCTION || cst.cst_type === CstType.PREDICATE || cst.cst_type === CstType.STATEMENT;
|
|
500
69
|
}
|
|
70
|
+
/** Apply filter based on start {@link Constituenta} type. */
|
|
501
71
|
function applyFilterCategory(start, items) {
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
const nextCategoryIndex = items.findIndex((cst, index) => index > startIndex && cst.cst_type === CstType.STATEMENT);
|
|
507
|
-
return items.filter((_, index) => index >= startIndex && (nextCategoryIndex === -1 || index < nextCategoryIndex));
|
|
72
|
+
const startIndex = items.indexOf(start);
|
|
73
|
+
if (startIndex === -1) return [];
|
|
74
|
+
const nextCategoryIndex = items.findIndex((cst, index) => index > startIndex && cst.cst_type === CstType.STATEMENT);
|
|
75
|
+
return items.filter((_, index) => index >= startIndex && (nextCategoryIndex === -1 || index < nextCategoryIndex));
|
|
508
76
|
}
|
|
77
|
+
/** Prefix for alias indicating {@link CstType}. */
|
|
509
78
|
function getCstTypePrefix(type) {
|
|
510
|
-
|
|
79
|
+
return CST_TYPE_PREFIX[type];
|
|
511
80
|
}
|
|
81
|
+
/** Guess {@link CstType} from user input hint. */
|
|
512
82
|
function guessCstType(hint) {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
for (const [type, prefix] of Object.entries(CST_TYPE_PREFIX)) {
|
|
517
|
-
if (hint === prefix) {
|
|
518
|
-
return type;
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
return null;
|
|
83
|
+
if (hint.length !== 1) return null;
|
|
84
|
+
for (const [type, prefix] of Object.entries(CST_TYPE_PREFIX)) if (hint === prefix) return type;
|
|
85
|
+
return null;
|
|
522
86
|
}
|
|
87
|
+
/** Evaluate if {@link CstType} is basic concept. */
|
|
523
88
|
function isBasicConcept(type) {
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
}
|
|
89
|
+
switch (type) {
|
|
90
|
+
case CstType.NOMINAL:
|
|
91
|
+
case CstType.BASE:
|
|
92
|
+
case CstType.CONSTANT:
|
|
93
|
+
case CstType.STRUCTURED:
|
|
94
|
+
case CstType.AXIOM: return true;
|
|
95
|
+
case CstType.TERM:
|
|
96
|
+
case CstType.FUNCTION:
|
|
97
|
+
case CstType.PREDICATE:
|
|
98
|
+
case CstType.STATEMENT: return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** Evaluate if {@link CstType} is base set or constant set. */
|
|
538
102
|
function isBaseSet(type) {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
}
|
|
103
|
+
switch (type) {
|
|
104
|
+
case CstType.BASE:
|
|
105
|
+
case CstType.CONSTANT: return true;
|
|
106
|
+
case CstType.NOMINAL:
|
|
107
|
+
case CstType.STRUCTURED:
|
|
108
|
+
case CstType.AXIOM:
|
|
109
|
+
case CstType.TERM:
|
|
110
|
+
case CstType.FUNCTION:
|
|
111
|
+
case CstType.PREDICATE:
|
|
112
|
+
case CstType.STATEMENT: return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/** Evaluate if {@link CstType} is a function. */
|
|
553
116
|
function isFunctional(type) {
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
}
|
|
117
|
+
switch (type) {
|
|
118
|
+
case CstType.FUNCTION:
|
|
119
|
+
case CstType.PREDICATE: return true;
|
|
120
|
+
case CstType.NOMINAL:
|
|
121
|
+
case CstType.BASE:
|
|
122
|
+
case CstType.CONSTANT:
|
|
123
|
+
case CstType.STRUCTURED:
|
|
124
|
+
case CstType.AXIOM:
|
|
125
|
+
case CstType.TERM:
|
|
126
|
+
case CstType.STATEMENT: return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** Evaluate if {@link CstType} is logical. */
|
|
568
130
|
function isLogical(type) {
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
}
|
|
131
|
+
switch (type) {
|
|
132
|
+
case CstType.AXIOM:
|
|
133
|
+
case CstType.STATEMENT: return true;
|
|
134
|
+
case CstType.NOMINAL:
|
|
135
|
+
case CstType.BASE:
|
|
136
|
+
case CstType.CONSTANT:
|
|
137
|
+
case CstType.STRUCTURED:
|
|
138
|
+
case CstType.TERM:
|
|
139
|
+
case CstType.FUNCTION:
|
|
140
|
+
case CstType.PREDICATE: return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** Evaluate if {@link Constituenta} can be used produce structure. */
|
|
583
144
|
function canProduceStructure(cst) {
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
return false;
|
|
602
|
-
}
|
|
603
|
-
return typeCanProduceStructure(cst.effectiveType);
|
|
604
|
-
}
|
|
145
|
+
switch (cst.cst_type) {
|
|
146
|
+
case CstType.NOMINAL:
|
|
147
|
+
case CstType.BASE:
|
|
148
|
+
case CstType.CONSTANT:
|
|
149
|
+
case CstType.AXIOM:
|
|
150
|
+
case CstType.STATEMENT:
|
|
151
|
+
case CstType.PREDICATE: return false;
|
|
152
|
+
}
|
|
153
|
+
if (!cst.effectiveType) return false;
|
|
154
|
+
if (cst.cst_type === CstType.FUNCTION) {
|
|
155
|
+
const result = cst.effectiveType.result;
|
|
156
|
+
return typeCanProduceStructure(result);
|
|
157
|
+
}
|
|
158
|
+
if (!isTypification(cst.effectiveType)) return false;
|
|
159
|
+
return typeCanProduceStructure(cst.effectiveType);
|
|
160
|
+
}
|
|
161
|
+
/** Evaluate if {@link CstType} can have manual typification. */
|
|
605
162
|
function canHaveManualTypification(type) {
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
163
|
+
switch (type) {
|
|
164
|
+
case CstType.STRUCTURED:
|
|
165
|
+
case CstType.TERM:
|
|
166
|
+
case CstType.FUNCTION:
|
|
167
|
+
case CstType.PREDICATE: return true;
|
|
168
|
+
case CstType.NOMINAL:
|
|
169
|
+
case CstType.BASE:
|
|
170
|
+
case CstType.CONSTANT:
|
|
171
|
+
case CstType.AXIOM:
|
|
172
|
+
case CstType.STATEMENT: return false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/** Validate alias format for a given {@link CstType} (prefix + digits, min length 2). */
|
|
176
|
+
function validateAliasFormat(alias, type) {
|
|
177
|
+
if (alias.length < 2) return false;
|
|
178
|
+
const prefix = getCstTypePrefix(type);
|
|
179
|
+
if (!alias.startsWith(prefix)) return false;
|
|
180
|
+
if (!/^\d+$/.exec(alias.substring(prefix.length))) return false;
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
/** Validate new alias against {@link CstType} and {@link RSForm}. */
|
|
620
184
|
function validateNewAlias(alias, type, schema) {
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
const prefix = getCstTypePrefix(type);
|
|
625
|
-
if (!alias.startsWith(prefix)) {
|
|
626
|
-
return false;
|
|
627
|
-
}
|
|
628
|
-
if (schema.cstByAlias.has(alias)) {
|
|
629
|
-
return false;
|
|
630
|
-
}
|
|
631
|
-
if (!/^\d+$/.exec(alias.substring(prefix.length))) {
|
|
632
|
-
return false;
|
|
633
|
-
}
|
|
634
|
-
return true;
|
|
185
|
+
if (!validateAliasFormat(alias, type)) return false;
|
|
186
|
+
if (schema.cstByAlias.has(alias)) return false;
|
|
187
|
+
return true;
|
|
635
188
|
}
|
|
189
|
+
/** Generate alias for new {@link Constituenta} of a given {@link CstType} for current {@link RSForm}. */
|
|
636
190
|
function generateAlias(type, schema, takenAliases = []) {
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
191
|
+
const prefix = getCstTypePrefix(type);
|
|
192
|
+
if (schema.items.length <= 0) return `${prefix}1`;
|
|
193
|
+
let index = schema.items.reduce((prev, cst, index) => {
|
|
194
|
+
if (cst.cst_type !== type) return prev;
|
|
195
|
+
index = Number(cst.alias.slice(1 - cst.alias.length)) + 1;
|
|
196
|
+
return Math.max(prev, index);
|
|
197
|
+
}, 1);
|
|
198
|
+
let alias = `${prefix}${index}`;
|
|
199
|
+
while (takenAliases.includes(alias)) {
|
|
200
|
+
index = index + 1;
|
|
201
|
+
alias = `${prefix}${index}`;
|
|
202
|
+
}
|
|
203
|
+
return alias;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Id to pass as `insert_after` when creating a new {@link Constituenta} spawned by `targetId`:
|
|
207
|
+
* after the last existing child of that spawner, or after the spawner itself if none.
|
|
208
|
+
*/
|
|
655
209
|
function inferNewSpawnPosition(schema, targetId) {
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
last = cst.id;
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
return last ?? targetId;
|
|
210
|
+
let last = null;
|
|
211
|
+
for (const cst of schema.items) if (cst.spawner === targetId) last = cst.id;
|
|
212
|
+
return last ?? targetId;
|
|
663
213
|
}
|
|
214
|
+
/** Sorts library items relevant for InlineSynthesis with specified {@link RSForm}. */
|
|
664
215
|
function sortItemsForInlineSynthesis(receiver, items) {
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
}
|
|
671
|
-
for (const item of items) {
|
|
672
|
-
if (item.visible && !result.includes(item)) {
|
|
673
|
-
result.push(item);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
for (const item of items) {
|
|
677
|
-
if (!result.includes(item)) {
|
|
678
|
-
result.push(item);
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
return result;
|
|
216
|
+
const result = items.filter((item) => item.location === receiver.location);
|
|
217
|
+
for (const item of items) if (item.visible && item.owner === item.owner && !result.includes(item)) result.push(item);
|
|
218
|
+
for (const item of items) if (item.visible && !result.includes(item)) result.push(item);
|
|
219
|
+
for (const item of items) if (!result.includes(item)) result.push(item);
|
|
220
|
+
return result;
|
|
682
221
|
}
|
|
222
|
+
/** Remove alias from expression. */
|
|
683
223
|
function removeAliasReference(expression, alias) {
|
|
684
|
-
|
|
685
|
-
|
|
224
|
+
const result = expression.replaceAll(new RegExp(`\\b${alias}\\b`, "g"), "DEL");
|
|
225
|
+
return result === "DEL" ? "" : result;
|
|
686
226
|
}
|
|
227
|
+
/** Add alias to expression. */
|
|
687
228
|
function addAliasReference(expression, alias) {
|
|
688
|
-
|
|
229
|
+
return expression + " " + alias;
|
|
689
230
|
}
|
|
231
|
+
/** Returns expected {@link TypeClass} of formal definition for {@link CstType}. */
|
|
690
232
|
function typeClassForCstType(cstType) {
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
return TypeClass.logic;
|
|
705
|
-
}
|
|
706
|
-
}
|
|
233
|
+
switch (cstType) {
|
|
234
|
+
case CstType.NOMINAL:
|
|
235
|
+
case CstType.BASE:
|
|
236
|
+
case CstType.CONSTANT:
|
|
237
|
+
case CstType.STRUCTURED:
|
|
238
|
+
case CstType.TERM: return TypeClass.typification;
|
|
239
|
+
case CstType.FUNCTION: return TypeClass.function;
|
|
240
|
+
case CstType.PREDICATE: return TypeClass.predicate;
|
|
241
|
+
case CstType.AXIOM:
|
|
242
|
+
case CstType.STATEMENT: return TypeClass.logic;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/** Checks whether a constituenta type supports formal definitions. */
|
|
707
246
|
function canHaveFormalDefinition(cstType) {
|
|
708
|
-
|
|
247
|
+
return cstType !== CstType.BASE && cstType !== CstType.CONSTANT;
|
|
709
248
|
}
|
|
249
|
+
/** Analyze expression for {@link RSForm}. */
|
|
710
250
|
function getAnalysisFor(expression, cstType, schema, alias) {
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
});
|
|
741
|
-
}
|
|
251
|
+
if (!canHaveFormalDefinition(cstType)) {
|
|
252
|
+
if (expression.trim().length === 0) {
|
|
253
|
+
const fallbackAlias = alias && alias.length > 0 ? alias : "X0";
|
|
254
|
+
return {
|
|
255
|
+
success: true,
|
|
256
|
+
type: cstType === CstType.BASE ? bool(basic(fallbackAlias)) : bool(constant(fallbackAlias)),
|
|
257
|
+
valueClass: ValueClass.VALUE,
|
|
258
|
+
errors: [],
|
|
259
|
+
ast: null
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
success: false,
|
|
264
|
+
type: null,
|
|
265
|
+
valueClass: null,
|
|
266
|
+
errors: [{
|
|
267
|
+
code: RSErrorCode.definitionNotAllowed,
|
|
268
|
+
from: 0,
|
|
269
|
+
to: Math.max(0, expression.length - 1)
|
|
270
|
+
}],
|
|
271
|
+
ast: null
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
return schema.analyzer.checkFull(expression, {
|
|
275
|
+
expected: typeClassForCstType(cstType),
|
|
276
|
+
isDomain: cstType === CstType.STRUCTURED
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
/** Calculate statistics for {@link RSForm}. */
|
|
742
280
|
function calculateSchemaStats(target) {
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
};
|
|
774
|
-
}
|
|
281
|
+
const items = target.items;
|
|
282
|
+
return {
|
|
283
|
+
count_all: items.length,
|
|
284
|
+
count_crucial: items.reduce((sum, cst) => sum + (cst.crucial ? 1 : 0), 0),
|
|
285
|
+
step_complexity: items.reduce((sum, cst) => sum + calculateStepComplexity(cst), 0),
|
|
286
|
+
count_problematic: items.reduce((sum, cst) => sum + (isSchemaIssue(cst) ? 1 : 0), 0),
|
|
287
|
+
count_homonyms: items.reduce((sum, cst) => sum + (cst.homonyms.length > 0 ? 1 : 0), 0),
|
|
288
|
+
count_formal_duplicates: items.reduce((sum, cst) => sum + (cst.formalDuplicates.length > 0 ? 1 : 0), 0),
|
|
289
|
+
count_missing_convention: items.reduce((sum, cst) => sum + (isMissingConvention(cst) ? 1 : 0), 0),
|
|
290
|
+
count_type_mismatch: items.reduce((sum, cst) => sum + (cst.is_type_mismatch ? 1 : 0), 0),
|
|
291
|
+
count_incorrect: items.reduce((sum, cst) => sum + (cst.status === CstStatus.INCORRECT ? 1 : 0), 0),
|
|
292
|
+
count_property: items.reduce((sum, cst) => sum + (cst.analysis?.valueClass === ValueClass.PROPERTY ? 1 : 0), 0),
|
|
293
|
+
count_incalculable: items.reduce((sum, cst) => sum + (cst.analysis?.success && cst.analysis.valueClass === null ? 1 : 0), 0),
|
|
294
|
+
count_inherited: items.reduce((sum, cst) => sum + (cst.is_inherited ? 1 : 0), 0),
|
|
295
|
+
count_text_term: items.reduce((sum, cst) => sum + (cst.term_raw ? 1 : 0), 0),
|
|
296
|
+
count_definition: items.reduce((sum, cst) => sum + (cst.definition_raw ? 1 : 0), 0),
|
|
297
|
+
count_convention: items.reduce((sum, cst) => sum + (isBasicConcept(cst.cst_type) && cst.convention ? 1 : 0), 0),
|
|
298
|
+
count_comment: items.reduce((sum, cst) => sum + (!isBasicConcept(cst.cst_type) && !cst.convention ? 1 : 0), 0),
|
|
299
|
+
count_base: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.BASE ? 1 : 0), 0),
|
|
300
|
+
count_constant: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.CONSTANT ? 1 : 0), 0),
|
|
301
|
+
count_structured: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STRUCTURED ? 1 : 0), 0),
|
|
302
|
+
count_axiom: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.AXIOM ? 1 : 0), 0),
|
|
303
|
+
count_term: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.TERM ? 1 : 0), 0),
|
|
304
|
+
count_function: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.FUNCTION ? 1 : 0), 0),
|
|
305
|
+
count_predicate: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.PREDICATE ? 1 : 0), 0),
|
|
306
|
+
count_statement: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STATEMENT ? 1 : 0), 0),
|
|
307
|
+
count_nominal: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.NOMINAL ? 1 : 0), 0)
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
/** Finds {@link Constituenta} by structure path. */
|
|
775
311
|
function findCstByStructure(schema, target, path) {
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
return null;
|
|
312
|
+
for (const cst of schema.items) if (cst.spawner === target.id && cst.spawner_path) {
|
|
313
|
+
if (cst.spawner_path.length === path.length && cst.spawner_path.every((v, i) => v === path[i])) return cst;
|
|
314
|
+
}
|
|
315
|
+
return null;
|
|
784
316
|
}
|
|
317
|
+
/** Retrieves name for piece of target {@link Constituenta} structure. */
|
|
785
318
|
function getStructureName(schema, target, path) {
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
const cst = schema.cstByAlias.get(type.baseID);
|
|
796
|
-
if (cst?.term_resolved) {
|
|
797
|
-
return `${cst.alias}: ${cst.term_resolved}`;
|
|
798
|
-
}
|
|
799
|
-
}
|
|
800
|
-
return "";
|
|
319
|
+
const representation = findCstByStructure(schema, target, path);
|
|
320
|
+
if (representation) return `${representation.alias}: ${representation.term_resolved}`;
|
|
321
|
+
if (!isTypification(target.effectiveType)) return "";
|
|
322
|
+
const type = applyPath(target.effectiveType, path);
|
|
323
|
+
if (type?.typeID === TypeID.basic) {
|
|
324
|
+
const cst = schema.cstByAlias.get(type.baseID);
|
|
325
|
+
if (cst?.term_resolved) return `${cst.alias}: ${cst.term_resolved}`;
|
|
326
|
+
}
|
|
327
|
+
return "";
|
|
801
328
|
}
|
|
802
329
|
function calculateStepComplexity(cst) {
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
return 1;
|
|
808
|
-
}
|
|
809
|
-
const type = cst.effectiveType;
|
|
810
|
-
return calculateTypificationComplexity(type) + 1;
|
|
330
|
+
if (cst.cst_type === CstType.AXIOM || cst.cst_type === CstType.NOMINAL || !isBasicConcept(cst.cst_type)) return 0;
|
|
331
|
+
if (cst.cst_type === CstType.BASE || cst.cst_type === CstType.CONSTANT || !cst.effectiveType) return 1;
|
|
332
|
+
const type = cst.effectiveType;
|
|
333
|
+
return calculateTypificationComplexity(type) + 1;
|
|
811
334
|
}
|
|
812
335
|
function calculateTypificationComplexity(type) {
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
return calculateTypificationComplexity(type.base) + 1;
|
|
829
|
-
}
|
|
830
|
-
return 0;
|
|
831
|
-
}
|
|
336
|
+
switch (type.typeID) {
|
|
337
|
+
case TypeID.basic:
|
|
338
|
+
case TypeID.integer:
|
|
339
|
+
case TypeID.anyTypification: return 0;
|
|
340
|
+
case TypeID.tuple: return type.factors.length + type.factors.reduce((sum, factor) => sum + calculateTypificationComplexity(factor), 0);
|
|
341
|
+
case TypeID.collection:
|
|
342
|
+
if (type.base.typeID === TypeID.tuple) {
|
|
343
|
+
let sum = 0;
|
|
344
|
+
type.base.factors.forEach((factor) => {
|
|
345
|
+
sum += calculateTypificationComplexity(factor);
|
|
346
|
+
});
|
|
347
|
+
return sum + type.base.factors.length;
|
|
348
|
+
} else if (type.base.typeID === TypeID.collection) return calculateTypificationComplexity(type.base) + 1;
|
|
349
|
+
return 0;
|
|
350
|
+
}
|
|
832
351
|
}
|
|
833
352
|
function isMissingConvention(cst) {
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
}
|
|
839
|
-
return false;
|
|
353
|
+
if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
|
|
354
|
+
if (!cst.convention || !cst.term_resolved) return true;
|
|
355
|
+
}
|
|
356
|
+
return false;
|
|
840
357
|
}
|
|
358
|
+
/** Evaluate if {@link Typification} can be used to produce structure. */
|
|
841
359
|
function typeCanProduceStructure(type) {
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
}
|
|
850
|
-
export {
|
|
851
|
-
addAliasReference,
|
|
852
|
-
applyFilterCategory,
|
|
853
|
-
calculateSchemaStats,
|
|
854
|
-
canHaveFormalDefinition,
|
|
855
|
-
canHaveManualTypification,
|
|
856
|
-
canProduceStructure,
|
|
857
|
-
findCstByStructure,
|
|
858
|
-
generateAlias,
|
|
859
|
-
getAnalysisFor,
|
|
860
|
-
getCstTypePrefix,
|
|
861
|
-
getStructureName,
|
|
862
|
-
guessCstType,
|
|
863
|
-
inferClass,
|
|
864
|
-
inferNewSpawnPosition,
|
|
865
|
-
inferStatus,
|
|
866
|
-
inferTemplate,
|
|
867
|
-
inferTemplatedType,
|
|
868
|
-
isBaseSet,
|
|
869
|
-
isBasicConcept,
|
|
870
|
-
isFunctional,
|
|
871
|
-
isLogical,
|
|
872
|
-
isSchemaIssue,
|
|
873
|
-
isTemplateCst,
|
|
874
|
-
removeAliasReference,
|
|
875
|
-
sortItemsForInlineSynthesis,
|
|
876
|
-
typeClassForCstType,
|
|
877
|
-
validateNewAlias
|
|
878
|
-
};
|
|
360
|
+
if (type.typeID === TypeID.basic || type.typeID === TypeID.integer || type.typeID === TypeID.anyTypification) return false;
|
|
361
|
+
else if (type.typeID === TypeID.tuple) return true;
|
|
362
|
+
else return type.base.typeID !== TypeID.basic && type.base.typeID !== TypeID.integer && type.base.typeID !== TypeID.anyTypification;
|
|
363
|
+
}
|
|
364
|
+
//#endregion
|
|
365
|
+
export { addAliasReference, applyFilterCategory, calculateSchemaStats, canHaveFormalDefinition, canHaveManualTypification, canProduceStructure, findCstByStructure, generateAlias, getAnalysisFor, getCstTypePrefix, getStructureName, guessCstType, inferClass, inferNewSpawnPosition, inferStatus, inferTemplate, inferTemplatedType, isBaseSet, isBasicConcept, isFunctional, isLogical, isSchemaIssue, isTemplateCst, removeAliasReference, sortItemsForInlineSynthesis, typeClassForCstType, validateAliasFormat, validateNewAlias };
|
|
366
|
+
|
|
879
367
|
//# sourceMappingURL=rsform-api.js.map
|