occam-furtle 2.0.340 → 3.0.1
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 +6319 -2036
- 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/release.js +675 -0
- package/lib/context.js +210 -0
- package/lib/element/assignment/array.js +117 -15
- package/lib/element/assignment/object.js +119 -17
- 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 +134 -68
- package/lib/element/label.js +119 -12
- package/lib/element/nodeQuery.js +120 -18
- package/lib/element/nodesQuery.js +120 -18
- 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 -63
- 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 +117 -15
- 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 +119 -17
- package/lib/element/term/negated.js +119 -15
- package/lib/element/term.js +131 -45
- package/lib/element/terms.js +125 -14
- package/lib/element/ternary.js +118 -16
- package/lib/element/variable.js +127 -19
- package/lib/element.js +1 -8
- package/lib/index.js +9 -1
- package/lib/log.js +13 -12
- package/lib/metaTypeNames.js +26 -0
- package/lib/metaTypes.js +66 -0
- package/lib/node/expression.js +8 -15
- 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 +110 -60
- package/lib/utilities/lineIndex.js +26 -0
- package/lib/utilities/primitive.js +14 -5
- package/lib/utilities/string.js +41 -37
- 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/release.js +653 -0
- package/src/context.js +74 -0
- package/src/element/assignment/array.js +8 -9
- package/src/element/assignment/object.js +12 -11
- 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 +13 -33
- package/src/element/label.js +6 -7
- package/src/element/nodeQuery.js +12 -14
- package/src/element/nodesQuery.js +12 -14
- 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 -57
- 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 +9 -9
- 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 +12 -12
- package/src/element/term/negated.js +11 -9
- package/src/element/term.js +16 -17
- package/src/element/terms.js +16 -9
- package/src/element/ternary.js +8 -9
- package/src/element/variable.js +24 -14
- package/src/element.js +0 -8
- package/src/index.js +2 -0
- package/src/log.js +11 -11
- package/src/metaTypeNames.js +5 -0
- package/src/metaTypes.js +71 -0
- package/src/node/expression.js +9 -17
- 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 +181 -94
- package/src/utilities/lineIndex.js +21 -0
- package/src/utilities/primitive.js +22 -5
- package/src/utilities/string.js +42 -36
- package/src/utilities/term.js +22 -5
- package/src/utilities/terms.js +12 -4
- package/test/helpers/furtle.js +1 -1
- package/test/helpers/nominal.js +2 -3
- package/test/main.js +4 -3
- package/test/context/file.js +0 -127
- package/test/context/release.js +0 -151
- 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
|
}
|