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.
Files changed (116) hide show
  1. package/example.js +5905 -1786
  2. package/lib/context/block.js +81 -41
  3. package/lib/context/file/furtle.js +260 -0
  4. package/lib/context/file/nominal.js +956 -0
  5. package/lib/context/file.js +146 -271
  6. package/lib/context.js +210 -0
  7. package/lib/element/assignment/array.js +116 -14
  8. package/lib/element/assignment/object.js +116 -14
  9. package/lib/element/assignment/variable.js +121 -14
  10. package/lib/element/assignments/variable.js +120 -13
  11. package/lib/element/declaration/procedure.js +120 -12
  12. package/lib/element/error.js +118 -13
  13. package/lib/element/every.js +116 -13
  14. package/lib/element/expression.js +127 -20
  15. package/lib/element/label.js +119 -12
  16. package/lib/element/nodeQuery.js +116 -14
  17. package/lib/element/nodesQuery.js +116 -14
  18. package/lib/element/parameter/named.js +117 -15
  19. package/lib/element/parameter.js +116 -14
  20. package/lib/element/parameters/named.js +116 -14
  21. package/lib/element/parameters.js +115 -13
  22. package/lib/element/primitive.js +115 -13
  23. package/lib/element/procedure/anonymous.js +118 -16
  24. package/lib/element/procedure.js +118 -16
  25. package/lib/element/procedureCall.js +116 -14
  26. package/lib/element/reduce.js +116 -14
  27. package/lib/element/reference.js +119 -12
  28. package/lib/element/returnBlock.js +116 -14
  29. package/lib/element/some.js +115 -13
  30. package/lib/element/statement/return.js +120 -13
  31. package/lib/element/step.js +121 -14
  32. package/lib/element/term/bracketed.js +120 -13
  33. package/lib/element/term/comparison.js +117 -15
  34. package/lib/element/term/logical.js +118 -16
  35. package/lib/element/term/negated.js +116 -14
  36. package/lib/element/term.js +127 -18
  37. package/lib/element/terms.js +125 -14
  38. package/lib/element/ternary.js +117 -15
  39. package/lib/element/variable.js +127 -19
  40. package/lib/element.js +1 -8
  41. package/lib/index.js +5 -5
  42. package/lib/log.js +13 -12
  43. package/lib/metaTypeNames.js +26 -0
  44. package/lib/metaTypes.js +66 -0
  45. package/lib/nodeProperties.js +17 -21
  46. package/lib/nodeProperty.js +4 -7
  47. package/lib/utilities/context.js +8 -37
  48. package/lib/utilities/customGrammar.js +49 -0
  49. package/lib/utilities/element.js +91 -37
  50. package/lib/utilities/lineIndex.js +26 -0
  51. package/lib/utilities/node.js +1 -8
  52. package/lib/utilities/primitive.js +14 -5
  53. package/lib/utilities/string.js +30 -19
  54. package/lib/utilities/term.js +14 -5
  55. package/lib/utilities/terms.js +7 -3
  56. package/package.json +2 -2
  57. package/src/context/block.js +20 -32
  58. package/src/context/file/furtle.js +141 -0
  59. package/src/context/file/nominal.js +946 -0
  60. package/src/context/file.js +32 -209
  61. package/src/context.js +74 -0
  62. package/src/element/assignment/array.js +6 -8
  63. package/src/element/assignment/object.js +6 -8
  64. package/src/element/assignment/variable.js +7 -8
  65. package/src/element/assignments/variable.js +7 -8
  66. package/src/element/declaration/procedure.js +6 -6
  67. package/src/element/error.js +4 -6
  68. package/src/element/every.js +5 -6
  69. package/src/element/expression.js +6 -7
  70. package/src/element/label.js +6 -7
  71. package/src/element/nodeQuery.js +6 -8
  72. package/src/element/nodesQuery.js +6 -8
  73. package/src/element/parameter/named.js +7 -8
  74. package/src/element/parameter.js +6 -8
  75. package/src/element/parameters/named.js +8 -9
  76. package/src/element/parameters.js +6 -8
  77. package/src/element/primitive.js +5 -7
  78. package/src/element/procedure/anonymous.js +7 -9
  79. package/src/element/procedure.js +6 -8
  80. package/src/element/procedureCall.js +6 -8
  81. package/src/element/reduce.js +5 -7
  82. package/src/element/reference.js +6 -7
  83. package/src/element/returnBlock.js +5 -7
  84. package/src/element/some.js +5 -7
  85. package/src/element/statement/return.js +7 -8
  86. package/src/element/step.js +6 -7
  87. package/src/element/term/bracketed.js +7 -8
  88. package/src/element/term/comparison.js +6 -8
  89. package/src/element/term/logical.js +6 -8
  90. package/src/element/term/negated.js +6 -8
  91. package/src/element/term.js +12 -9
  92. package/src/element/terms.js +16 -9
  93. package/src/element/ternary.js +6 -8
  94. package/src/element/variable.js +24 -14
  95. package/src/element.js +0 -8
  96. package/src/index.js +1 -1
  97. package/src/log.js +11 -11
  98. package/src/metaTypeNames.js +5 -0
  99. package/src/metaTypes.js +71 -0
  100. package/src/nodeProperties.js +23 -32
  101. package/src/nodeProperty.js +5 -10
  102. package/src/utilities/context.js +7 -45
  103. package/src/utilities/customGrammar.js +40 -0
  104. package/src/utilities/element.js +158 -64
  105. package/src/utilities/lineIndex.js +21 -0
  106. package/src/utilities/node.js +0 -5
  107. package/src/utilities/primitive.js +22 -5
  108. package/src/utilities/string.js +33 -19
  109. package/src/utilities/term.js +22 -5
  110. package/src/utilities/terms.js +12 -4
  111. package/test/context/release.js +477 -46
  112. package/test/helpers/furtle.js +1 -1
  113. package/test/helpers/nominal.js +2 -3
  114. package/test/main.js +1 -1
  115. package/test/context/file.js +0 -127
  116. package/test/helpers/constants.js +0 -17
@@ -1,164 +1,39 @@
1
1
  "use strict";
2
2
 
3
- import { arrayUtilities } from "necessary";
3
+ import Context from '../context';
4
4
 
5
- import { LEVELS } from "../constants";
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
- const { push } = arrayUtilities,
12
- [ TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL ] = LEVELS;
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.procedures = procedures;
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
- getLexer() {
47
- const lexer = furtleLexer; ///
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
- getMetavariables(includeRelease = true) {
145
- const metavariables = [];
29
+ break(node) {
30
+ const lineIndex = lineIndexFromNodeAndTokens(node, this.tokens);
146
31
 
147
- return metavariables;
32
+ this.context.break(this.filePath, lineIndex);
148
33
  }
149
34
 
150
- addProcedure(procedure) {
151
- const procedureString = procedure.getString();
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 context = this, ///
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 file = this.findFile(this.filePath),
264
- lexer = this.getLexer(),
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
- this.lineIndex = null;
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, context) {
127
+ static fromFile(Class, file, ...remainingArguments) {
310
128
  const filePath = file.getPath(),
311
- lineIndex = null,
312
129
  tokens = null,
313
130
  node = null,
314
- procedures = [],
315
- fileContext = new FileContext(context, filePath, lineIndex, node, tokens, procedures);
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, context) {
321
- const lineIndex = null,
322
- tokens = null,
137
+ static fromFilePath(Class, filePath, ...remainingArguments) {
138
+ const tokens = null,
323
139
  node = null,
324
- procedures = null,
325
- fileContext = new FileContext(context, filePath, lineIndex, node, tokens, procedures);
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
- this.string = string;
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.string; ///
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
- this.string = string;
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.string; ///
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
- this.string = string;
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.string; ///
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
- export default define(class VariableAssignments {
6
- constructor(string, array) {
7
- this.string = string;
8
- this.array = array;
9
- }
5
+ import Element from "../../element";
10
6
 
11
- getString() {
12
- return this.string;
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.string; ///
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
- export default define(class ProcedureDeclaration {
6
- constructor(string, procedure) {
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
  }
@@ -2,13 +2,11 @@
2
2
 
3
3
  import { define } from "../elements";
4
4
 
5
- export default define(class Error {
6
- constructor(string) {
7
- this.string = string;
8
- }
5
+ import Element from "../element";
9
6
 
10
- getString() {
11
- return this.string;
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) {
@@ -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
- this.string = string;
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
  }
@@ -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
- this.string = string;
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
- getString() {
12
- return this.string;
11
+ this.name = name;
13
12
  }
14
13
 
15
14
  getName() {
@@ -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
- this.string = string;
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.string; ///
33
+ const nodeQueryString = this.getString(); ///
36
34
 
37
35
  context.trace(`Evaluating the '${nodeQueryString}' node query...`);
38
36