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/utilities/element.js
CHANGED
|
@@ -7,10 +7,10 @@ import elements from "../elements";
|
|
|
7
7
|
import { BOOLEAN_TYPE } from "../types";
|
|
8
8
|
import { ternaryStringFromTerm,
|
|
9
9
|
variableStringFromName,
|
|
10
|
-
|
|
10
|
+
termStringFromProperties,
|
|
11
|
+
expressionStringFromProperties,
|
|
11
12
|
procedureDeclarationStringFromProcedure,
|
|
12
13
|
returnBlockStringFromReturnStatementNode,
|
|
13
|
-
expressionStringFromPrimitiveAndProperties,
|
|
14
14
|
variableAssignmentStringFromTypeAndVariable,
|
|
15
15
|
someStringFromVariableAndAnonymousProcedure,
|
|
16
16
|
everyStringFromVariableAndAnonymousProcedure,
|
|
@@ -25,25 +25,33 @@ export function stepFromStepNode(stepNode, context) {
|
|
|
25
25
|
string = context.nodeAsString(node),
|
|
26
26
|
arrayAssignment = arrayAssignmentFromStepNode(stepNode, context),
|
|
27
27
|
objectAssigment = objectAssignmentFromStepNode(stepNode, context),
|
|
28
|
-
variablesDeclaration = variableAssignmentsFromStepNode(stepNode, context)
|
|
29
|
-
|
|
28
|
+
variablesDeclaration = variableAssignmentsFromStepNode(stepNode, context);
|
|
29
|
+
|
|
30
|
+
context = null;
|
|
31
|
+
|
|
32
|
+
const step = new Step(context, string, node, arrayAssignment, objectAssigment, variablesDeclaration);
|
|
30
33
|
|
|
31
34
|
return step;
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
export function someFromSomeNode(someNode, context) {
|
|
35
38
|
const { Some } = elements,
|
|
39
|
+
node = someNode, ///
|
|
36
40
|
variable = variableFromSomeNode(someNode, context),
|
|
37
41
|
anonymousProcedure = anonymousProcedureFromSomeNode(someNode, context),
|
|
38
42
|
someString = someStringFromVariableAndAnonymousProcedure(variable, anonymousProcedure),
|
|
39
|
-
string = someString
|
|
40
|
-
|
|
43
|
+
string = someString; ///
|
|
44
|
+
|
|
45
|
+
context = null;
|
|
46
|
+
|
|
47
|
+
const some = new Some(context, string, node, variable, anonymousProcedure);
|
|
41
48
|
|
|
42
49
|
return some;
|
|
43
50
|
}
|
|
44
51
|
|
|
45
52
|
export function termFromTermNode(termNode, context) {
|
|
46
53
|
const { Term } = elements,
|
|
54
|
+
node = termNode, ///
|
|
47
55
|
variable = variableFromTermNode(termNode, context),
|
|
48
56
|
primitive = primitiveFromTermNode(termNode, context),
|
|
49
57
|
negatedTerm = negatedTermFromTermNode(termNode, context),
|
|
@@ -52,14 +60,18 @@ export function termFromTermNode(termNode, context) {
|
|
|
52
60
|
comparisonTerm = comparisonTermFromTermNode(termNode, context),
|
|
53
61
|
properties = [
|
|
54
62
|
variable,
|
|
63
|
+
primitive,
|
|
55
64
|
negatedTerm,
|
|
56
65
|
logicalTerm,
|
|
57
66
|
bracketedTerm,
|
|
58
67
|
comparisonTerm
|
|
59
68
|
],
|
|
60
|
-
termString =
|
|
61
|
-
string = termString
|
|
62
|
-
|
|
69
|
+
termString = termStringFromProperties(properties, context),
|
|
70
|
+
string = termString; ///
|
|
71
|
+
|
|
72
|
+
context = null;
|
|
73
|
+
|
|
74
|
+
const term = new Term(context, string, node, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm);
|
|
63
75
|
|
|
64
76
|
return term;
|
|
65
77
|
}
|
|
@@ -70,8 +82,11 @@ export function termsFromTermsNode(termsNode, context) {
|
|
|
70
82
|
string = context.nodeAsString(node),
|
|
71
83
|
termNodes = termsNode.getTermNodes(),
|
|
72
84
|
termsArray = termsArrayFromTermNodes(termNodes, context),
|
|
73
|
-
array = termsArray
|
|
74
|
-
|
|
85
|
+
array = termsArray; ///
|
|
86
|
+
|
|
87
|
+
context = null;
|
|
88
|
+
|
|
89
|
+
const terms = new Terms(context, string, node, array);
|
|
75
90
|
|
|
76
91
|
return terms;
|
|
77
92
|
}
|
|
@@ -79,19 +94,26 @@ export function termsFromTermsNode(termsNode, context) {
|
|
|
79
94
|
export function errorFromErrorNode(errorNode, context) {
|
|
80
95
|
const { Error } = elements,
|
|
81
96
|
node = errorNode, ///
|
|
82
|
-
string = context.nodeAsString(node)
|
|
83
|
-
|
|
97
|
+
string = context.nodeAsString(node);
|
|
98
|
+
|
|
99
|
+
context = null;
|
|
100
|
+
|
|
101
|
+
const error = new Error(context, string, node);
|
|
84
102
|
|
|
85
103
|
return error;
|
|
86
104
|
}
|
|
87
105
|
|
|
88
106
|
export function everyFromEveryNode(everyNode, context) {
|
|
89
107
|
const { Every } = elements,
|
|
108
|
+
node = everyNode, ///
|
|
90
109
|
variable = variableFromEveryNode(everyNode, context),
|
|
91
110
|
anonymousProcedure = anonymousProcedureFromEveryNode(everyNode, context),
|
|
92
111
|
everyString = everyStringFromVariableAndAnonymousProcedure(variable, anonymousProcedure),
|
|
93
|
-
string = everyString
|
|
94
|
-
|
|
112
|
+
string = everyString; ///
|
|
113
|
+
|
|
114
|
+
context = null;
|
|
115
|
+
|
|
116
|
+
const every = new Every(context, string, node, variable, anonymousProcedure);
|
|
95
117
|
|
|
96
118
|
return every;
|
|
97
119
|
}
|
|
@@ -100,32 +122,43 @@ export function labelFromLabelNode(labelNode, context) {
|
|
|
100
122
|
const { Label } = elements,
|
|
101
123
|
node = labelNode,
|
|
102
124
|
string = context.nodeAsString(node),
|
|
103
|
-
name = nameFromLabelNode(labelNode, context)
|
|
104
|
-
|
|
125
|
+
name = nameFromLabelNode(labelNode, context);
|
|
126
|
+
|
|
127
|
+
context = null;
|
|
128
|
+
|
|
129
|
+
const label = new Label(context, string, node, name);
|
|
105
130
|
|
|
106
131
|
return label;
|
|
107
132
|
}
|
|
108
133
|
|
|
109
134
|
export function reduceFromReduceNode(reduceNode, context) {
|
|
110
135
|
const { Reduce } = elements,
|
|
136
|
+
node = reduceNode, ///
|
|
111
137
|
variable = variableFromReduceNode(reduceNode, context),
|
|
112
138
|
initialExpression = initialExpressionFromReduceNode(reduceNode, context),
|
|
113
139
|
anonymousProcedure = anonymousProcedureFromReduceNode(reduceNode, context),
|
|
114
140
|
reduceString = reduceStringFromVariableInitialExpressionAndAnonymousProcedure(variable, initialExpression, anonymousProcedure),
|
|
115
|
-
string = reduceString
|
|
116
|
-
|
|
141
|
+
string = reduceString; ///
|
|
142
|
+
|
|
143
|
+
context = null;
|
|
144
|
+
|
|
145
|
+
const reduce = new Reduce(context, string, node, variable, initialExpression, anonymousProcedure);
|
|
117
146
|
|
|
118
147
|
return reduce;
|
|
119
148
|
}
|
|
120
149
|
|
|
121
150
|
export function ternaryFromTernaryNode(ternaryNode, context) {
|
|
122
151
|
const { Ternary } = elements,
|
|
152
|
+
node = ternaryNode, ///
|
|
123
153
|
term = termFromTernaryNode(ternaryNode, context),
|
|
124
154
|
ifExpression = ifExpressionFromTernaryNode(ternaryNode, context),
|
|
125
155
|
elseExpression = elseExpressionFromTernaryNode(ternaryNode, context),
|
|
126
156
|
ternaryString = ternaryStringFromTerm(term),
|
|
127
|
-
string = ternaryString
|
|
128
|
-
|
|
157
|
+
string = ternaryString; ///
|
|
158
|
+
|
|
159
|
+
context = null;
|
|
160
|
+
|
|
161
|
+
const ternary = new Ternary(context, string, node, term, ifExpression, elseExpression);
|
|
129
162
|
|
|
130
163
|
return ternary;
|
|
131
164
|
}
|
|
@@ -136,8 +169,11 @@ export function variableFromVariableNode(variableNode, context) {
|
|
|
136
169
|
string = context.nodeAsString(node),
|
|
137
170
|
type = typeFromVariableNode(variableNode, context),
|
|
138
171
|
name = nameFromVariableNode(variableNode, context),
|
|
139
|
-
expression = expressionFromVariableNode(variableNode, context)
|
|
140
|
-
|
|
172
|
+
expression = expressionFromVariableNode(variableNode, context);
|
|
173
|
+
|
|
174
|
+
context = null;
|
|
175
|
+
|
|
176
|
+
const variable = new Variable(context, string, node, type, name, expression);
|
|
141
177
|
|
|
142
178
|
return variable;
|
|
143
179
|
}
|
|
@@ -146,8 +182,11 @@ export function referenceFromReferenceNode(referenceNode, context) {
|
|
|
146
182
|
const { Reference } = elements,
|
|
147
183
|
node = referenceNode, ///
|
|
148
184
|
string = context.nodeAsString(node),
|
|
149
|
-
name = nameFromReferenceNode(referenceNode, context)
|
|
150
|
-
|
|
185
|
+
name = nameFromReferenceNode(referenceNode, context);
|
|
186
|
+
|
|
187
|
+
context = null;
|
|
188
|
+
|
|
189
|
+
const reference = new Reference(context, string, node, name);
|
|
151
190
|
|
|
152
191
|
return reference;
|
|
153
192
|
}
|
|
@@ -163,7 +202,9 @@ export function parameterFromParameterNode(parameterNode, context) {
|
|
|
163
202
|
string = context.nodeAsString(node),
|
|
164
203
|
name = nameFromParaneterNode(parameterNode, context);
|
|
165
204
|
|
|
166
|
-
|
|
205
|
+
context = null;
|
|
206
|
+
|
|
207
|
+
parameter = new Parameter(context, string, node, type, name);
|
|
167
208
|
}
|
|
168
209
|
|
|
169
210
|
return parameter;
|
|
@@ -174,19 +215,25 @@ export function nodeQueryFromNodeQueryNode(nodeQueryNode, context) {
|
|
|
174
215
|
node = nodeQueryNode, ///
|
|
175
216
|
string = context.nodeAsString(node),
|
|
176
217
|
variable = variableFromNodeQueryNode(nodeQueryNode, context),
|
|
177
|
-
query = queryFromNodeQueryNode(nodeQueryNode, context)
|
|
178
|
-
|
|
218
|
+
query = queryFromNodeQueryNode(nodeQueryNode, context);
|
|
219
|
+
|
|
220
|
+
context = null;
|
|
221
|
+
|
|
222
|
+
const nodeQuery = new NodeQuery(context, string, node, variable, query);
|
|
179
223
|
|
|
180
224
|
return nodeQuery;
|
|
181
225
|
}
|
|
182
226
|
|
|
183
227
|
export function primitiveFromPrimitiveNode(primitiveNode, context) {
|
|
184
228
|
const { Primitive } = elements,
|
|
185
|
-
|
|
186
|
-
string =
|
|
229
|
+
node = primitiveNode, ///
|
|
230
|
+
string = context.nodeAsString(node),
|
|
187
231
|
type = typeFromPrimitiveNode(primitiveNode, context),
|
|
188
|
-
value = valueFromPrimitiveNode(primitiveNode, context)
|
|
189
|
-
|
|
232
|
+
value = valueFromPrimitiveNode(primitiveNode, context);
|
|
233
|
+
|
|
234
|
+
context = null;
|
|
235
|
+
|
|
236
|
+
const primitive = new Primitive(context, string, node, type, value);
|
|
190
237
|
|
|
191
238
|
return primitive;
|
|
192
239
|
}
|
|
@@ -196,8 +243,11 @@ export function nodesQueryFromNodesQueryNode(nodesQueryNode, context) {
|
|
|
196
243
|
node = nodesQueryNode, ///
|
|
197
244
|
string = context.nodeAsString(node),
|
|
198
245
|
variable = variableFromNodesQueryNode(nodesQueryNode, context),
|
|
199
|
-
query = queryFromNodesQueryNode(nodesQueryNode, context)
|
|
200
|
-
|
|
246
|
+
query = queryFromNodesQueryNode(nodesQueryNode, context);
|
|
247
|
+
|
|
248
|
+
context = null;
|
|
249
|
+
|
|
250
|
+
const nodesQuery = new NodesQuery(context, string, node, variable, query);
|
|
201
251
|
|
|
202
252
|
return nodesQuery;
|
|
203
253
|
}
|
|
@@ -207,16 +257,19 @@ export function parametersFromParametersNode(parametersNode, context) {
|
|
|
207
257
|
node = parametersNode, ///
|
|
208
258
|
string = context.nodeAsString(node),
|
|
209
259
|
paramtersArray = paramtersArrayFromParametersNode(parametersNode, context),
|
|
210
|
-
array = paramtersArray
|
|
211
|
-
|
|
260
|
+
array = paramtersArray; ///
|
|
261
|
+
|
|
262
|
+
context = null;
|
|
263
|
+
|
|
264
|
+
const parameters = new Parameters(context, string, node, array);
|
|
212
265
|
|
|
213
266
|
return parameters;
|
|
214
267
|
}
|
|
215
268
|
|
|
216
269
|
export function expressionFromExpressionNode(expressionNode, context) {
|
|
217
270
|
const { Expression } = elements,
|
|
218
|
-
|
|
219
|
-
|
|
271
|
+
node = expressionNode, ///
|
|
272
|
+
term = termFromExpressionNode(expressionNode, context),
|
|
220
273
|
some = someFromExpressionNode(expressionNode, context),
|
|
221
274
|
every = everyFromExpressionNode(expressionNode, context),
|
|
222
275
|
reduce = reduceFromExpressionNode(expressionNode, context),
|
|
@@ -226,31 +279,38 @@ export function expressionFromExpressionNode(expressionNode, context) {
|
|
|
226
279
|
returnBlock = returnBlockFromExpressionNode(expressionNode, context),
|
|
227
280
|
procedureCall = procedureCallFromExpressionNode(expressionNode, context),
|
|
228
281
|
properties = [
|
|
282
|
+
term,
|
|
229
283
|
some,
|
|
230
284
|
every,
|
|
231
285
|
reduce,
|
|
232
286
|
ternary,
|
|
233
|
-
variable,
|
|
234
287
|
nodeQuery,
|
|
235
288
|
nodesQuery,
|
|
236
289
|
returnBlock,
|
|
237
290
|
procedureCall
|
|
238
291
|
],
|
|
239
|
-
expressionString =
|
|
240
|
-
string = expressionString
|
|
241
|
-
|
|
292
|
+
expressionString = expressionStringFromProperties(properties, context),
|
|
293
|
+
string = expressionString; ///
|
|
294
|
+
|
|
295
|
+
context = null;
|
|
296
|
+
|
|
297
|
+
const expression = new Expression(context, string, node, term, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall);
|
|
242
298
|
|
|
243
299
|
return expression;
|
|
244
300
|
}
|
|
245
301
|
|
|
246
302
|
export function returnBlockFromReturnBlockNode(returnBlockNode, context) {
|
|
247
303
|
const { ReturnBlock } = elements,
|
|
304
|
+
node = returnBlockNode, ///
|
|
248
305
|
steps = stepsFromReturnBlockNode(returnBlockNode, context),
|
|
249
306
|
nonsensical = nonsensicalFromReturnBlockNode(returnBlockNode, context),
|
|
250
307
|
returnStatement = returnStatementFromReturnBlockNode(returnBlockNode, context),
|
|
251
308
|
returnBlockString = returnBlockStringFromReturnStatementNode(returnStatement),
|
|
252
|
-
string = returnBlockString
|
|
253
|
-
|
|
309
|
+
string = returnBlockString; ///
|
|
310
|
+
|
|
311
|
+
context = null;
|
|
312
|
+
|
|
313
|
+
const returnBlock = new ReturnBlock(context, string, node, steps, nonsensical, returnStatement);
|
|
254
314
|
|
|
255
315
|
return returnBlock;
|
|
256
316
|
}
|
|
@@ -260,8 +320,11 @@ export function procedureCallFromProcedureCallNode(procedureCallNode, context) {
|
|
|
260
320
|
node = procedureCallNode, ///
|
|
261
321
|
string = context.nodeAsString(node),
|
|
262
322
|
reference = referenceFromProcedureCallNode(procedureCallNode, context),
|
|
263
|
-
terms = termsFromProcedureCallNode(procedureCallNode, context)
|
|
264
|
-
|
|
323
|
+
terms = termsFromProcedureCallNode(procedureCallNode, context);
|
|
324
|
+
|
|
325
|
+
context = null;
|
|
326
|
+
|
|
327
|
+
const procedureCall = new ProcedureCall(context, string, node, reference, terms);
|
|
265
328
|
|
|
266
329
|
return procedureCall;
|
|
267
330
|
}
|
|
@@ -272,8 +335,11 @@ export function namedParameterFromNamedParameterNode(namedParameterNode, context
|
|
|
272
335
|
string = context.nodeAsString(node),
|
|
273
336
|
type = typeFromNamedParameterNode(namedParameterNode, context),
|
|
274
337
|
name = nameFromNamedParameterNode(namedParameterNode, context),
|
|
275
|
-
alias = aliasFromNamedParameterNode(namedParameterNode, context)
|
|
276
|
-
|
|
338
|
+
alias = aliasFromNamedParameterNode(namedParameterNode, context);
|
|
339
|
+
|
|
340
|
+
context = null;
|
|
341
|
+
|
|
342
|
+
const namedParameter = new NamedParameter(context, string, node, type, name, alias);
|
|
277
343
|
|
|
278
344
|
return namedParameter;
|
|
279
345
|
}
|
|
@@ -284,8 +350,11 @@ export function namedParametersFromNamedParametersNode(namedParametersNode, cont
|
|
|
284
350
|
string = context.nodeAsString(node),
|
|
285
351
|
namedParameterNodes = namedParametersNode.getNamedParameterNodes(),
|
|
286
352
|
namedParametersArray = namedParamtersArrayFromNamedParameterNodes(namedParameterNodes, context),
|
|
287
|
-
array = namedParametersArray
|
|
288
|
-
|
|
353
|
+
array = namedParametersArray; ///
|
|
354
|
+
|
|
355
|
+
context = null;
|
|
356
|
+
|
|
357
|
+
const namedParameters = new NamedParameters(context, string, node, array);
|
|
289
358
|
|
|
290
359
|
return namedParameters;
|
|
291
360
|
}
|
|
@@ -295,8 +364,11 @@ export function arrayAssignmentFromArrayAssignmentNode(arrayAssignmentNode, cont
|
|
|
295
364
|
node = arrayAssignmentNode, ///
|
|
296
365
|
string = context.nodeAsString(node),
|
|
297
366
|
variable = variableFromArrayAssignmentNode(arrayAssignmentNode, context),
|
|
298
|
-
parameters = parametersFromArrayAssignmentNode(arrayAssignmentNode, context)
|
|
299
|
-
|
|
367
|
+
parameters = parametersFromArrayAssignmentNode(arrayAssignmentNode, context);
|
|
368
|
+
|
|
369
|
+
context = null;
|
|
370
|
+
|
|
371
|
+
const arrayAssignment = new ArrayAssignment(context, string, node, variable, parameters);
|
|
300
372
|
|
|
301
373
|
return arrayAssignment;
|
|
302
374
|
}
|
|
@@ -305,8 +377,11 @@ export function returnStatementFromReturnStatementNode(returnStatementNode, cont
|
|
|
305
377
|
const { ReturnStatement } = elements,
|
|
306
378
|
node = returnStatementNode, ///
|
|
307
379
|
string = context.nodeAsString(node),
|
|
308
|
-
term = termFromReturnStatementNode(returnStatementNode, context)
|
|
309
|
-
|
|
380
|
+
term = termFromReturnStatementNode(returnStatementNode, context);
|
|
381
|
+
|
|
382
|
+
context = null;
|
|
383
|
+
|
|
384
|
+
const returnStatement = new ReturnStatement(context, string, node, term);
|
|
310
385
|
|
|
311
386
|
return returnStatement;
|
|
312
387
|
}
|
|
@@ -323,42 +398,57 @@ export function objectAssignmentFromObjectAssignmentNode(objectAssignmentNode, c
|
|
|
323
398
|
node = objectAssignmentNode, ///
|
|
324
399
|
string = context.nodeAsString(node),
|
|
325
400
|
variable = variableFromObjectAssignmentNode(objectAssignmentNode, context),
|
|
326
|
-
namedParameters = namedParametersFromObjectAssignmentNode(objectAssignmentNode, context)
|
|
327
|
-
|
|
401
|
+
namedParameters = namedParametersFromObjectAssignmentNode(objectAssignmentNode, context);
|
|
402
|
+
|
|
403
|
+
context = null;
|
|
404
|
+
|
|
405
|
+
const objectAssignment = new ObjectAssigment(context, string, node, variable, namedParameters);
|
|
328
406
|
|
|
329
407
|
return objectAssignment;
|
|
330
408
|
}
|
|
331
409
|
|
|
332
410
|
export function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
333
411
|
const { AnonymousProcedure } = elements,
|
|
412
|
+
node = anonymousProcedureNode, ///
|
|
334
413
|
type = typeFromProcedureAnonymousProcedureNode(anonymousProcedureNode, context),
|
|
335
414
|
parameters = parametersFromAnonymousProcedureNode(anonymousProcedureNode, context),
|
|
336
415
|
returnBlock = returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, context),
|
|
337
416
|
nonymousProcedureString = anonymousProcedureStringFromTypeParametersAndReturnBlock(type, parameters, returnBlock),
|
|
338
|
-
string = nonymousProcedureString
|
|
339
|
-
|
|
417
|
+
string = nonymousProcedureString; ///
|
|
418
|
+
|
|
419
|
+
context = null;
|
|
420
|
+
|
|
421
|
+
const anonymousProcedure = new AnonymousProcedure(context, string, node, type, parameters, returnBlock);
|
|
340
422
|
|
|
341
423
|
return anonymousProcedure;
|
|
342
424
|
}
|
|
343
425
|
|
|
344
426
|
export function variableAssignmentsFromVariableAssignmentsNode(variableAssignmentsNode, context) {
|
|
345
427
|
const { VariableAssignments } = elements,
|
|
428
|
+
node = variableAssignmentsNode, ///
|
|
346
429
|
type = typeFromVariableAssignmentsNode(variableAssignmentsNode, context),
|
|
347
430
|
variableAssignmentsArray = variableAssignmentsArrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context),
|
|
348
431
|
variableAssignmentString = variableAssignmentStringFromTypeAndVariableAssignmentsArray(type, variableAssignmentsArray),
|
|
349
432
|
array = variableAssignmentsArray, ///
|
|
350
|
-
string = variableAssignmentString
|
|
351
|
-
|
|
433
|
+
string = variableAssignmentString; ///
|
|
434
|
+
|
|
435
|
+
context = null;
|
|
436
|
+
|
|
437
|
+
const variableAssignments = new VariableAssignments(context, string, node, array);
|
|
352
438
|
|
|
353
439
|
return variableAssignments;
|
|
354
440
|
}
|
|
355
441
|
|
|
356
442
|
export function procedureDeclarationFromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
357
443
|
const { ProcedureDeclaration } = elements,
|
|
444
|
+
node = procedureDeclarationNode, ///
|
|
358
445
|
procedure = procedureFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
359
446
|
procedureDeclarationString = procedureDeclarationStringFromProcedure(procedure),
|
|
360
|
-
string = procedureDeclarationString
|
|
361
|
-
|
|
447
|
+
string = procedureDeclarationString; ///
|
|
448
|
+
|
|
449
|
+
context = null;
|
|
450
|
+
|
|
451
|
+
const procedureDeclaration = new ProcedureDeclaration(context, string, node, procedure);
|
|
362
452
|
|
|
363
453
|
return procedureDeclaration;
|
|
364
454
|
}
|
|
@@ -457,6 +547,18 @@ export function variableFromReduceNode(reduceNode, context) {
|
|
|
457
547
|
return variable;
|
|
458
548
|
}
|
|
459
549
|
|
|
550
|
+
export function termFromExpressionNode(expressionNode, context) {
|
|
551
|
+
let term = null;
|
|
552
|
+
|
|
553
|
+
const termNode = expressionNode.getTermNode();
|
|
554
|
+
|
|
555
|
+
if (termNode !== null) {
|
|
556
|
+
term = termFromTermNode(termNode, context);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
return term;
|
|
560
|
+
}
|
|
561
|
+
|
|
460
562
|
export function someFromExpressionNode(expressionNode, context) {
|
|
461
563
|
let some = null;
|
|
462
564
|
|
|
@@ -533,9 +635,15 @@ export function typeFromLogicalTermNode(logicalTermNode, context) {
|
|
|
533
635
|
return type;
|
|
534
636
|
}
|
|
535
637
|
|
|
638
|
+
export function typeFromNegatedTermNode(logicalTermNode, context) {
|
|
639
|
+
const type = BOOLEAN_TYPE;
|
|
640
|
+
|
|
641
|
+
return type;
|
|
642
|
+
}
|
|
643
|
+
|
|
536
644
|
export function termFromNegatedTermNode(negatedTermNode, context) {
|
|
537
645
|
const termNode = negatedTermNode.getTermNode(),
|
|
538
|
-
|
|
646
|
+
term = termFromTermNode(termNode, context);
|
|
539
647
|
|
|
540
648
|
return term;
|
|
541
649
|
}
|
|
@@ -633,18 +741,6 @@ export function variableFromNodesQueryNode(nodesQueryNode, context) {
|
|
|
633
741
|
return variable;
|
|
634
742
|
}
|
|
635
743
|
|
|
636
|
-
export function variableFromExpressionNode(expressionNode, context) {
|
|
637
|
-
let variable = null;
|
|
638
|
-
|
|
639
|
-
const variableNode = expressionNode.getVariableNode();
|
|
640
|
-
|
|
641
|
-
if (variableNode !== null) {
|
|
642
|
-
variable = variableFromVariableNode(variableNode, context);
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
return variable;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
744
|
export function termsFromProcedureCallNode(procedureCallNode, context) {
|
|
649
745
|
const termsNode = procedureCallNode.getTermsNode(),
|
|
650
746
|
terms = termsFromTermsNode(termsNode, context);
|
|
@@ -690,18 +786,6 @@ export function ifExpressionFromTernaryNode(ternaryNode, context) {
|
|
|
690
786
|
return ifExpression;
|
|
691
787
|
}
|
|
692
788
|
|
|
693
|
-
export function primitiveFromExpressionNode(expressionNode, context) {
|
|
694
|
-
let primitive = null;
|
|
695
|
-
|
|
696
|
-
const primitiveNode = expressionNode.getPrimitiveNode();
|
|
697
|
-
|
|
698
|
-
if (primitiveNode !== null) {
|
|
699
|
-
primitive = primitiveFromPrimitiveNode(primitiveNode, context);
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
return primitive;
|
|
703
|
-
}
|
|
704
|
-
|
|
705
789
|
export function nodeQueryFromExpressionNode(expressionNode, context) {
|
|
706
790
|
let nodeQuery = null;
|
|
707
791
|
|
|
@@ -823,7 +907,7 @@ export function negatedTermFromNegatedTermNode(negatedTermNode, context) {
|
|
|
823
907
|
termNode = negatedTermNode.getTermNode(),
|
|
824
908
|
type = typeFromNegatedTermNode(termNode, context),
|
|
825
909
|
term = termFromNegatedTermNode(negatedTermNode, context),
|
|
826
|
-
negatedTerm = new NegatedTerm(string, type, term);
|
|
910
|
+
negatedTerm = new NegatedTerm(context, string, node, type, term);
|
|
827
911
|
|
|
828
912
|
return negatedTerm;
|
|
829
913
|
}
|
|
@@ -836,18 +920,19 @@ export function logicalTermFromLogicalTermNode(logicalTermNode, context) {
|
|
|
836
920
|
disjunction = disjunctionFromLogicalTermNode(logicalTermNode, context),
|
|
837
921
|
leftTerm = leftTermFromLogicalTermNode(logicalTermNode, context),
|
|
838
922
|
rightTerm = rightTermFromLogicalTermNode(logicalTermNode, context),
|
|
839
|
-
logicalTerm = new LogicalTerm(string, type, disjunction, leftTerm, rightTerm);
|
|
923
|
+
logicalTerm = new LogicalTerm(context, string, node, type, disjunction, leftTerm, rightTerm);
|
|
840
924
|
|
|
841
925
|
return logicalTerm;
|
|
842
926
|
}
|
|
843
927
|
|
|
844
928
|
export function variableFromTypeAndVariableNode(type, variableNode, context) {
|
|
845
929
|
const { Variable } = elements,
|
|
930
|
+
node = variableNode, ///
|
|
846
931
|
name = nameFromVariableNode(variableNode),
|
|
847
932
|
expression = expressionFromTypeAndVariableNode(type, variableNode, context),
|
|
848
933
|
variableString = variableStringFromName(name),
|
|
849
934
|
string = variableString, ///
|
|
850
|
-
variable = new Variable(string, type, name, expression);
|
|
935
|
+
variable = new Variable(context, string, node, type, name, expression);
|
|
851
936
|
|
|
852
937
|
return variable;
|
|
853
938
|
}
|
|
@@ -962,7 +1047,7 @@ export function bracketedTermFromBracketedTermNode(bracketedTermNode, context) {
|
|
|
962
1047
|
node = bracketedTermNode, ///
|
|
963
1048
|
string = context.nodeAsString(node), ///
|
|
964
1049
|
term = termFromBracketedTermNode(bracketedTermNode, context),
|
|
965
|
-
bracketedTerm = new BracketedTerm(string, term);
|
|
1050
|
+
bracketedTerm = new BracketedTerm(context, string, node, term);
|
|
966
1051
|
|
|
967
1052
|
return bracketedTerm;
|
|
968
1053
|
}
|
|
@@ -988,7 +1073,7 @@ export function comparisonTermFromComparisonTermNode(comparisonTermNode, context
|
|
|
988
1073
|
negated = negatedFromComparisonTermNode(comparisonTermNode, context),
|
|
989
1074
|
leftTerm = leftTermFromCompzrisonTermNode(comparisonTermNode, context),
|
|
990
1075
|
rightTerm = rightTermFromCompzrisonTermNode(comparisonTermNode, context),
|
|
991
|
-
comparisonTerm = new ComparisonTerm(string, negated, leftTerm, rightTerm);
|
|
1076
|
+
comparisonTerm = new ComparisonTerm(context, string, node, negated, leftTerm, rightTerm);
|
|
992
1077
|
|
|
993
1078
|
return comparisonTerm;
|
|
994
1079
|
}
|
|
@@ -1002,13 +1087,14 @@ export function returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, co
|
|
|
1002
1087
|
|
|
1003
1088
|
export function procedureFromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
1004
1089
|
const { Procedure } = elements,
|
|
1090
|
+
node = procedureDeclarationNode, ///
|
|
1005
1091
|
type = typeFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1006
1092
|
label = labelFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1007
1093
|
parameters = parametersFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1008
1094
|
returnBlock = returnBlockFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1009
1095
|
procedureString = procedureStringFromTypeLabelParametersAndReturnBlock(type, label, parameters, returnBlock),
|
|
1010
1096
|
string = procedureString, ///
|
|
1011
|
-
procedure = new Procedure(string, type, label, parameters, returnBlock);
|
|
1097
|
+
procedure = new Procedure(context, string, node, type, label, parameters, returnBlock);
|
|
1012
1098
|
|
|
1013
1099
|
return procedure;
|
|
1014
1100
|
}
|
|
@@ -1042,11 +1128,12 @@ export function variableFromTypeAndVariableAssignmentNode(type, variableAssignme
|
|
|
1042
1128
|
|
|
1043
1129
|
export function variableAssignmentFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context) {
|
|
1044
1130
|
const { VariableAssignment } = elements,
|
|
1131
|
+
node = variableAssignmentNode, ///
|
|
1045
1132
|
variable = variableFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context),
|
|
1046
1133
|
expression = expressionFromVariableAssignmentNode(variableAssignmentNode, context),
|
|
1047
1134
|
variableAssignmentString = variableAssignmentStringFromTypeAndVariable(type, variable, context),
|
|
1048
1135
|
string = variableAssignmentString, ///
|
|
1049
|
-
assignment = new VariableAssignment(string, variable, expression);
|
|
1136
|
+
assignment = new VariableAssignment(context, string, node, variable, expression);
|
|
1050
1137
|
|
|
1051
1138
|
return assignment;
|
|
1052
1139
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export function lineIndexFromNodeAndTokens(node, tokens) {
|
|
4
|
+
let lineIndex = 0;
|
|
5
|
+
|
|
6
|
+
const firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens);
|
|
7
|
+
|
|
8
|
+
tokens.some((token, tokenIndex) => {
|
|
9
|
+
const tokenEndOfLineToken = token.isEndOfLineToken();
|
|
10
|
+
|
|
11
|
+
if (tokenEndOfLineToken) {
|
|
12
|
+
lineIndex += 1;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (tokenIndex === firstSignificantTokenIndex) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return lineIndex;
|
|
21
|
+
}
|
|
@@ -10,8 +10,13 @@ export function primitiveFromNode(node, context) {
|
|
|
10
10
|
primitiveString = primtiveStringFromNode(node, context),
|
|
11
11
|
string = primitiveString, ///
|
|
12
12
|
type = NODE_TYPE,
|
|
13
|
-
value = node
|
|
14
|
-
|
|
13
|
+
value = node; ///
|
|
14
|
+
|
|
15
|
+
node = null;
|
|
16
|
+
|
|
17
|
+
context = null;
|
|
18
|
+
|
|
19
|
+
const primitive = new Primitive(context, string, node, type, value);
|
|
15
20
|
|
|
16
21
|
return primitive;
|
|
17
22
|
}
|
|
@@ -22,7 +27,11 @@ export function primitiveFromNodes(nodes, context) {
|
|
|
22
27
|
string = primitiveString, ///
|
|
23
28
|
type = NODES_TYPE,
|
|
24
29
|
value = nodes, ///
|
|
25
|
-
|
|
30
|
+
node = null;
|
|
31
|
+
|
|
32
|
+
context = null;
|
|
33
|
+
|
|
34
|
+
const primitive = new Primitive(context, string, node, type, value);
|
|
26
35
|
|
|
27
36
|
return primitive;
|
|
28
37
|
}
|
|
@@ -33,7 +42,11 @@ export function primitiveFromBoolean(boolean, context) {
|
|
|
33
42
|
string = primitiveString, ///
|
|
34
43
|
type = BOOLEAN_TYPE,
|
|
35
44
|
value = boolean, ///
|
|
36
|
-
|
|
45
|
+
node = null;
|
|
46
|
+
|
|
47
|
+
context = null;
|
|
48
|
+
|
|
49
|
+
const primitive = new Primitive(context, string, node, type, value);
|
|
37
50
|
|
|
38
51
|
return primitive;
|
|
39
52
|
}
|
|
@@ -44,7 +57,11 @@ export function primitiveFromStringLiteral(stringLiteral, context) {
|
|
|
44
57
|
string = primitiveString, ///
|
|
45
58
|
type = STRING_TYPE,
|
|
46
59
|
value = stringLiteral, ///
|
|
47
|
-
|
|
60
|
+
node = null;
|
|
61
|
+
|
|
62
|
+
context = null;
|
|
63
|
+
|
|
64
|
+
const primitive = new Primitive(context, string, node, type, value);
|
|
48
65
|
|
|
49
66
|
return primitive;
|
|
50
67
|
}
|