occam-furtle 2.0.86 → 2.0.89
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/README.md +43 -12
- package/lib/constants.js +5 -1
- package/lib/context/block.js +8 -8
- package/lib/dom/assignment/array.js +10 -6
- package/lib/dom/assignment/object.js +10 -6
- package/lib/dom/assignment/variable.js +3 -2
- package/lib/dom/assignments/variable.js +10 -6
- package/lib/dom/block/return.js +21 -5
- package/lib/dom/comparison.js +2 -14
- package/lib/dom/declaration/procedure.js +6 -2
- package/lib/dom/error.js +48 -3
- package/lib/dom/every.js +7 -3
- package/lib/dom/label.js +52 -7
- package/lib/dom/parameter/named.js +48 -3
- package/lib/dom/parameter.js +48 -4
- package/lib/dom/parameters/named.js +13 -9
- package/lib/dom/parameters.js +17 -27
- package/lib/dom/procedure.js +10 -6
- package/lib/dom/procedureCall.js +10 -6
- package/lib/dom/query/node.js +10 -6
- package/lib/dom/query/nodes.js +10 -6
- package/lib/dom/reduce.js +8 -4
- package/lib/dom/reference.js +55 -10
- package/lib/dom/some.js +7 -3
- package/lib/dom/statement/return.js +7 -3
- package/lib/dom/step.js +6 -2
- package/lib/dom/ternary.js +10 -6
- package/lib/dom/value/bitwise.js +10 -6
- package/lib/dom/value/bracketed.js +7 -3
- package/lib/dom/value/negated.js +10 -6
- package/lib/dom/value.js +35 -39
- package/lib/dom/values.js +5 -19
- package/lib/dom/variable.js +3 -3
- package/package.json +1 -1
- package/src/constants.js +1 -0
- package/src/context/block.js +8 -8
- package/src/dom/assignment/array.js +15 -8
- package/src/dom/assignment/object.js +15 -8
- package/src/dom/assignment/variable.js +2 -1
- package/src/dom/assignments/variable.js +16 -8
- package/src/dom/block/return.js +25 -4
- package/src/dom/comparison.js +1 -16
- package/src/dom/declaration/procedure.js +10 -4
- package/src/dom/error.js +12 -3
- package/src/dom/every.js +12 -6
- package/src/dom/label.js +20 -10
- package/src/dom/parameter/named.js +14 -6
- package/src/dom/parameter.js +12 -5
- package/src/dom/parameters/named.js +23 -16
- package/src/dom/parameters.js +32 -47
- package/src/dom/procedure.js +19 -15
- package/src/dom/procedureCall.js +15 -9
- package/src/dom/query/node.js +19 -12
- package/src/dom/query/nodes.js +19 -12
- package/src/dom/reduce.js +17 -14
- package/src/dom/reference.js +21 -15
- package/src/dom/some.js +12 -6
- package/src/dom/statement/return.js +13 -6
- package/src/dom/step.js +12 -6
- package/src/dom/ternary.js +21 -14
- package/src/dom/value/bitwise.js +19 -12
- package/src/dom/value/bracketed.js +12 -6
- package/src/dom/value/negated.js +16 -9
- package/src/dom/value.js +42 -47
- package/src/dom/values.js +5 -19
- package/src/dom/variable.js +6 -4
package/src/constants.js
CHANGED
package/src/context/block.js
CHANGED
|
@@ -16,12 +16,12 @@ export default class BlockContext {
|
|
|
16
16
|
return this.context;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
getVariables(
|
|
19
|
+
getVariables(nested = true) {
|
|
20
20
|
const variables = [];
|
|
21
21
|
|
|
22
22
|
push(variables, this.variables);
|
|
23
23
|
|
|
24
|
-
if (
|
|
24
|
+
if (nested) {
|
|
25
25
|
const contextVariables = this.context.getVariables();
|
|
26
26
|
|
|
27
27
|
push(variables, contextVariables);
|
|
@@ -36,8 +36,8 @@ export default class BlockContext {
|
|
|
36
36
|
|
|
37
37
|
isProcedurePresentByReference(reference) { return this.context.isProcedurePresentByReference(reference); }
|
|
38
38
|
|
|
39
|
-
findVariableByVariableName(variableName,
|
|
40
|
-
const variables = this.getVariables(
|
|
39
|
+
findVariableByVariableName(variableName, nested = true) {
|
|
40
|
+
const variables = this.getVariables(nested),
|
|
41
41
|
variable = variables.find((variable) => {
|
|
42
42
|
const variableNameMatches = variable.matchVariableName(variableName);
|
|
43
43
|
|
|
@@ -49,18 +49,18 @@ export default class BlockContext {
|
|
|
49
49
|
return variable;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
isVariablePresentByVariableName(variableName,
|
|
53
|
-
const variable = this.findVariableByVariableName(variableName,
|
|
52
|
+
isVariablePresentByVariableName(variableName, nested = true) {
|
|
53
|
+
const variable = this.findVariableByVariableName(variableName, nested),
|
|
54
54
|
variablePresent = (variable !== null);
|
|
55
55
|
|
|
56
56
|
return variablePresent;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
addVariable(variable) {
|
|
60
|
-
const
|
|
60
|
+
const nested = false,
|
|
61
61
|
variableName = variable.getName(),
|
|
62
62
|
variableString = variable.getString(),
|
|
63
|
-
variablePresent = this.isVariablePresentByVariableName(variableName,
|
|
63
|
+
variablePresent = this.isVariablePresentByVariableName(variableName, nested);
|
|
64
64
|
|
|
65
65
|
if (variablePresent) {
|
|
66
66
|
const message = `The '${variableString}' variable is already present.'`,
|
|
@@ -7,7 +7,7 @@ import { nodeQuery } from "../../utilities/query";
|
|
|
7
7
|
import { domAssigned } from "../../dom";
|
|
8
8
|
import { NODE_TYPE, NODES_TYPE } from "../../types";
|
|
9
9
|
|
|
10
|
-
const
|
|
10
|
+
const stepArrayAssignmentNodeQuery = nodeQuery("/step/arrayAssignment");
|
|
11
11
|
|
|
12
12
|
export default domAssigned(class ArrayAssigment {
|
|
13
13
|
constructor(string, variable, parameters) {
|
|
@@ -98,21 +98,28 @@ export default domAssigned(class ArrayAssigment {
|
|
|
98
98
|
static fromStepNode(stepNode, context) {
|
|
99
99
|
let arrayAssignment = null;
|
|
100
100
|
|
|
101
|
-
const
|
|
101
|
+
const stepArrayAssignmentNode = stepArrayAssignmentNodeQuery(stepNode);
|
|
102
102
|
|
|
103
|
-
if (
|
|
104
|
-
const
|
|
105
|
-
parameters = Parameters.fromArrayAssignmentNode(arrayAssignmentNode, context),
|
|
106
|
-
variable = Variable.fromArrayAssignmentNode(arrayAssignmentNode, context),
|
|
107
|
-
string = stringFromVariableAndParameters(variable, parameters, context);
|
|
103
|
+
if (stepArrayAssignmentNode !== null) {
|
|
104
|
+
const arrayAssignmentNode = stepArrayAssignmentNode; ///
|
|
108
105
|
|
|
109
|
-
arrayAssignment =
|
|
106
|
+
arrayAssignment = arrayAssignmentFromArrayAssignmentNode(arrayAssignmentNode, context);
|
|
110
107
|
}
|
|
111
108
|
|
|
112
109
|
return arrayAssignment;
|
|
113
110
|
}
|
|
114
111
|
});
|
|
115
112
|
|
|
113
|
+
function arrayAssignmentFromArrayAssignmentNode(arrayAssignmentNode, context) {
|
|
114
|
+
const { Variable, Parameters, ArrayAssignment } = dom,
|
|
115
|
+
parameters = Parameters.fromArrayAssignmentNode(arrayAssignmentNode, context),
|
|
116
|
+
variable = Variable.fromArrayAssignmentNode(arrayAssignmentNode, context),
|
|
117
|
+
string = stringFromVariableAndParameters(variable, parameters, context),
|
|
118
|
+
arrayAssignment = new ArrayAssignment(string, variable, parameters);
|
|
119
|
+
|
|
120
|
+
return arrayAssignment;
|
|
121
|
+
}
|
|
122
|
+
|
|
116
123
|
function stringFromVariableAndParameters(variable, parameters, context) {
|
|
117
124
|
const variableString = variable.getString(),
|
|
118
125
|
parametersString = parameters.getString(),
|
|
@@ -9,7 +9,7 @@ import { domAssigned } from "../../dom";
|
|
|
9
9
|
import { NODE_TYPE, NODES_TYPE, STRING_TYPE, BOOLEAN_TYPE } from "../../types";
|
|
10
10
|
import { CONTENT_PARAMETER_NAME, TERMINAL_PARAMETER_NAME, CHILD_NODES_PARAMETER_NAME } from "../../parameterNames";
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const stepObjectAssignmentNodeQuery = nodeQuery("/step/objectAssignment");
|
|
13
13
|
|
|
14
14
|
export default domAssigned(class ObjectAssigment {
|
|
15
15
|
constructor(string, variable, namedParameters) {
|
|
@@ -183,21 +183,28 @@ export default domAssigned(class ObjectAssigment {
|
|
|
183
183
|
static fromStepNode(stepNode, context) {
|
|
184
184
|
let objectAssignment = null;
|
|
185
185
|
|
|
186
|
-
const
|
|
186
|
+
const stepObjectAssignmentNode = stepObjectAssignmentNodeQuery(stepNode);
|
|
187
187
|
|
|
188
|
-
if (
|
|
189
|
-
const
|
|
190
|
-
namedParameters = NamedParameters.fromObjectAssignmentNode(objectAssignmentNode, context),
|
|
191
|
-
variable = Variable.fromObjectAssignmentNode(objectAssignmentNode, context),
|
|
192
|
-
string = stringFromVariableAndNamesParameters(variable, namedParameters, context);
|
|
188
|
+
if (stepObjectAssignmentNode !== null) {
|
|
189
|
+
const objectAssignmentNode = stepObjectAssignmentNode; ///
|
|
193
190
|
|
|
194
|
-
objectAssignment =
|
|
191
|
+
objectAssignment = objectAssignmentFromObjectAssignmentNode(objectAssignmentNode, context);
|
|
195
192
|
}
|
|
196
193
|
|
|
197
194
|
return objectAssignment;
|
|
198
195
|
}
|
|
199
196
|
});
|
|
200
197
|
|
|
198
|
+
function objectAssignmentFromObjectAssignmentNode(objectAssignmentNode, context) {
|
|
199
|
+
const { Variable, NamedParameters, ObjectAssigment } = dom,
|
|
200
|
+
namedParameters = NamedParameters.fromObjectAssignmentNode(objectAssignmentNode, context),
|
|
201
|
+
variable = Variable.fromObjectAssignmentNode(objectAssignmentNode, context),
|
|
202
|
+
string = stringFromVariableAndNamesParameters(variable, namedParameters, context),
|
|
203
|
+
objectAssignment = new ObjectAssigment(string, variable, namedParameters);
|
|
204
|
+
|
|
205
|
+
return objectAssignment;
|
|
206
|
+
}
|
|
207
|
+
|
|
201
208
|
function stringFromVariableAndNamesParameters(variable, namedParameters, context) {
|
|
202
209
|
const namedParametersString = namedParameters.getString(),
|
|
203
210
|
variableString = variable.getString(),
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import dom from "../../dom";
|
|
4
4
|
|
|
5
|
+
import { nodeQuery } from "../../utilities/query";
|
|
5
6
|
import { domAssigned } from "../../dom";
|
|
6
7
|
|
|
7
8
|
export default domAssigned(class VariableAssignment {
|
|
@@ -60,7 +61,7 @@ function variableAssignmentFromTypeAndVariableAssignmentNode(type, variableAssig
|
|
|
60
61
|
|
|
61
62
|
function stringFromValueAndVariable(value, variable, context) {
|
|
62
63
|
const variableString = variable.getString(),
|
|
63
|
-
valueString = value.
|
|
64
|
+
valueString = value.asString(context),
|
|
64
65
|
string = `${variableString} = ${valueString};`;
|
|
65
66
|
|
|
66
67
|
return string;
|
|
@@ -6,8 +6,8 @@ import { domAssigned } from "../../dom";
|
|
|
6
6
|
import { nodeQuery, nodesQuery } from "../../utilities/query";
|
|
7
7
|
|
|
8
8
|
const typeTerminalNodeQuery = nodeQuery("/variableAssignments/@type"),
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
variableAssignmentNodesQuery = nodesQuery("/variableAssignments/variableAssignment"),
|
|
10
|
+
stepVariableAssignmentsNodeQuery = nodeQuery("/step/variableAssignments");
|
|
11
11
|
|
|
12
12
|
export default domAssigned(class VariableAssignments {
|
|
13
13
|
constructor(string, array) {
|
|
@@ -40,20 +40,28 @@ export default domAssigned(class VariableAssignments {
|
|
|
40
40
|
static fromStepNode(stepNode, context) {
|
|
41
41
|
let variableAssignments = null;
|
|
42
42
|
|
|
43
|
-
const
|
|
43
|
+
const stepVariableAssignmentsNode = stepVariableAssignmentsNodeQuery(stepNode);
|
|
44
44
|
|
|
45
|
-
if (
|
|
46
|
-
const
|
|
47
|
-
array = arrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context),
|
|
48
|
-
string = stringFromArray(array, context);
|
|
45
|
+
if (stepVariableAssignmentsNode !== null) {
|
|
46
|
+
const variableAssignmentsNode = stepVariableAssignmentsNode; ///
|
|
49
47
|
|
|
50
|
-
variableAssignments =
|
|
48
|
+
variableAssignments = variableAssignmentsFromVariableAssignmentsNode(variableAssignmentsNode, context);
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
return variableAssignments;
|
|
54
52
|
}
|
|
55
53
|
});
|
|
56
54
|
|
|
55
|
+
function variableAssignmentsFromVariableAssignmentsNode(variableAssignmentsNode, context) {
|
|
56
|
+
const { VariableAssignments } = dom,
|
|
57
|
+
type = typeFromVariableAssignmentsNode(variableAssignmentsNode, context),
|
|
58
|
+
array = arrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context),
|
|
59
|
+
string = stringFromArray(array, context),
|
|
60
|
+
variableAssignments = new VariableAssignments(string, array);
|
|
61
|
+
|
|
62
|
+
return variableAssignments;
|
|
63
|
+
}
|
|
64
|
+
|
|
57
65
|
function stringFromArray(array, context) {
|
|
58
66
|
const variableAssignmentsString = array.reduce((variableAssignmentsString, variableAssignment) => {
|
|
59
67
|
const variableAssignmentString = variableAssignment.getString();
|
package/src/dom/block/return.js
CHANGED
|
@@ -9,6 +9,7 @@ import { nodeQuery, nodesQuery } from "../../utilities/query";
|
|
|
9
9
|
|
|
10
10
|
const stepNodesQuery = nodesQuery("/returnBlock/step"),
|
|
11
11
|
nonsenseNodesQuery = nodesQuery("/returnBlock/nonsense"),
|
|
12
|
+
valueReturnBlockNodeQuery = nodeQuery("/value/returnBlock"),
|
|
12
13
|
anonymousProcedureReturnBlockNodeQuery = nodeQuery("/anonymousProcedure/returnBlock"),
|
|
13
14
|
procedureDeclarationReturnBlockNodeQuery = nodeQuery("/procedureDeclaration/returnBlock");
|
|
14
15
|
|
|
@@ -37,6 +38,12 @@ export default domAssigned(class ReturnBlock {
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
evaluate(variables, context) {
|
|
41
|
+
if (context === undefined) {
|
|
42
|
+
context = variables; ///
|
|
43
|
+
|
|
44
|
+
variables = [];
|
|
45
|
+
}
|
|
46
|
+
|
|
40
47
|
if (this.nonsensical) {
|
|
41
48
|
const message = `The return block is nonsensical.`,
|
|
42
49
|
exception = Exception.fromMessage(message);
|
|
@@ -59,10 +66,16 @@ export default domAssigned(class ReturnBlock {
|
|
|
59
66
|
|
|
60
67
|
static name = "ReturnBlock";
|
|
61
68
|
|
|
62
|
-
static
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
static fromValueNode(valueNode, context) {
|
|
70
|
+
let returnBlock = null;
|
|
71
|
+
|
|
72
|
+
const valueReturnBlockNode = valueReturnBlockNodeQuery(valueNode);
|
|
73
|
+
|
|
74
|
+
if (valueReturnBlockNode !== null) {
|
|
75
|
+
const returnBlockNode = valueReturnBlockNode; ///
|
|
76
|
+
|
|
77
|
+
returnBlock = returnBlockFromReturnBlockNode(returnBlockNode, context);
|
|
78
|
+
}
|
|
66
79
|
|
|
67
80
|
return returnBlock;
|
|
68
81
|
}
|
|
@@ -74,6 +87,14 @@ export default domAssigned(class ReturnBlock {
|
|
|
74
87
|
|
|
75
88
|
return returnBlock;
|
|
76
89
|
}
|
|
90
|
+
|
|
91
|
+
static fromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
92
|
+
const procedureDeclarationReturnBlockNode = procedureDeclarationReturnBlockNodeQuery(procedureDeclarationNode),
|
|
93
|
+
returnBlockNode = procedureDeclarationReturnBlockNode, ///
|
|
94
|
+
returnBlock = returnBlockFromReturnBlockNode(returnBlockNode, context);
|
|
95
|
+
|
|
96
|
+
return returnBlock;
|
|
97
|
+
}
|
|
77
98
|
});
|
|
78
99
|
|
|
79
100
|
function stringFromReturnStatement(returnStatement, context) {
|
package/src/dom/comparison.js
CHANGED
|
@@ -10,8 +10,7 @@ import { EQUAL_TO, NOT_EQUAL_TO } from "../constants";
|
|
|
10
10
|
const terminalNodeQuery = nodeQuery("/comparison/@*"),
|
|
11
11
|
leftValueNodeQuery = nodeQuery("/comparison/value[0]"),
|
|
12
12
|
rightValueNodeQuery = nodeQuery("/comparison/value[1]"),
|
|
13
|
-
valueComparisonNodeQuery = nodeQuery("/value/comparison")
|
|
14
|
-
conditionComparisonNodeQuery = nodeQuery("/condition/comparison");
|
|
13
|
+
valueComparisonNodeQuery = nodeQuery("/value/comparison");
|
|
15
14
|
|
|
16
15
|
export default domAssigned(class Comparison {
|
|
17
16
|
constructor(string, negated, leftValue, rightValue) {
|
|
@@ -90,20 +89,6 @@ export default domAssigned(class Comparison {
|
|
|
90
89
|
|
|
91
90
|
return comparison;
|
|
92
91
|
}
|
|
93
|
-
|
|
94
|
-
static fromConditionNode(conditionNode, context) {
|
|
95
|
-
let comparison = null;
|
|
96
|
-
|
|
97
|
-
const conditionComparisonNode = conditionComparisonNodeQuery(conditionNode);
|
|
98
|
-
|
|
99
|
-
if (conditionComparisonNode !== null) {
|
|
100
|
-
const comparisonNode = conditionComparisonNode; ///
|
|
101
|
-
|
|
102
|
-
comparison = comparisonFromComparisonNode(comparisonNode, context);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return comparison;
|
|
106
|
-
}
|
|
107
92
|
});
|
|
108
93
|
|
|
109
94
|
function negatedFromComparisonNode(comparisonNode) {
|
|
@@ -21,15 +21,21 @@ export default domAssigned(class ProcedureDeclaration {
|
|
|
21
21
|
static name = "ProcedureDeclaration";
|
|
22
22
|
|
|
23
23
|
static fromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
24
|
-
const
|
|
25
|
-
procedure = Procedure.fromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
26
|
-
string = stringFromProcedure(procedure, context),
|
|
27
|
-
procedureDeclaration = new ProcedureDeclaration(string, procedure);
|
|
24
|
+
const procedureDeclaration = procedureFromProcedureDeclarationNode(procedureDeclarationNode, context);
|
|
28
25
|
|
|
29
26
|
return procedureDeclaration;
|
|
30
27
|
}
|
|
31
28
|
});
|
|
32
29
|
|
|
30
|
+
function procedureFromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
31
|
+
const { Procedure, ProcedureDeclaration } = dom,
|
|
32
|
+
procedure = Procedure.fromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
33
|
+
string = stringFromProcedure(procedure, context),
|
|
34
|
+
procedureDeclaration = new ProcedureDeclaration(string, procedure);
|
|
35
|
+
|
|
36
|
+
return procedureDeclaration;
|
|
37
|
+
}
|
|
38
|
+
|
|
33
39
|
function stringFromProcedure(procedure, context) {
|
|
34
40
|
const procedureString = procedure.getString(),
|
|
35
41
|
string = `${procedureString};`;
|
package/src/dom/error.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import dom from "../dom";
|
|
4
|
+
|
|
3
5
|
import { domAssigned } from "../dom";
|
|
4
6
|
|
|
5
7
|
export default domAssigned(class Error {
|
|
@@ -14,10 +16,17 @@ export default domAssigned(class Error {
|
|
|
14
16
|
static name = "Error";
|
|
15
17
|
|
|
16
18
|
static fromErrorNode(errorNode, context) {
|
|
17
|
-
const
|
|
18
|
-
string = context.nodeAsString(node),
|
|
19
|
-
error = new Error(string);
|
|
19
|
+
const error = errorFromErrorNode(errorNode, context);
|
|
20
20
|
|
|
21
21
|
return error;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
|
|
25
|
+
function errorFromErrorNode(errorNode, context) {
|
|
26
|
+
const {Error} = dom,
|
|
27
|
+
node = errorNode, ///
|
|
28
|
+
string = context.nodeAsString(node),
|
|
29
|
+
error = new Error(string);
|
|
30
|
+
|
|
31
|
+
return error;
|
|
32
|
+
}
|
package/src/dom/every.js
CHANGED
|
@@ -91,19 +91,25 @@ export default domAssigned(class Every {
|
|
|
91
91
|
const valueEveryNode = valueEveryNodeQuery(valueNode);
|
|
92
92
|
|
|
93
93
|
if (valueEveryNode !== null) {
|
|
94
|
-
const
|
|
95
|
-
everyNode = valueEveryNode, ///
|
|
96
|
-
anonymousProcedure = AnonymousProcedure.fromEveryNode(everyNode, context),
|
|
97
|
-
variable = Variable.fromEveryNode(everyNode, context),
|
|
98
|
-
string = stringFromVariableAndAnonymousProcedure(variable, anonymousProcedure, context);
|
|
94
|
+
const everyNode = valueEveryNode; ///
|
|
99
95
|
|
|
100
|
-
every =
|
|
96
|
+
every = everyFromEveryNode(everyNode, context);
|
|
101
97
|
}
|
|
102
98
|
|
|
103
99
|
return every;
|
|
104
100
|
}
|
|
105
101
|
});
|
|
106
102
|
|
|
103
|
+
function everyFromEveryNode(everyNode, context) {
|
|
104
|
+
const { Every, Variable, AnonymousProcedure } = dom,
|
|
105
|
+
anonymousProcedure = AnonymousProcedure.fromEveryNode(everyNode, context),
|
|
106
|
+
variable = Variable.fromEveryNode(everyNode, context),
|
|
107
|
+
string = stringFromVariableAndAnonymousProcedure(variable, anonymousProcedure, context),
|
|
108
|
+
every = new Every(string, variable, anonymousProcedure);
|
|
109
|
+
|
|
110
|
+
return every;
|
|
111
|
+
}
|
|
112
|
+
|
|
107
113
|
function stringFromVariableAndAnonymousProcedure(variable, anonymousProcedure, context) {
|
|
108
114
|
const variableString = variable.getString(),
|
|
109
115
|
anonymousProcedureString = anonymousProcedure.getString(),
|
package/src/dom/label.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import dom from "../dom";
|
|
4
|
+
|
|
3
5
|
import { nodeQuery } from "../utilities/query";
|
|
4
6
|
import { domAssigned } from "../dom";
|
|
5
7
|
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
+
const nameTerminalNodeQuery = nodeQuery("/label/@name"),
|
|
9
|
+
procedureDeclarationLabelNodeQuery = nodeQuery("/procedureDeclaration/label");
|
|
8
10
|
|
|
9
11
|
export default domAssigned(class Label {
|
|
10
12
|
constructor(string, name) {
|
|
@@ -29,20 +31,21 @@ export default domAssigned(class Label {
|
|
|
29
31
|
static name = "Label";
|
|
30
32
|
|
|
31
33
|
static fromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
label = new Label(string, name);
|
|
34
|
+
const procedureDeclarationLabelNode = procedureDeclarationLabelNodeQuery(procedureDeclarationNode),
|
|
35
|
+
labelNode = procedureDeclarationLabelNode, ///
|
|
36
|
+
label = labelFromLabelNode(labelNode, context);
|
|
36
37
|
|
|
37
38
|
return label;
|
|
38
39
|
}
|
|
39
40
|
});
|
|
40
41
|
|
|
41
|
-
function
|
|
42
|
-
const
|
|
43
|
-
|
|
42
|
+
function labelFromLabelNode(labelNode, context) {
|
|
43
|
+
const { Label } = dom,
|
|
44
|
+
name = nameFromLabelNode(labelNode, context),
|
|
45
|
+
string = stringFromName(name, context),
|
|
46
|
+
label = new Label(string, name);
|
|
44
47
|
|
|
45
|
-
return
|
|
48
|
+
return label;
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
function nameFromLabelNode(labelNode, context) {
|
|
@@ -53,3 +56,10 @@ function nameFromLabelNode(labelNode, context) {
|
|
|
53
56
|
return name;
|
|
54
57
|
}
|
|
55
58
|
|
|
59
|
+
function stringFromName(name, context) {
|
|
60
|
+
const nameString = name, ///
|
|
61
|
+
string = nameString; ///
|
|
62
|
+
|
|
63
|
+
return string;
|
|
64
|
+
}
|
|
65
|
+
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import dom from "../../dom";
|
|
3
4
|
import Exception from "../../exception";
|
|
4
5
|
|
|
6
|
+
import { nodeQuery } from "../../utilities/query";
|
|
5
7
|
import { domAssigned } from "../../dom";
|
|
6
|
-
import { nodeQuery, nodesQuery } from "../../utilities/query";
|
|
7
8
|
|
|
8
9
|
const typeTerminalNodeQuery = nodeQuery("/namedParameter/@type"),
|
|
9
10
|
nameTerminalNodeQuery = nodeQuery("/namedParameter/@name[0]"),
|
|
@@ -77,16 +78,23 @@ export default domAssigned(class NamedParameter {
|
|
|
77
78
|
static name = "NamedParameter";
|
|
78
79
|
|
|
79
80
|
static fromNamedParameterNode(namedParameterNode, context) {
|
|
80
|
-
const
|
|
81
|
-
name = nameFromNamedParameterNode(namedParameterNode, context),
|
|
82
|
-
asName = asNameFromNamedParameterNode(namedParameterNode, context),
|
|
83
|
-
string = stringFromTypeNameAndAsName(type, name, asName, context),
|
|
84
|
-
namedParameter = new NamedParameter(string, type, name, asName);
|
|
81
|
+
const namedParameter = namedParameterFromNamedParameterNode(namedParameterNode, context);
|
|
85
82
|
|
|
86
83
|
return namedParameter;
|
|
87
84
|
}
|
|
88
85
|
});
|
|
89
86
|
|
|
87
|
+
function namedParameterFromNamedParameterNode(namedParameterNode, context) {
|
|
88
|
+
const { NamedParameter } = dom,
|
|
89
|
+
type = typeFromNamedParameterNode(namedParameterNode, context),
|
|
90
|
+
name = nameFromNamedParameterNode(namedParameterNode, context),
|
|
91
|
+
asName = asNameFromNamedParameterNode(namedParameterNode, context),
|
|
92
|
+
string = stringFromTypeNameAndAsName(type, name, asName, context),
|
|
93
|
+
namedParameter = new NamedParameter(string, type, name, asName);
|
|
94
|
+
|
|
95
|
+
return namedParameter;
|
|
96
|
+
}
|
|
97
|
+
|
|
90
98
|
function stringFromTypeNameAndAsName(type, name, asName, context) {
|
|
91
99
|
let string;
|
|
92
100
|
|
package/src/dom/parameter.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import dom from "../dom";
|
|
3
4
|
import Exception from "../exception";
|
|
4
5
|
|
|
5
6
|
import { domAssigned } from "../dom";
|
|
@@ -55,17 +56,23 @@ export default domAssigned(class Parameter {
|
|
|
55
56
|
terminalNodesLength = terminalNodes.length;
|
|
56
57
|
|
|
57
58
|
if (terminalNodesLength === 2) {
|
|
58
|
-
|
|
59
|
-
type = typeFromParameterNode(parameterNode, context),
|
|
60
|
-
string = stringFromNameAndType(name, type, context);
|
|
61
|
-
|
|
62
|
-
parameter = new Parameter(string, type, name);
|
|
59
|
+
parameter = parameterFromParameterNode(parameterNode, context);
|
|
63
60
|
}
|
|
64
61
|
|
|
65
62
|
return parameter;
|
|
66
63
|
}
|
|
67
64
|
});
|
|
68
65
|
|
|
66
|
+
function parameterFromParameterNode(parameterNode, context) {
|
|
67
|
+
const { Parameter } = dom,
|
|
68
|
+
name = nameFromParameterNode(parameterNode, context),
|
|
69
|
+
type = typeFromParameterNode(parameterNode, context),
|
|
70
|
+
string = stringFromNameAndType(name, type, context),
|
|
71
|
+
parameter = new Parameter(string, type, name);
|
|
72
|
+
|
|
73
|
+
return parameter;
|
|
74
|
+
}
|
|
75
|
+
|
|
69
76
|
function stringFromNameAndType(name, type, context) {
|
|
70
77
|
const nameString = name, ///
|
|
71
78
|
typeString = type, ///
|
|
@@ -106,16 +106,34 @@ export default domAssigned(class NamedParameters {
|
|
|
106
106
|
|
|
107
107
|
static fromObjectAssignmentNode(objectAssignmentNode, context) {
|
|
108
108
|
const objectAssignmentNamedParametersNode = objectAssignmentNamedParametersNodeQuery(objectAssignmentNode),
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
array = arrayFromNamedParameterNodes(namedParameterNodes, context),
|
|
112
|
-
string = stringFromArray(array, context),
|
|
113
|
-
namedParameters = new NamedParameters(string, array);
|
|
109
|
+
namedParametersNode = objectAssignmentNamedParametersNode, ///
|
|
110
|
+
namedParameters = namedParametersFromNamedParametersNode(namedParametersNode, context);
|
|
114
111
|
|
|
115
112
|
return namedParameters;
|
|
116
113
|
}
|
|
117
114
|
});
|
|
118
115
|
|
|
116
|
+
function namedParametersFromNamedParametersNode(namedParametersNode, context) {
|
|
117
|
+
const { NamedParameters } = dom,
|
|
118
|
+
namedParameterNodes = namedParameterNodesQuery(namedParametersNode),
|
|
119
|
+
array = arrayFromNamedParameterNodes(namedParameterNodes, context),
|
|
120
|
+
string = stringFromArray(array, context),
|
|
121
|
+
namedParameters = new NamedParameters(string, array);
|
|
122
|
+
|
|
123
|
+
return namedParameters;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function arrayFromNamedParameterNodes(namedParameterNodes, context) {
|
|
127
|
+
const { NamedParameter } = dom,
|
|
128
|
+
array = namedParameterNodes.map((namedParameterNode) => { ///
|
|
129
|
+
const namedParameter = NamedParameter.fromNamedParameterNode(namedParameterNode, context);
|
|
130
|
+
|
|
131
|
+
return namedParameter;
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
return array;
|
|
135
|
+
}
|
|
136
|
+
|
|
119
137
|
function stringFromArray(array, context) {
|
|
120
138
|
const namedParametersSString = array.reduce((namedParametersSString, namedParameter) => {
|
|
121
139
|
const namedParameterString = namedParameter.getString();
|
|
@@ -130,14 +148,3 @@ function stringFromArray(array, context) {
|
|
|
130
148
|
|
|
131
149
|
return string;
|
|
132
150
|
}
|
|
133
|
-
|
|
134
|
-
function arrayFromNamedParameterNodes(namedParameterNodes, context) {
|
|
135
|
-
const { NamedParameter } = dom,
|
|
136
|
-
array = namedParameterNodes.map((namedParameterNode) => { ///
|
|
137
|
-
const namedParameter = NamedParameter.fromNamedParameterNode(namedParameterNode, context);
|
|
138
|
-
|
|
139
|
-
return namedParameter;
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
return array;
|
|
143
|
-
}
|