occam-furtle 2.0.342 → 3.0.2
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/example.js +5905 -1786
- package/lib/context/block.js +81 -41
- package/lib/context/file/furtle.js +260 -0
- package/lib/context/file/nominal.js +956 -0
- package/lib/context/file.js +146 -271
- package/lib/context.js +210 -0
- package/lib/element/assignment/array.js +116 -14
- package/lib/element/assignment/object.js +116 -14
- package/lib/element/assignment/variable.js +121 -14
- package/lib/element/assignments/variable.js +120 -13
- package/lib/element/declaration/procedure.js +120 -12
- package/lib/element/error.js +118 -13
- package/lib/element/every.js +116 -13
- package/lib/element/expression.js +127 -20
- package/lib/element/label.js +119 -12
- package/lib/element/nodeQuery.js +116 -14
- package/lib/element/nodesQuery.js +116 -14
- package/lib/element/parameter/named.js +117 -15
- package/lib/element/parameter.js +116 -14
- package/lib/element/parameters/named.js +116 -14
- package/lib/element/parameters.js +115 -13
- package/lib/element/primitive.js +115 -13
- package/lib/element/procedure/anonymous.js +118 -16
- package/lib/element/procedure.js +118 -16
- package/lib/element/procedureCall.js +116 -14
- package/lib/element/reduce.js +116 -14
- package/lib/element/reference.js +119 -12
- package/lib/element/returnBlock.js +116 -14
- package/lib/element/some.js +115 -13
- package/lib/element/statement/return.js +120 -13
- package/lib/element/step.js +121 -14
- package/lib/element/term/bracketed.js +120 -13
- package/lib/element/term/comparison.js +117 -15
- package/lib/element/term/logical.js +118 -16
- package/lib/element/term/negated.js +116 -14
- package/lib/element/term.js +127 -18
- package/lib/element/terms.js +125 -14
- package/lib/element/ternary.js +117 -15
- package/lib/element/variable.js +127 -19
- package/lib/element.js +1 -8
- package/lib/index.js +5 -5
- package/lib/log.js +13 -12
- package/lib/metaTypeNames.js +26 -0
- package/lib/metaTypes.js +66 -0
- package/lib/nodeProperties.js +17 -21
- package/lib/nodeProperty.js +4 -7
- package/lib/utilities/context.js +8 -37
- package/lib/utilities/customGrammar.js +49 -0
- package/lib/utilities/element.js +91 -37
- package/lib/utilities/lineIndex.js +26 -0
- package/lib/utilities/node.js +1 -8
- package/lib/utilities/primitive.js +14 -5
- package/lib/utilities/string.js +30 -19
- package/lib/utilities/term.js +14 -5
- package/lib/utilities/terms.js +7 -3
- package/package.json +2 -2
- package/src/context/block.js +20 -32
- package/src/context/file/furtle.js +141 -0
- package/src/context/file/nominal.js +946 -0
- package/src/context/file.js +32 -209
- package/src/context.js +74 -0
- package/src/element/assignment/array.js +6 -8
- package/src/element/assignment/object.js +6 -8
- package/src/element/assignment/variable.js +7 -8
- package/src/element/assignments/variable.js +7 -8
- package/src/element/declaration/procedure.js +6 -6
- package/src/element/error.js +4 -6
- package/src/element/every.js +5 -6
- package/src/element/expression.js +6 -7
- package/src/element/label.js +6 -7
- package/src/element/nodeQuery.js +6 -8
- package/src/element/nodesQuery.js +6 -8
- package/src/element/parameter/named.js +7 -8
- package/src/element/parameter.js +6 -8
- package/src/element/parameters/named.js +8 -9
- package/src/element/parameters.js +6 -8
- package/src/element/primitive.js +5 -7
- package/src/element/procedure/anonymous.js +7 -9
- package/src/element/procedure.js +6 -8
- package/src/element/procedureCall.js +6 -8
- package/src/element/reduce.js +5 -7
- package/src/element/reference.js +6 -7
- package/src/element/returnBlock.js +5 -7
- package/src/element/some.js +5 -7
- package/src/element/statement/return.js +7 -8
- package/src/element/step.js +6 -7
- package/src/element/term/bracketed.js +7 -8
- package/src/element/term/comparison.js +6 -8
- package/src/element/term/logical.js +6 -8
- package/src/element/term/negated.js +6 -8
- package/src/element/term.js +12 -9
- package/src/element/terms.js +16 -9
- package/src/element/ternary.js +6 -8
- package/src/element/variable.js +24 -14
- package/src/element.js +0 -8
- package/src/index.js +1 -1
- package/src/log.js +11 -11
- package/src/metaTypeNames.js +5 -0
- package/src/metaTypes.js +71 -0
- package/src/nodeProperties.js +23 -32
- package/src/nodeProperty.js +5 -10
- package/src/utilities/context.js +7 -45
- package/src/utilities/customGrammar.js +40 -0
- package/src/utilities/element.js +158 -64
- package/src/utilities/lineIndex.js +21 -0
- package/src/utilities/node.js +0 -5
- package/src/utilities/primitive.js +22 -5
- package/src/utilities/string.js +33 -19
- package/src/utilities/term.js +22 -5
- package/src/utilities/terms.js +12 -4
- package/test/context/release.js +477 -46
- package/test/helpers/furtle.js +1 -1
- package/test/helpers/nominal.js +2 -3
- package/test/main.js +1 -1
- package/test/context/file.js +0 -127
- package/test/helpers/constants.js +0 -17
package/src/context/file.js
CHANGED
|
@@ -1,164 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import Context from '../context';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import { verifyFile } from "../process/verify";
|
|
7
|
-
import { furtleLexer, furtleParser } from "../utilities/furtle";
|
|
5
|
+
import { lineIndexFromNodeAndTokens } from "../utilities/lineIndex";
|
|
8
6
|
import { nodeAsString, nodesAsString } from "../utilities/node";
|
|
9
|
-
import { chainContext, lineIndexFromNodeAndTokens } from "../utilities/context";
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export default class FileContext extends Context {
|
|
9
|
+
constructor(context, filePath, tokens, node) {
|
|
10
|
+
super(context);
|
|
13
11
|
|
|
14
|
-
export default class FileContext {
|
|
15
|
-
constructor(context, filePath, lineIndex, node, tokens, procedures) {
|
|
16
|
-
this.context = context;
|
|
17
12
|
this.filePath = filePath;
|
|
18
|
-
this.lineIndex = lineIndex;
|
|
19
|
-
this.node = node;
|
|
20
13
|
this.tokens = tokens;
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
return chainContext(this);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
getContext() {
|
|
27
|
-
return this.context;
|
|
14
|
+
this.node = node;
|
|
28
15
|
}
|
|
29
16
|
|
|
30
17
|
getFilePath() {
|
|
31
18
|
return this.filePath;
|
|
32
19
|
}
|
|
33
20
|
|
|
34
|
-
getLineIndex() {
|
|
35
|
-
return this.lineIndex;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getNode() {
|
|
39
|
-
return this.node;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
21
|
getTokens() {
|
|
43
22
|
return this.tokens;
|
|
44
23
|
}
|
|
45
24
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return lexer;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getParser() {
|
|
53
|
-
const parser = furtleParser; ///
|
|
54
|
-
|
|
55
|
-
return parser;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
getLabels(includeRelease = true) {
|
|
59
|
-
const labels = [];
|
|
60
|
-
|
|
61
|
-
return labels;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
getTypes(includeRelease = true) {
|
|
65
|
-
const types = [];
|
|
66
|
-
|
|
67
|
-
return types;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
getRules(includeRelease = true) {
|
|
71
|
-
const rules = []
|
|
72
|
-
|
|
73
|
-
return rules;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
getAxioms(includeRelease = true) {
|
|
77
|
-
const axioms = [];
|
|
78
|
-
|
|
79
|
-
return axioms;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
getLemmas(includeRelease = true) {
|
|
83
|
-
const lemmas = [];
|
|
84
|
-
|
|
85
|
-
return lemmas;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
getTheorems(includeRelease = true) {
|
|
89
|
-
const theorems = [];
|
|
90
|
-
|
|
91
|
-
return theorems;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
getProcedures(includeRelease = true) {
|
|
95
|
-
const procedures = [];
|
|
96
|
-
|
|
97
|
-
push(procedures, this.procedures);
|
|
98
|
-
|
|
99
|
-
if (includeRelease) {
|
|
100
|
-
const releaseContextProcedures = this.context.getProcedures();
|
|
101
|
-
|
|
102
|
-
push(procedures, releaseContextProcedures);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return procedures;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
getMetaLemmas(includeRelease = true) {
|
|
109
|
-
const metaLemmas = [];
|
|
110
|
-
|
|
111
|
-
return metaLemmas;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
getConjectures(includeRelease = true) {
|
|
115
|
-
const conjectures = [];
|
|
116
|
-
|
|
117
|
-
return conjectures;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
getCombinators(includeRelease = true) {
|
|
121
|
-
const combinators = [];
|
|
122
|
-
|
|
123
|
-
return combinators;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
getTypePrefixes(includeRelease = true) {
|
|
127
|
-
const typePrefixes = [];
|
|
128
|
-
|
|
129
|
-
return typePrefixes;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
getConstructors(includeRelease = true) {
|
|
133
|
-
const constructors = [];
|
|
134
|
-
|
|
135
|
-
return constructors;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
getMetatheorems(includeRelease = true) {
|
|
139
|
-
const metatheorems = [];
|
|
140
|
-
|
|
141
|
-
return metatheorems;
|
|
25
|
+
getNode() {
|
|
26
|
+
return this.node;
|
|
142
27
|
}
|
|
143
28
|
|
|
144
|
-
|
|
145
|
-
const
|
|
29
|
+
break(node) {
|
|
30
|
+
const lineIndex = lineIndexFromNodeAndTokens(node, this.tokens);
|
|
146
31
|
|
|
147
|
-
|
|
32
|
+
this.context.break(this.filePath, lineIndex);
|
|
148
33
|
}
|
|
149
34
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
this.procedures.push(procedure);
|
|
154
|
-
|
|
155
|
-
this.debug(`Added the '${procedureString}' procedure to the context.`);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
getVariables() {
|
|
159
|
-
const variables = [];
|
|
160
|
-
|
|
161
|
-
return variables;
|
|
35
|
+
writeToLog(level, message) {
|
|
36
|
+
this.context.writeToLog(level, message, this.filePath);
|
|
162
37
|
}
|
|
163
38
|
|
|
164
39
|
nodeAsString(node) {
|
|
@@ -173,61 +48,6 @@ export default class FileContext {
|
|
|
173
48
|
return string;
|
|
174
49
|
}
|
|
175
50
|
|
|
176
|
-
trace(message, node = null) {
|
|
177
|
-
const level = TRACE_LEVEL;
|
|
178
|
-
|
|
179
|
-
this.writeToLog(level, message, node);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
debug(message, node = null) {
|
|
183
|
-
const level = DEBUG_LEVEL;
|
|
184
|
-
|
|
185
|
-
this.writeToLog(level, message, node);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
info(message, node = null) {
|
|
189
|
-
const level = INFO_LEVEL;
|
|
190
|
-
|
|
191
|
-
this.writeToLog(level, message, node);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
warning(message, node = null) {
|
|
195
|
-
const level = WARNING_LEVEL;
|
|
196
|
-
|
|
197
|
-
this.writeToLog(level, message, node);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
error(message, node = null) {
|
|
201
|
-
const level = ERROR_LEVEL;
|
|
202
|
-
|
|
203
|
-
this.writeToLog(level, message, node);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
writeToLog(level, message, node) {
|
|
207
|
-
const lineIndex = lineIndexFromNodeAndTokens(node, this.tokens, this.lineIndex),
|
|
208
|
-
filePath = (lineIndex === null) ?
|
|
209
|
-
this.filePath :
|
|
210
|
-
null;
|
|
211
|
-
|
|
212
|
-
this.context.writeToLog(level, message, filePath, lineIndex);
|
|
213
|
-
|
|
214
|
-
this.lineIndex = lineIndex;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
getFileContext() {
|
|
218
|
-
const fileContext = this; ///
|
|
219
|
-
|
|
220
|
-
return fileContext;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
getDepth() {
|
|
224
|
-
let depth = this.context.getDepth();
|
|
225
|
-
|
|
226
|
-
depth++;
|
|
227
|
-
|
|
228
|
-
return depth;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
51
|
verify() {
|
|
232
52
|
let verifies = false;
|
|
233
53
|
|
|
@@ -238,7 +58,8 @@ export default class FileContext {
|
|
|
238
58
|
} else {
|
|
239
59
|
this.debug(`Verifying the '${this.filePath}' file...`);
|
|
240
60
|
|
|
241
|
-
const
|
|
61
|
+
const { verifyFile } = this.constrcutor,
|
|
62
|
+
context = this, ///
|
|
242
63
|
fileNode = this.node; ///
|
|
243
64
|
|
|
244
65
|
verifies = verifyFile(fileNode, context);
|
|
@@ -260,9 +81,8 @@ export default class FileContext {
|
|
|
260
81
|
return;
|
|
261
82
|
}
|
|
262
83
|
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
parser = this.getParser(),
|
|
84
|
+
const { lexer, parser } = this.constructor,
|
|
85
|
+
file = this.findFile(this.filePath),
|
|
266
86
|
content = file.getContent();
|
|
267
87
|
|
|
268
88
|
this.tokens = lexer.tokenise(content);
|
|
@@ -271,13 +91,11 @@ export default class FileContext {
|
|
|
271
91
|
}
|
|
272
92
|
|
|
273
93
|
clear() {
|
|
274
|
-
this.lineIndex = null;
|
|
275
|
-
|
|
276
94
|
this.procedures = [];
|
|
277
95
|
}
|
|
278
96
|
|
|
279
97
|
complete() {
|
|
280
|
-
|
|
98
|
+
///
|
|
281
99
|
}
|
|
282
100
|
|
|
283
101
|
initialise(json) {
|
|
@@ -306,23 +124,28 @@ export default class FileContext {
|
|
|
306
124
|
return json;
|
|
307
125
|
}
|
|
308
126
|
|
|
309
|
-
static fromFile(file,
|
|
127
|
+
static fromFile(Class, file, ...remainingArguments) {
|
|
310
128
|
const filePath = file.getPath(),
|
|
311
|
-
lineIndex = null,
|
|
312
129
|
tokens = null,
|
|
313
130
|
node = null,
|
|
314
|
-
|
|
315
|
-
fileContext = new
|
|
131
|
+
context = remainingArguments.pop(), ///
|
|
132
|
+
fileContext = new Class(context, filePath, tokens, node, ...remainingArguments);
|
|
316
133
|
|
|
317
134
|
return fileContext;
|
|
318
135
|
}
|
|
319
136
|
|
|
320
|
-
static fromFilePath(filePath,
|
|
321
|
-
const
|
|
322
|
-
tokens = null,
|
|
137
|
+
static fromFilePath(Class, filePath, ...remainingArguments) {
|
|
138
|
+
const tokens = null,
|
|
323
139
|
node = null,
|
|
324
|
-
|
|
325
|
-
fileContext = new
|
|
140
|
+
context = remainingArguments.pop(), ///
|
|
141
|
+
fileContext = new Class(context, filePath, tokens, node, ...remainingArguments);
|
|
142
|
+
|
|
143
|
+
return fileContext;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
static fromFilePathTokensAndNode(Class, filePath, tokens, node, ...remainingArguments) {
|
|
147
|
+
const context = remainingArguments.pop(), ///
|
|
148
|
+
fileContext = new Class(context, filePath, tokens, node, ...remainingArguments);
|
|
326
149
|
|
|
327
150
|
return fileContext;
|
|
328
151
|
}
|
package/src/context.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { LEVELS, DOUBLE_SPACE } from "./constants";
|
|
4
|
+
|
|
5
|
+
const [ TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL ] = LEVELS;
|
|
6
|
+
|
|
7
|
+
export default class Context {
|
|
8
|
+
constructor(context) {
|
|
9
|
+
this.context = context;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
getContext() {
|
|
13
|
+
return this.context;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
getDepth() {
|
|
17
|
+
let depth = this.context.getDepth();
|
|
18
|
+
|
|
19
|
+
depth++;
|
|
20
|
+
|
|
21
|
+
return depth;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getReleaseContext() { return this.context.getReleaseContext(); }
|
|
25
|
+
|
|
26
|
+
trace(message) {
|
|
27
|
+
const level = TRACE_LEVEL;
|
|
28
|
+
|
|
29
|
+
this.writeToLog(level, message);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
debug(message) {
|
|
33
|
+
const level = DEBUG_LEVEL;
|
|
34
|
+
|
|
35
|
+
this.writeToLog(level, message);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
info(message) {
|
|
39
|
+
const level = INFO_LEVEL;
|
|
40
|
+
|
|
41
|
+
this.writeToLog(level, message);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
warning(message) {
|
|
45
|
+
const level = WARNING_LEVEL;
|
|
46
|
+
|
|
47
|
+
this.writeToLog(level, message);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
error(message) {
|
|
51
|
+
const level = ERROR_LEVEL;
|
|
52
|
+
|
|
53
|
+
this.writeToLog(level, message);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
writeToLog(level, message) {
|
|
57
|
+
const depth = this.getDepth(),
|
|
58
|
+
indent = DOUBLE_SPACE.repeat(depth);
|
|
59
|
+
|
|
60
|
+
message = `${indent}${message}`; ///
|
|
61
|
+
|
|
62
|
+
const releaseContext = this.getReleaseContext();
|
|
63
|
+
|
|
64
|
+
releaseContext.writeToLog(level, message);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static fromNothing(Class, ...remainingArguments) {
|
|
68
|
+
let context = remainingArguments.pop();
|
|
69
|
+
|
|
70
|
+
context = new Class(context, ...remainingArguments); ///
|
|
71
|
+
|
|
72
|
+
return context;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../../element";
|
|
3
4
|
import elements from "../../elements";
|
|
4
5
|
import Exception from "../../exception";
|
|
5
6
|
|
|
@@ -7,17 +8,14 @@ import { define } from "../../elements";
|
|
|
7
8
|
import { termFromNode } from "../../utilities/term";
|
|
8
9
|
import { NODE_TYPE, NODES_TYPE } from "../../types";
|
|
9
10
|
|
|
10
|
-
export default define(class ArrayAssigment {
|
|
11
|
-
constructor(string, variable, parameters) {
|
|
12
|
-
|
|
11
|
+
export default define(class ArrayAssigment extends Element {
|
|
12
|
+
constructor(context, string, node, variable, parameters) {
|
|
13
|
+
super(context, string, node)
|
|
14
|
+
|
|
13
15
|
this.variable = variable;
|
|
14
16
|
this.parameters = parameters;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
getString() {
|
|
18
|
-
return this.string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
19
|
getVariable() {
|
|
22
20
|
return this.variable;
|
|
23
21
|
}
|
|
@@ -27,7 +25,7 @@ export default define(class ArrayAssigment {
|
|
|
27
25
|
}
|
|
28
26
|
|
|
29
27
|
evaluate(context) {
|
|
30
|
-
const arrayAssignmentString = this.
|
|
28
|
+
const arrayAssignmentString = this.getString(); ///
|
|
31
29
|
|
|
32
30
|
context.trace(`Evaluating the '${arrayAssignmentString}' array assignment...`);
|
|
33
31
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../../element";
|
|
3
4
|
import elements from "../../elements";
|
|
4
5
|
import Exception from "../../exception";
|
|
5
6
|
import nodeProperties from "../../nodeProperties";
|
|
@@ -10,17 +11,14 @@ import { NODE_TYPE, NODES_TYPE, STRING_TYPE, BOOLEAN_TYPE } from "../../types";
|
|
|
10
11
|
import { termFromNodes, termFromBoolean, termFromStringLiteral } from "../../utilities/term";
|
|
11
12
|
import { CONTENT_PARAMETER_NAME, TERMINAL_PARAMETER_NAME, CHILD_NODES_PARAMETER_NAME } from "../../parameterNames";
|
|
12
13
|
|
|
13
|
-
export default define(class ObjectAssigment {
|
|
14
|
-
constructor(string, variable, namedParameters) {
|
|
15
|
-
|
|
14
|
+
export default define(class ObjectAssigment extends Element {
|
|
15
|
+
constructor(context, string, node, variable, namedParameters) {
|
|
16
|
+
super(context, string, node)
|
|
17
|
+
|
|
16
18
|
this.variable = variable;
|
|
17
19
|
this.namedParameters = namedParameters;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
getString() {
|
|
21
|
-
return this.string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
22
|
getVariable() {
|
|
25
23
|
return this.variable;
|
|
26
24
|
}
|
|
@@ -30,7 +28,7 @@ export default define(class ObjectAssigment {
|
|
|
30
28
|
}
|
|
31
29
|
|
|
32
30
|
evaluate(context) {
|
|
33
|
-
const objectAssignmentString = this.
|
|
31
|
+
const objectAssignmentString = this.getString(); ///
|
|
34
32
|
|
|
35
33
|
context.trace(`Evaluating the '${objectAssignmentString}' object assignment...`);
|
|
36
34
|
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../../element";
|
|
4
|
+
|
|
3
5
|
import { define } from "../../elements";
|
|
4
6
|
|
|
5
|
-
export default define(class VariableAssignment {
|
|
6
|
-
constructor(string, variable, expression) {
|
|
7
|
-
|
|
7
|
+
export default define(class VariableAssignment extends Element {
|
|
8
|
+
constructor(context, string, node, variable, expression) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
8
11
|
this.variable = variable;
|
|
9
12
|
this.expression = expression;
|
|
10
13
|
}
|
|
11
14
|
|
|
12
|
-
getString() {
|
|
13
|
-
return this.string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
15
|
getVariable() {
|
|
17
16
|
return this.variable;
|
|
18
17
|
}
|
|
@@ -24,7 +23,7 @@ export default define(class VariableAssignment {
|
|
|
24
23
|
evaluate(context) {
|
|
25
24
|
let term;
|
|
26
25
|
|
|
27
|
-
const variableAssignmentString = this.
|
|
26
|
+
const variableAssignmentString = this.getString(); ///
|
|
28
27
|
|
|
29
28
|
context.trace(`Evaluating the '${variableAssignmentString}' variable assignment...`);
|
|
30
29
|
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import { define } from "../../elements";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
constructor(string, array) {
|
|
7
|
-
this.string = string;
|
|
8
|
-
this.array = array;
|
|
9
|
-
}
|
|
5
|
+
import Element from "../../element";
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export default define(class VariableAssignments extends Element {
|
|
8
|
+
constructor(context, string, node, array) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
11
|
+
this.array = array;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
getArray() {
|
|
@@ -17,7 +16,7 @@ export default define(class VariableAssignments {
|
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
evaluate(context) {
|
|
20
|
-
const variableAssignmentsString = this.
|
|
19
|
+
const variableAssignmentsString = this.getString(); ///
|
|
21
20
|
|
|
22
21
|
context.trace(`Evaluating the '${variableAssignmentsString}' variable assignments...`);
|
|
23
22
|
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import { define } from "../../elements";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import Element from "../../element";
|
|
6
|
+
|
|
7
|
+
export default define(class ProcedureDeclaration extends Element {
|
|
8
|
+
constructor(context, string, node, procedure) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
7
11
|
this.string = string;
|
|
8
12
|
this.procedure = procedure;
|
|
9
13
|
}
|
|
10
14
|
|
|
11
|
-
getString() {
|
|
12
|
-
return this.string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
15
|
getProcedure() {
|
|
16
16
|
return this.procedure;
|
|
17
17
|
}
|
package/src/element/error.js
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { define } from "../elements";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
constructor(string) {
|
|
7
|
-
this.string = string;
|
|
8
|
-
}
|
|
5
|
+
import Element from "../element";
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
export default define(class Error extends Element {
|
|
8
|
+
constructor(conterxt, string, node) {
|
|
9
|
+
super(context, string, node)
|
|
12
10
|
}
|
|
13
11
|
|
|
14
12
|
verify(context) {
|
package/src/element/every.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
3
4
|
import elements from "../elements";
|
|
4
5
|
import Exception from "../exception";
|
|
5
6
|
|
|
@@ -7,17 +8,15 @@ import { define } from "../elements";
|
|
|
7
8
|
import { NODES_TYPE, BOOLEAN_TYPE } from "../types";
|
|
8
9
|
import { termFromNode, termFromBoolean } from "../utilities/term";
|
|
9
10
|
|
|
10
|
-
export default define(class Every {
|
|
11
|
-
constructor(string, variable, anonymousProcedure) {
|
|
11
|
+
export default define(class Every extends Element {
|
|
12
|
+
constructor(context, string, node, variable, anonymousProcedure) {
|
|
13
|
+
super(context, string, node)
|
|
14
|
+
|
|
12
15
|
this.string = string;
|
|
13
16
|
this.variable = variable;
|
|
14
17
|
this.anonymousProcedure = anonymousProcedure;
|
|
15
18
|
}
|
|
16
19
|
|
|
17
|
-
getString() {
|
|
18
|
-
return this.string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
20
|
getVariable() {
|
|
22
21
|
return this.variable;
|
|
23
22
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
|
|
3
5
|
import { define } from "../elements";
|
|
4
6
|
|
|
5
|
-
export default define(class Expression {
|
|
6
|
-
constructor(string, term, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall) {
|
|
7
|
-
|
|
7
|
+
export default define(class Expression extends Element {
|
|
8
|
+
constructor(context, string, node, term, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
8
11
|
this.term = term;
|
|
9
12
|
this.some = some;
|
|
10
13
|
this.every = every;
|
|
@@ -16,10 +19,6 @@ export default define(class Expression {
|
|
|
16
19
|
this.procedureCall = procedureCall;
|
|
17
20
|
}
|
|
18
21
|
|
|
19
|
-
getString() {
|
|
20
|
-
return this.string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
22
|
getTerm() {
|
|
24
23
|
return this.term;
|
|
25
24
|
}
|
package/src/element/label.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
|
|
3
5
|
import { define } from "../elements";
|
|
4
6
|
|
|
5
|
-
export default define(class Label {
|
|
6
|
-
constructor(string, name) {
|
|
7
|
-
|
|
8
|
-
this.name = name;
|
|
9
|
-
}
|
|
7
|
+
export default define(class Label extends Element {
|
|
8
|
+
constructor(context, string, node, name) {
|
|
9
|
+
super(context, string, node)
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
return this.string;
|
|
11
|
+
this.name = name;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
getName() {
|
package/src/element/nodeQuery.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
+
import Element from "../element";
|
|
5
6
|
import Exception from "../exception";
|
|
6
7
|
|
|
7
8
|
import { define } from "../elements";
|
|
@@ -10,17 +11,14 @@ import { termFromNode } from "../utilities/term";
|
|
|
10
11
|
|
|
11
12
|
const { first } = arrayUtilities;
|
|
12
13
|
|
|
13
|
-
export default define(class NodeQuery {
|
|
14
|
-
constructor(string, variable, query) {
|
|
15
|
-
|
|
14
|
+
export default define(class NodeQuery extends Element {
|
|
15
|
+
constructor(context, string, node, variable, query) {
|
|
16
|
+
super(context, string, node)
|
|
17
|
+
|
|
16
18
|
this.variable = variable;
|
|
17
19
|
this.query = query;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
getString() {
|
|
21
|
-
return this.string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
22
|
getVariable() {
|
|
25
23
|
return this.variable;
|
|
26
24
|
}
|
|
@@ -32,7 +30,7 @@ export default define(class NodeQuery {
|
|
|
32
30
|
evaluate(context) {
|
|
33
31
|
let term;
|
|
34
32
|
|
|
35
|
-
const nodeQueryString = this.
|
|
33
|
+
const nodeQueryString = this.getString(); ///
|
|
36
34
|
|
|
37
35
|
context.trace(`Evaluating the '${nodeQueryString}' node query...`);
|
|
38
36
|
|