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/utilities/element.js
CHANGED
|
@@ -7,8 +7,8 @@ import elements from "../elements";
|
|
|
7
7
|
import { BOOLEAN_TYPE } from "../types";
|
|
8
8
|
import { ternaryStringFromTerm,
|
|
9
9
|
variableStringFromName,
|
|
10
|
+
termStringFromProperties,
|
|
10
11
|
expressionStringFromProperties,
|
|
11
|
-
termStringFromPrimitiveAndProperties,
|
|
12
12
|
procedureDeclarationStringFromProcedure,
|
|
13
13
|
returnBlockStringFromReturnStatementNode,
|
|
14
14
|
variableAssignmentStringFromTypeAndVariable,
|
|
@@ -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,14 +257,18 @@ 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,
|
|
271
|
+
node = expressionNode, ///
|
|
218
272
|
term = termFromExpressionNode(expressionNode, context),
|
|
219
273
|
some = someFromExpressionNode(expressionNode, context),
|
|
220
274
|
every = everyFromExpressionNode(expressionNode, context),
|
|
@@ -236,20 +290,27 @@ export function expressionFromExpressionNode(expressionNode, context) {
|
|
|
236
290
|
procedureCall
|
|
237
291
|
],
|
|
238
292
|
expressionString = expressionStringFromProperties(properties, context),
|
|
239
|
-
string = expressionString
|
|
240
|
-
|
|
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);
|
|
241
298
|
|
|
242
299
|
return expression;
|
|
243
300
|
}
|
|
244
301
|
|
|
245
302
|
export function returnBlockFromReturnBlockNode(returnBlockNode, context) {
|
|
246
303
|
const { ReturnBlock } = elements,
|
|
304
|
+
node = returnBlockNode, ///
|
|
247
305
|
steps = stepsFromReturnBlockNode(returnBlockNode, context),
|
|
248
306
|
nonsensical = nonsensicalFromReturnBlockNode(returnBlockNode, context),
|
|
249
307
|
returnStatement = returnStatementFromReturnBlockNode(returnBlockNode, context),
|
|
250
308
|
returnBlockString = returnBlockStringFromReturnStatementNode(returnStatement),
|
|
251
|
-
string = returnBlockString
|
|
252
|
-
|
|
309
|
+
string = returnBlockString; ///
|
|
310
|
+
|
|
311
|
+
context = null;
|
|
312
|
+
|
|
313
|
+
const returnBlock = new ReturnBlock(context, string, node, steps, nonsensical, returnStatement);
|
|
253
314
|
|
|
254
315
|
return returnBlock;
|
|
255
316
|
}
|
|
@@ -259,8 +320,11 @@ export function procedureCallFromProcedureCallNode(procedureCallNode, context) {
|
|
|
259
320
|
node = procedureCallNode, ///
|
|
260
321
|
string = context.nodeAsString(node),
|
|
261
322
|
reference = referenceFromProcedureCallNode(procedureCallNode, context),
|
|
262
|
-
terms = termsFromProcedureCallNode(procedureCallNode, context)
|
|
263
|
-
|
|
323
|
+
terms = termsFromProcedureCallNode(procedureCallNode, context);
|
|
324
|
+
|
|
325
|
+
context = null;
|
|
326
|
+
|
|
327
|
+
const procedureCall = new ProcedureCall(context, string, node, reference, terms);
|
|
264
328
|
|
|
265
329
|
return procedureCall;
|
|
266
330
|
}
|
|
@@ -271,8 +335,11 @@ export function namedParameterFromNamedParameterNode(namedParameterNode, context
|
|
|
271
335
|
string = context.nodeAsString(node),
|
|
272
336
|
type = typeFromNamedParameterNode(namedParameterNode, context),
|
|
273
337
|
name = nameFromNamedParameterNode(namedParameterNode, context),
|
|
274
|
-
alias = aliasFromNamedParameterNode(namedParameterNode, context)
|
|
275
|
-
|
|
338
|
+
alias = aliasFromNamedParameterNode(namedParameterNode, context);
|
|
339
|
+
|
|
340
|
+
context = null;
|
|
341
|
+
|
|
342
|
+
const namedParameter = new NamedParameter(context, string, node, type, name, alias);
|
|
276
343
|
|
|
277
344
|
return namedParameter;
|
|
278
345
|
}
|
|
@@ -283,8 +350,11 @@ export function namedParametersFromNamedParametersNode(namedParametersNode, cont
|
|
|
283
350
|
string = context.nodeAsString(node),
|
|
284
351
|
namedParameterNodes = namedParametersNode.getNamedParameterNodes(),
|
|
285
352
|
namedParametersArray = namedParamtersArrayFromNamedParameterNodes(namedParameterNodes, context),
|
|
286
|
-
array = namedParametersArray
|
|
287
|
-
|
|
353
|
+
array = namedParametersArray; ///
|
|
354
|
+
|
|
355
|
+
context = null;
|
|
356
|
+
|
|
357
|
+
const namedParameters = new NamedParameters(context, string, node, array);
|
|
288
358
|
|
|
289
359
|
return namedParameters;
|
|
290
360
|
}
|
|
@@ -294,8 +364,11 @@ export function arrayAssignmentFromArrayAssignmentNode(arrayAssignmentNode, cont
|
|
|
294
364
|
node = arrayAssignmentNode, ///
|
|
295
365
|
string = context.nodeAsString(node),
|
|
296
366
|
variable = variableFromArrayAssignmentNode(arrayAssignmentNode, context),
|
|
297
|
-
parameters = parametersFromArrayAssignmentNode(arrayAssignmentNode, context)
|
|
298
|
-
|
|
367
|
+
parameters = parametersFromArrayAssignmentNode(arrayAssignmentNode, context);
|
|
368
|
+
|
|
369
|
+
context = null;
|
|
370
|
+
|
|
371
|
+
const arrayAssignment = new ArrayAssignment(context, string, node, variable, parameters);
|
|
299
372
|
|
|
300
373
|
return arrayAssignment;
|
|
301
374
|
}
|
|
@@ -304,8 +377,11 @@ export function returnStatementFromReturnStatementNode(returnStatementNode, cont
|
|
|
304
377
|
const { ReturnStatement } = elements,
|
|
305
378
|
node = returnStatementNode, ///
|
|
306
379
|
string = context.nodeAsString(node),
|
|
307
|
-
term = termFromReturnStatementNode(returnStatementNode, context)
|
|
308
|
-
|
|
380
|
+
term = termFromReturnStatementNode(returnStatementNode, context);
|
|
381
|
+
|
|
382
|
+
context = null;
|
|
383
|
+
|
|
384
|
+
const returnStatement = new ReturnStatement(context, string, node, term);
|
|
309
385
|
|
|
310
386
|
return returnStatement;
|
|
311
387
|
}
|
|
@@ -322,42 +398,57 @@ export function objectAssignmentFromObjectAssignmentNode(objectAssignmentNode, c
|
|
|
322
398
|
node = objectAssignmentNode, ///
|
|
323
399
|
string = context.nodeAsString(node),
|
|
324
400
|
variable = variableFromObjectAssignmentNode(objectAssignmentNode, context),
|
|
325
|
-
namedParameters = namedParametersFromObjectAssignmentNode(objectAssignmentNode, context)
|
|
326
|
-
|
|
401
|
+
namedParameters = namedParametersFromObjectAssignmentNode(objectAssignmentNode, context);
|
|
402
|
+
|
|
403
|
+
context = null;
|
|
404
|
+
|
|
405
|
+
const objectAssignment = new ObjectAssigment(context, string, node, variable, namedParameters);
|
|
327
406
|
|
|
328
407
|
return objectAssignment;
|
|
329
408
|
}
|
|
330
409
|
|
|
331
410
|
export function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
332
411
|
const { AnonymousProcedure } = elements,
|
|
412
|
+
node = anonymousProcedureNode, ///
|
|
333
413
|
type = typeFromProcedureAnonymousProcedureNode(anonymousProcedureNode, context),
|
|
334
414
|
parameters = parametersFromAnonymousProcedureNode(anonymousProcedureNode, context),
|
|
335
415
|
returnBlock = returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, context),
|
|
336
416
|
nonymousProcedureString = anonymousProcedureStringFromTypeParametersAndReturnBlock(type, parameters, returnBlock),
|
|
337
|
-
string = nonymousProcedureString
|
|
338
|
-
|
|
417
|
+
string = nonymousProcedureString; ///
|
|
418
|
+
|
|
419
|
+
context = null;
|
|
420
|
+
|
|
421
|
+
const anonymousProcedure = new AnonymousProcedure(context, string, node, type, parameters, returnBlock);
|
|
339
422
|
|
|
340
423
|
return anonymousProcedure;
|
|
341
424
|
}
|
|
342
425
|
|
|
343
426
|
export function variableAssignmentsFromVariableAssignmentsNode(variableAssignmentsNode, context) {
|
|
344
427
|
const { VariableAssignments } = elements,
|
|
428
|
+
node = variableAssignmentsNode, ///
|
|
345
429
|
type = typeFromVariableAssignmentsNode(variableAssignmentsNode, context),
|
|
346
430
|
variableAssignmentsArray = variableAssignmentsArrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context),
|
|
347
431
|
variableAssignmentString = variableAssignmentStringFromTypeAndVariableAssignmentsArray(type, variableAssignmentsArray),
|
|
348
432
|
array = variableAssignmentsArray, ///
|
|
349
|
-
string = variableAssignmentString
|
|
350
|
-
|
|
433
|
+
string = variableAssignmentString; ///
|
|
434
|
+
|
|
435
|
+
context = null;
|
|
436
|
+
|
|
437
|
+
const variableAssignments = new VariableAssignments(context, string, node, array);
|
|
351
438
|
|
|
352
439
|
return variableAssignments;
|
|
353
440
|
}
|
|
354
441
|
|
|
355
442
|
export function procedureDeclarationFromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
356
443
|
const { ProcedureDeclaration } = elements,
|
|
444
|
+
node = procedureDeclarationNode, ///
|
|
357
445
|
procedure = procedureFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
358
446
|
procedureDeclarationString = procedureDeclarationStringFromProcedure(procedure),
|
|
359
|
-
string = procedureDeclarationString
|
|
360
|
-
|
|
447
|
+
string = procedureDeclarationString; ///
|
|
448
|
+
|
|
449
|
+
context = null;
|
|
450
|
+
|
|
451
|
+
const procedureDeclaration = new ProcedureDeclaration(context, string, node, procedure);
|
|
361
452
|
|
|
362
453
|
return procedureDeclaration;
|
|
363
454
|
}
|
|
@@ -816,7 +907,7 @@ export function negatedTermFromNegatedTermNode(negatedTermNode, context) {
|
|
|
816
907
|
termNode = negatedTermNode.getTermNode(),
|
|
817
908
|
type = typeFromNegatedTermNode(termNode, context),
|
|
818
909
|
term = termFromNegatedTermNode(negatedTermNode, context),
|
|
819
|
-
negatedTerm = new NegatedTerm(string, type, term);
|
|
910
|
+
negatedTerm = new NegatedTerm(context, string, node, type, term);
|
|
820
911
|
|
|
821
912
|
return negatedTerm;
|
|
822
913
|
}
|
|
@@ -829,18 +920,19 @@ export function logicalTermFromLogicalTermNode(logicalTermNode, context) {
|
|
|
829
920
|
disjunction = disjunctionFromLogicalTermNode(logicalTermNode, context),
|
|
830
921
|
leftTerm = leftTermFromLogicalTermNode(logicalTermNode, context),
|
|
831
922
|
rightTerm = rightTermFromLogicalTermNode(logicalTermNode, context),
|
|
832
|
-
logicalTerm = new LogicalTerm(string, type, disjunction, leftTerm, rightTerm);
|
|
923
|
+
logicalTerm = new LogicalTerm(context, string, node, type, disjunction, leftTerm, rightTerm);
|
|
833
924
|
|
|
834
925
|
return logicalTerm;
|
|
835
926
|
}
|
|
836
927
|
|
|
837
928
|
export function variableFromTypeAndVariableNode(type, variableNode, context) {
|
|
838
929
|
const { Variable } = elements,
|
|
930
|
+
node = variableNode, ///
|
|
839
931
|
name = nameFromVariableNode(variableNode),
|
|
840
932
|
expression = expressionFromTypeAndVariableNode(type, variableNode, context),
|
|
841
933
|
variableString = variableStringFromName(name),
|
|
842
934
|
string = variableString, ///
|
|
843
|
-
variable = new Variable(string, type, name, expression);
|
|
935
|
+
variable = new Variable(context, string, node, type, name, expression);
|
|
844
936
|
|
|
845
937
|
return variable;
|
|
846
938
|
}
|
|
@@ -955,7 +1047,7 @@ export function bracketedTermFromBracketedTermNode(bracketedTermNode, context) {
|
|
|
955
1047
|
node = bracketedTermNode, ///
|
|
956
1048
|
string = context.nodeAsString(node), ///
|
|
957
1049
|
term = termFromBracketedTermNode(bracketedTermNode, context),
|
|
958
|
-
bracketedTerm = new BracketedTerm(string, term);
|
|
1050
|
+
bracketedTerm = new BracketedTerm(context, string, node, term);
|
|
959
1051
|
|
|
960
1052
|
return bracketedTerm;
|
|
961
1053
|
}
|
|
@@ -981,7 +1073,7 @@ export function comparisonTermFromComparisonTermNode(comparisonTermNode, context
|
|
|
981
1073
|
negated = negatedFromComparisonTermNode(comparisonTermNode, context),
|
|
982
1074
|
leftTerm = leftTermFromCompzrisonTermNode(comparisonTermNode, context),
|
|
983
1075
|
rightTerm = rightTermFromCompzrisonTermNode(comparisonTermNode, context),
|
|
984
|
-
comparisonTerm = new ComparisonTerm(string, negated, leftTerm, rightTerm);
|
|
1076
|
+
comparisonTerm = new ComparisonTerm(context, string, node, negated, leftTerm, rightTerm);
|
|
985
1077
|
|
|
986
1078
|
return comparisonTerm;
|
|
987
1079
|
}
|
|
@@ -995,13 +1087,14 @@ export function returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, co
|
|
|
995
1087
|
|
|
996
1088
|
export function procedureFromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
997
1089
|
const { Procedure } = elements,
|
|
1090
|
+
node = procedureDeclarationNode, ///
|
|
998
1091
|
type = typeFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
999
1092
|
label = labelFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1000
1093
|
parameters = parametersFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1001
1094
|
returnBlock = returnBlockFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1002
1095
|
procedureString = procedureStringFromTypeLabelParametersAndReturnBlock(type, label, parameters, returnBlock),
|
|
1003
1096
|
string = procedureString, ///
|
|
1004
|
-
procedure = new Procedure(string, type, label, parameters, returnBlock);
|
|
1097
|
+
procedure = new Procedure(context, string, node, type, label, parameters, returnBlock);
|
|
1005
1098
|
|
|
1006
1099
|
return procedure;
|
|
1007
1100
|
}
|
|
@@ -1035,11 +1128,12 @@ export function variableFromTypeAndVariableAssignmentNode(type, variableAssignme
|
|
|
1035
1128
|
|
|
1036
1129
|
export function variableAssignmentFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context) {
|
|
1037
1130
|
const { VariableAssignment } = elements,
|
|
1131
|
+
node = variableAssignmentNode, ///
|
|
1038
1132
|
variable = variableFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context),
|
|
1039
1133
|
expression = expressionFromVariableAssignmentNode(variableAssignmentNode, context),
|
|
1040
1134
|
variableAssignmentString = variableAssignmentStringFromTypeAndVariable(type, variable, context),
|
|
1041
1135
|
string = variableAssignmentString, ///
|
|
1042
|
-
assignment = new VariableAssignment(string, variable, expression);
|
|
1136
|
+
assignment = new VariableAssignment(context, string, node, variable, expression);
|
|
1043
1137
|
|
|
1044
1138
|
return assignment;
|
|
1045
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
|
+
}
|
package/src/utilities/node.js
CHANGED
|
@@ -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
|
}
|
package/src/utilities/string.js
CHANGED
|
@@ -33,6 +33,20 @@ export function primtiveStringFromNodes(nodes, context) {
|
|
|
33
33
|
return primtiveString;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
export function termStringFromProperties(properties) {
|
|
37
|
+
let termString;
|
|
38
|
+
|
|
39
|
+
properties.forEach((property) => {
|
|
40
|
+
if (property !== null) {
|
|
41
|
+
const propertyString = property.getString();
|
|
42
|
+
|
|
43
|
+
termString = propertyString; ///
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return termString;
|
|
48
|
+
}
|
|
49
|
+
|
|
36
50
|
export function primtiveStringFromBoolean(boolean) {
|
|
37
51
|
const expresssionString = `${boolean}`;
|
|
38
52
|
|
|
@@ -74,26 +88,12 @@ export function primtiveStringFromStringLiteral(stringLiteral) {
|
|
|
74
88
|
return primtiveString;
|
|
75
89
|
}
|
|
76
90
|
|
|
77
|
-
export function
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
///
|
|
82
|
-
} else if (primitive !== null) {
|
|
83
|
-
const primitiveString = primitive.getString();
|
|
84
|
-
|
|
85
|
-
termString = primitiveString; ///
|
|
86
|
-
} else {
|
|
87
|
-
properties.forEach((property) => {
|
|
88
|
-
if (property !== null) {
|
|
89
|
-
const propertyString = property.getString();
|
|
90
|
-
|
|
91
|
-
termString = propertyString; ///
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
91
|
+
export function nodePropertyStringFromNameAndType(name, type) {
|
|
92
|
+
const typeString = type, ///
|
|
93
|
+
nameString = name, ///
|
|
94
|
+
nodePropertyString = `${typeString} ${nameString}`;
|
|
95
95
|
|
|
96
|
-
return
|
|
96
|
+
return nodePropertyString;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
export function procedureDeclarationStringFromProcedure(procedure) {
|
|
@@ -116,6 +116,20 @@ export function returnBlockStringFromReturnStatementNode(returnStatement) {
|
|
|
116
116
|
return returnBlockString;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
export function nodePropertiesStringFromNodePropertiesArray(nodePropertiesArray) {
|
|
120
|
+
const nodePropertiesString = nodePropertiesArray.reduce((nodePropertiesString, nodeProperty) => {
|
|
121
|
+
const nodePropertyString = nodeProperty.getString();
|
|
122
|
+
|
|
123
|
+
nodePropertiesString = (nodePropertiesString === null) ?
|
|
124
|
+
nodePropertyString :
|
|
125
|
+
`${nodePropertiesString}, ${nodePropertyString}`;
|
|
126
|
+
|
|
127
|
+
return nodePropertiesString;
|
|
128
|
+
}, null);
|
|
129
|
+
|
|
130
|
+
return nodePropertiesString;
|
|
131
|
+
}
|
|
132
|
+
|
|
119
133
|
export function variableAssignmentStringFromTypeAndVariable(type, variable) {
|
|
120
134
|
const variableString = variable.getString(),
|
|
121
135
|
variableAssignmentString = `${type} ${variableString} = ... ;`;
|