occam-furtle 2.0.71 → 2.0.74

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.
@@ -10,24 +10,24 @@ const terminalNodesQuery = nodesQuery("/parameter/@*"),
10
10
  typeTerminalNodeQuery = nodeQuery("/parameter/@type");
11
11
 
12
12
  export default domAssigned(class Parameter {
13
- constructor(string, name, type) {
13
+ constructor(string, type, name) {
14
14
  this.string = string;
15
- this.name = name;
16
15
  this.type = type;
16
+ this.name = name;
17
17
  }
18
18
 
19
19
  getString() {
20
20
  return this.string;
21
21
  }
22
22
 
23
- getName() {
24
- return this.name;
25
- }
26
-
27
23
  getType() {
28
24
  return this.type;
29
25
  }
30
26
 
27
+ getName() {
28
+ return this.name;
29
+ }
30
+
31
31
  matchValue(value, context) {
32
32
  const valueString = value.asString(context),
33
33
  parameterString = this.string; ///
@@ -46,38 +46,8 @@ export default domAssigned(class Parameter {
46
46
  context.debug(`...matched the ${valueString} value against the '${parameterString}' parameter.`);
47
47
  }
48
48
 
49
- matchParameter(parameter, context) {
50
- let parameterMatches;
51
-
52
- const parameterA = this, ///
53
- parameterB = parameter; ///
54
-
55
- const parameterAString = parameterA.getString(),
56
- parameterBString = parameterB.getString();
57
-
58
- context.trace(`Matching the '${parameterAString}' parameter against the '${parameterBString}' parameter...`);
59
-
60
- const name = parameter.getName(),
61
- type = parameter.getType();
62
-
63
- parameterMatches = ((this.name === name) && (this.type === type));
64
-
65
- if (parameterMatches) {
66
- context.debug(`...matched the '${parameterAString}' parameter against the '${parameterBString}' parameter.`);
67
- }
68
-
69
- return parameterMatches;
70
- }
71
-
72
49
  static name = "Parameter";
73
50
 
74
- static fromNameAndType(name, type, context) {
75
- const string = stringFromNameAndType(name, type, context),
76
- parameter = new Parameter(string, name, type);
77
-
78
- return parameter;
79
- }
80
-
81
51
  static fromParameterNode(parameterNode, context) {
82
52
  let parameter = null;
83
53
 
@@ -90,19 +60,13 @@ export default domAssigned(class Parameter {
90
60
  node = parameterNode, //
91
61
  string = context.nodeAsString(node);
92
62
 
93
- parameter = new Parameter(string, name, type);
63
+ parameter = new Parameter(string, type, name);
94
64
  }
95
65
 
96
66
  return parameter;
97
67
  }
98
68
  });
99
69
 
100
- function stringFromNameAndType(name, type) {
101
- const string = `${type} ${name}`;
102
-
103
- return string;
104
- }
105
-
106
70
  function nameFromParameterNode(parameterNode, context) {
107
71
  const nameTerminalNode = nameTerminalNodeQuery(parameterNode),
108
72
  nameTerminalNodeContent = nameTerminalNode.getContent(),
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ import dom from "../../dom";
4
+ import Exception from "../../exception";
5
+
6
+ import { domAssigned } from "../../dom";
7
+ import { nodeQuery, nodesQuery } from "../../utilities/query";
8
+
9
+ const namedParameterNodesQuery = nodesQuery("/namedParameters/namedParameter"),
10
+ objectAssignmentNamedParametersNodeQuery = nodeQuery("/objectAssignment/namedParameters");
11
+
12
+ export default domAssigned(class NamedParameters {
13
+ constructor(string, array) {
14
+ this.string = string;
15
+ this.array = array;
16
+ }
17
+
18
+ getString() {
19
+ return this.string;
20
+ }
21
+
22
+ getArray() {
23
+ return this.array;
24
+ }
25
+
26
+ getLength() {
27
+ const length = this.array.length;
28
+
29
+ return length;
30
+ }
31
+
32
+ getNamedParameter(index) {
33
+ const namedParameter = this.array[index] || null;
34
+
35
+ return namedParameter;
36
+ }
37
+
38
+ someNamedParameter(callback) { return this.array.some(callback); }
39
+
40
+ forEachNamedParameter(callback) { this.array.forEach(callback); }
41
+
42
+ matchValues(values, context) {
43
+ const valuesString = values.getString(),
44
+ namedParametersString = this.string; ///
45
+
46
+ context.trace(`Matching the ${valuesString} values against the '${namedParametersString}' named parameters...`);
47
+
48
+ const valuesLength = values.getLength(),
49
+ namedParametersLength = this.getLength();
50
+
51
+ if (valuesLength !== namedParametersLength) {
52
+ const message = `The ${valuesString} values and '${namedParametersString}' named parameters are not of the same length.`,
53
+ exception = Exception.fromMessage(message);
54
+
55
+ throw exception;
56
+ }
57
+
58
+ this.forEachNamedParameter((namedParameter, index) => {
59
+ if (namedParameter !== null) {
60
+ const value = values.getValue(index);
61
+
62
+ namedParameter.matchValue(value, context);
63
+ }
64
+ });
65
+
66
+ context.debug(`...matched the ${valuesString} values against the '${namedParametersString}' named parameters.`);
67
+ }
68
+
69
+ matchNamedParameter(namedParameter, context) {
70
+ const namedParameterString = namedParameter.getString(),
71
+ namedParametersString = this.string; ///
72
+
73
+ context.trace(`Matching the '${namedParameterString}' namedParameter against the '${namedParametersString}' named parameters...`);
74
+
75
+ const namedParameterA = namedParameter, ///
76
+ namedParameterMatches = this.someNamedParameter((namedParameter) => {
77
+ if (namedParameter !== null) {
78
+ const namedParameterB = namedParameter, ///
79
+ namedParameterBMatchesNamedParameterA = namedParameterA.matchNamedParameter(namedParameterB, context);
80
+
81
+ if (namedParameterBMatchesNamedParameterA) {
82
+ return true;
83
+ }
84
+ }
85
+ });
86
+
87
+ if (!namedParameterMatches) {
88
+ const message = `The '${namedParameterString}' namedParameter does not match any of the '${namedParametersString}' named parameters.`,
89
+ exception = Exception.fromMessage(message);
90
+
91
+ throw exception;
92
+ }
93
+
94
+ context.debug(`...matched the '${namedParameterString}' namedParameter against the '${namedParametersString}' named parameters.`);
95
+ }
96
+
97
+ matchNamedParameters(namedParameters, context) {
98
+ namedParameters.forEachNamedParameter((namedParameter) => {
99
+ if (namedParameter !== null) {
100
+ this.matchNamedParameter(namedParameter, context);
101
+ }
102
+ });
103
+ }
104
+
105
+ static name = "NamedParameters";
106
+
107
+ static fromObjectAssignmentNode(objectAssignmentNode, context) {
108
+ const objectAssignmentNamedParametersNode = objectAssignmentNamedParametersNodeQuery(objectAssignmentNode),
109
+ parametersNode = objectAssignmentNamedParametersNode, ///
110
+ node = parametersNode, ///
111
+ string = context.nodeAsString(node),
112
+ namedParameterNodes = namedParameterNodesQuery(parametersNode),
113
+ array = arrayFromNamedParameterNodes(namedParameterNodes, context),
114
+ namedParameters = new NamedParameters(string, array);
115
+
116
+ return namedParameters;
117
+ }
118
+ });
119
+
120
+ function arrayFromNamedParameterNodes(namedParameterNodes, context) {
121
+ const { NamedParameter } = dom,
122
+ array = namedParameterNodes.map((namedParameterNode) => { ///
123
+ const namedParameter = NamedParameter.fromNamedParameterNode(namedParameterNode, context);
124
+
125
+ return namedParameter;
126
+ });
127
+
128
+ return array;
129
+ }
@@ -8,7 +8,6 @@ import { nodeQuery, nodesQuery } from "../utilities/query";
8
8
 
9
9
  const parameterNodesQuery = nodesQuery("/parameters/parameter"),
10
10
  arrayAssignmentParametersNodeQuery = nodeQuery("/arrayAssignment/parameters"),
11
- objectAssignmentParametersNodeQuery = nodeQuery("/objectAssignment/parameters"),
12
11
  anonymousProcedureParametersNodeQuery = nodeQuery("/anonymousProcedure/parameters"),
13
12
  procedureDeclarationParametersNodeQuery = nodeQuery("/procedureDeclaration/parameters");
14
13
 
@@ -38,8 +37,6 @@ export default domAssigned(class Parameters {
38
37
  return parameter;
39
38
  }
40
39
 
41
- someParameter(callback) { return this.array.some(callback); }
42
-
43
40
  forEachParameter(callback) { this.array.forEach(callback); }
44
41
 
45
42
  matchValues(values, context) {
@@ -69,42 +66,6 @@ export default domAssigned(class Parameters {
69
66
  context.debug(`...matched the ${valuesString} values against the '${parametersString}' parameters.`);
70
67
  }
71
68
 
72
- matchParameter(parameter, context) {
73
- const parameterString = parameter.getString(),
74
- parametersString = this.string; ///
75
-
76
- context.trace(`Matching the '${parameterString}' parameter against the '${parametersString}' parameters...`);
77
-
78
- const parameterA = parameter, ///
79
- parameterMatches = this.someParameter((parameter) => {
80
- if (parameter !== null) {
81
- const parameterB = parameter, ///
82
- parameterBMatchesParameterA = parameterA.matchParameter(parameterB, context);
83
-
84
- if (parameterBMatchesParameterA) {
85
- return true;
86
- }
87
- }
88
- });
89
-
90
- if (!parameterMatches) {
91
- const message = `The '${parameterString}' parameter does not match any of the '${parametersString}' parameters.`,
92
- exception = Exception.fromMessage(message);
93
-
94
- throw exception;
95
- }
96
-
97
- context.debug(`...matched the '${parameterString}' parameter against the '${parametersString}' parameters.`);
98
- }
99
-
100
- matchParameters(parameters, context) {
101
- parameters.forEachParameter((parameter) => {
102
- if (parameter !== null) {
103
- this.matchParameter(parameter, context);
104
- }
105
- });
106
- }
107
-
108
69
  static name = "Parameters";
109
70
 
110
71
  static fromStringAndArray(string, array) {
@@ -125,18 +86,6 @@ export default domAssigned(class Parameters {
125
86
  return parameters;
126
87
  }
127
88
 
128
- static fromObjectAssignmentNode(objectAssignmentNode, context) {
129
- const objectAssignmentParametersNode = objectAssignmentParametersNodeQuery(objectAssignmentNode),
130
- parametersNode = objectAssignmentParametersNode, ///
131
- node = parametersNode, ///
132
- string = context.nodeAsString(node),
133
- parameterNodes = parameterNodesQuery(parametersNode),
134
- array = arrayFromParameterNodes(parameterNodes, context),
135
- parameters = new Parameters(string, array);
136
-
137
- return parameters;
138
- }
139
-
140
89
  static fromAnonymousProcedureNode(anonymousProcedureNode, context) {
141
90
  const { Parameter } = dom,
142
91
  anonymousProcedureParametersNode = anonymousProcedureParametersNodeQuery(anonymousProcedureNode),
@@ -9,7 +9,8 @@ import { variablesFromValuesAndParameters } from "../procedure";
9
9
 
10
10
  const parametersNodeQuery = nodeQuery("/anonymousProcedure/parameters"),
11
11
  typeTerminalNodeQuery = nodeQuery("/anonymousProcedure/@type"),
12
- somAnonymousProcedureNodeQuery = nodeQuery("/some/anonymousProcedure");
12
+ someAnonymousProcedureNodeQuery = nodeQuery("/some/anonymousProcedure"),
13
+ anonymousProcedureCallAnonymousProcedureNodeQuery = nodeQuery("/anonymousProcedureCall/anonymousProcedure");
13
14
 
14
15
  export default domAssigned(class AnonymousProcedure {
15
16
  constructor(string, type, parameters, returnBlock) {
@@ -63,12 +64,20 @@ export default domAssigned(class AnonymousProcedure {
63
64
  static name = "AnonymousProcedure";
64
65
 
65
66
  static fromSomeNode(someNode, context) {
66
- const someAnonymousProcedureNode = somAnonymousProcedureNodeQuery(someNode),
67
+ const someAnonymousProcedureNode = someAnonymousProcedureNodeQuery(someNode),
67
68
  anonymousProcedureNode = someAnonymousProcedureNode, ///
68
69
  anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
69
70
 
70
71
  return anonymousProcedure;
71
72
  }
73
+
74
+ static fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context) {
75
+ const anonymousProcedureCallAnonymousProcedureNode = anonymousProcedureCallAnonymousProcedureNodeQuery(anonymousProcedureCallNode),
76
+ anonymousProcedureNode = anonymousProcedureCallAnonymousProcedureNode, ///
77
+ anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
78
+
79
+ return anonymousProcedure;
80
+ }
72
81
  });
73
82
 
74
83
  function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context) {
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ import dom from "../../dom";
4
+
5
+ import { nodeQuery } from "../../utilities/query";
6
+ import { domAssigned } from "../../dom";
7
+
8
+ const anonymousProcedureCallNodeQuery = nodeQuery("/value/anonymousProcedureCall");
9
+
10
+ export default domAssigned(class AnonymousProcedureCall {
11
+ constructor(string, anonymousProcedure, values) {
12
+ this.string = string;
13
+ this.anonymousProcedure = anonymousProcedure;
14
+ this.values = values;
15
+ }
16
+
17
+ getString() {
18
+ return this.string;
19
+ }
20
+
21
+ getAnonymousProcedure() {
22
+ return this.anonymousProcedure;
23
+ }
24
+
25
+ getValues() {
26
+ return this.values;
27
+ }
28
+
29
+ evaluate(context) {
30
+ const anonymousProcedureCallString = this.string; ///
31
+
32
+ context.trace(`Evaluating the '${anonymousProcedureCallString}' anonymous procedure call...`);
33
+
34
+ const values = this.values.evaluate(context),
35
+ value = this.anonymousProcedure.call(values, context);
36
+
37
+ context.debug(`...evaluated the '${anonymousProcedureCallString}' anonymous procedure call.`);
38
+
39
+ return value;
40
+ }
41
+
42
+ static name = "AnonymousProcedureCall";
43
+
44
+ static fromValueNode(valueNode, context) {
45
+ let anonymousProcedureCall = null;
46
+
47
+ const anonymousProcedureCallNode = anonymousProcedureCallNodeQuery(valueNode);
48
+
49
+ if (anonymousProcedureCallNode !== null) {
50
+ const { Values, AnonymousProcedure } = dom,
51
+ node = anonymousProcedureCallNode, ///
52
+ string = context.nodeAsString(node),
53
+ anonymousProcedure = AnonymousProcedure.fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context),
54
+ values = Values.fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context);
55
+
56
+ anonymousProcedureCall = new AnonymousProcedureCall(string, anonymousProcedure, values);
57
+ }
58
+
59
+ return anonymousProcedureCall;
60
+ }
61
+ });
package/src/dom/some.js CHANGED
@@ -4,8 +4,8 @@ import dom from "../dom";
4
4
  import Exception from "../exception";
5
5
 
6
6
  import { nodeQuery } from "../utilities/query";
7
- import { NODES_TYPE } from "../types";
8
7
  import { domAssigned } from "../dom";
8
+ import { NODES_TYPE, BOOLEAN_TYPE } from "../types";
9
9
 
10
10
  const variableNodeQuery = nodeQuery("/some/variable"),
11
11
  valueSomeNodeQuery = nodeQuery("/value/some"),
@@ -49,11 +49,29 @@ export default domAssigned(class Some {
49
49
  const nodes = value.getNodes();
50
50
 
51
51
  nodes.some((node) => {
52
- const { Value, Values } = dom,
53
- value = Value.fromNode(node, context),
54
- values = Values.fromValue(value, context);
52
+ let value;
55
53
 
56
- this.anonymousProcedure.call(values, context);
54
+ const { Value, Values } = dom;
55
+
56
+ value = Value.fromNode(node, context);
57
+
58
+ const values = Values.fromValue(value, context);
59
+
60
+ value = this.anonymousProcedure.call(values, context);
61
+
62
+ const valueType = value.getType();
63
+
64
+ if (valueType !== BOOLEAN_TYPE) {
65
+ const valueString = value.asString(context),
66
+ message = `The ${valueString} value's type is '${valueType}' when it should be of type '${BOOLEAN_TYPE}'.`,
67
+ exception = Exception.fromMessage(message);
68
+
69
+ throw exception;
70
+ }
71
+
72
+ const boolean = value.getBoolean();
73
+
74
+ return boolean;
57
75
  });
58
76
 
59
77
  context.trace(`...evaluated the '${someString}' some.`);
package/src/dom/step.js CHANGED
@@ -34,7 +34,6 @@ export default domAssigned(class Step {
34
34
  }
35
35
 
36
36
  evaluate(context) {
37
-
38
37
  if (false) {
39
38
  ///
40
39
  } else if (this.arrayAssignment !== null) {
package/src/dom/value.js CHANGED
@@ -22,7 +22,7 @@ const ternaryValueNodeQuery = nodeQuery("/ternary/value"),
22
22
  conditionalBlocksCValueNodeQuery = nodeQuery("/conditionalBlocks/value");
23
23
 
24
24
  export default domAssigned(class Value {
25
- constructor(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall) {
25
+ constructor(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall) {
26
26
  this.node = node;
27
27
  this.nodes = nodes;
28
28
  this.number = number;
@@ -38,6 +38,7 @@ export default domAssigned(class Value {
38
38
  this.bitwiseValue = bitwiseValue;
39
39
  this.bracketedValue = bracketedValue;
40
40
  this.procedureCall = procedureCall;
41
+ this.anonymousProcedureCall = anonymousProcedureCall;
41
42
  }
42
43
 
43
44
  getNode() {
@@ -100,6 +101,10 @@ export default domAssigned(class Value {
100
101
  return this.procedureCall;
101
102
  }
102
103
 
104
+ getAnonymousProcedureCall() {
105
+ return this.anonymousProcedureCall;
106
+ }
107
+
103
108
  getType() {
104
109
  let type;
105
110
 
@@ -127,8 +132,16 @@ export default domAssigned(class Value {
127
132
  type = this.nodesQuery.getType();
128
133
  } else if (this.comparison !== null) {
129
134
  type = this.comparison.getType();
135
+ } else if (this.negatedValue !== null) {
136
+ type = this.negatedValue.getType();
137
+ } else if (this.bitwiseValue !== null) {
138
+ type = this.bitwiseValue.getType();
139
+ } else if (this.bracketedValue !== null) {
140
+ type = this.bracketedValue.getType();
130
141
  } else if (this.procedureCall !== null) {
131
142
  type = this.procedureCall.getType();
143
+ } else if (this.anonymousProcedureCall !== null) {
144
+ type = this.anonymousProcedureCall.getType();
132
145
  }
133
146
 
134
147
  return type;
@@ -161,8 +174,16 @@ export default domAssigned(class Value {
161
174
  string = this.nodesQuery.asString(context);
162
175
  } else if (this.comparison !== null) {
163
176
  string = this.comparison.asString(context);
177
+ } else if (this.negatedValue !== null) {
178
+ string = this.negatedValue.asString(context);
179
+ } else if (this.bitwiseValue !== null) {
180
+ string = this.bitwiseValue.asString(context);
181
+ } else if (this.bracketedValue !== null) {
182
+ string = this.bracketedValue.asString(context);
164
183
  } else if (this.procedureCall !== null) {
165
184
  string = this.procedureCall.asString(context);
185
+ } else if (this.anonymousProcedureCall !== null) {
186
+ string = this.anonymousProcedureCall.asString(context);
166
187
  }
167
188
 
168
189
  return string;
@@ -191,8 +212,16 @@ export default domAssigned(class Value {
191
212
  value = this.nodesQuery.evaluate(context);
192
213
  } else if (this.comparison !== null) {
193
214
  value = this.comparison.evaluate(context);
215
+ } else if (this.negatedValue !== null) {
216
+ value = this.negatedValue.evaluate(context);
217
+ } else if (this.bitwiseValue !== null) {
218
+ value = this.bitwiseValue.evaluate(context);
219
+ } else if (this.bracketedValue !== null) {
220
+ value = this.bracketedValue.evaluate(context);
194
221
  } else if (this.procedureCall !== null) {
195
222
  value = this.procedureCall.evaluate(context);
223
+ } else if (this.anonymousProcedureCall !== null) {
224
+ value = this.anonymousProcedureCall.evaluate(context);
196
225
  }
197
226
 
198
227
  return value;
@@ -267,7 +296,8 @@ export default domAssigned(class Value {
267
296
  bitwiseValue = null,
268
297
  bracketedValue = null,
269
298
  procedureCall = null,
270
- value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
299
+ anonymousProcedureCall = null,
300
+ value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
271
301
 
272
302
  return value;
273
303
  }
@@ -287,7 +317,8 @@ export default domAssigned(class Value {
287
317
  bitwiseValue = null,
288
318
  bracketedValue = null,
289
319
  procedureCall = null,
290
- value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
320
+ anonymousProcedureCall = null,
321
+ value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
291
322
 
292
323
  return value;
293
324
  }
@@ -307,7 +338,8 @@ export default domAssigned(class Value {
307
338
  bitwiseValue = null,
308
339
  bracketedValue = null,
309
340
  procedureCall = null,
310
- value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
341
+ anonymousProcedureCall = null,
342
+ value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
311
343
 
312
344
  return value;
313
345
  }
@@ -327,7 +359,8 @@ export default domAssigned(class Value {
327
359
  bitwiseValue = null,
328
360
  bracketedValue = null,
329
361
  procedureCall = null,
330
- value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
362
+ anonymousProcedureCall = null,
363
+ value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
331
364
 
332
365
  return value;
333
366
  }
@@ -470,7 +503,7 @@ function booleanAsString(boolean, context) {
470
503
  }
471
504
 
472
505
  function valueFromValueNode(valueNode, context) {
473
- const { Some, Value, Ternary, Variable, NodeQuery, NodesQuery, Comparison, NegatedValue, BitwiseValue, BracketedValue, ProcedureCall } = dom,
506
+ const { Some, Value, Ternary, Variable, NodeQuery, NodesQuery, Comparison, NegatedValue, BitwiseValue, BracketedValue, ProcedureCall, AnonymousProcedureCall } = dom,
474
507
  node = nodeFromValueNode(valueNode, context),
475
508
  nodes = nodesFromValueNode(valueNode, context),
476
509
  number = numberFromValueNode(valueNode, context),
@@ -486,7 +519,8 @@ function valueFromValueNode(valueNode, context) {
486
519
  bitwiseValue = BitwiseValue.fromValueNode(valueNode, context),
487
520
  bracketedValue = BracketedValue.fromValueNode(valueNode, context),
488
521
  procedureCall = ProcedureCall.fromValueNode(valueNode, context),
489
- value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
522
+ anonymousProcedureCall = AnonymousProcedureCall.fromValueNode(valueNode, context),
523
+ value = new Value(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall);
490
524
 
491
525
  return value;
492
526
  }
package/src/dom/values.js CHANGED
@@ -6,7 +6,8 @@ import { domAssigned } from "../dom";
6
6
  import { nodeQuery, nodesQuery } from "../utilities/query";
7
7
 
8
8
  const valuesNodeQuery = nodeQuery("/value/procedureCall/values"),
9
- valueNodesQuery = nodesQuery("/values/value");
9
+ valueNodesQuery = nodesQuery("/values/value"),
10
+ anonymousProcedureCallValuesNodeQuery = nodeQuery("/anonymousProcedureCall/values");
10
11
 
11
12
  export default domAssigned(class Values {
12
13
  constructor(string, array) {
@@ -97,6 +98,14 @@ export default domAssigned(class Values {
97
98
 
98
99
  return values;
99
100
  }
101
+
102
+ static fromAnonymousProcedureCallNode(anonymousProcedureCallNode, context) {
103
+ const anonymousProcedureCallValuesNode = anonymousProcedureCallValuesNodeQuery(anonymousProcedureCallNode),
104
+ valuesNode = anonymousProcedureCallValuesNode, ///
105
+ values = valuesFromValuesNode(valuesNode, context);
106
+
107
+ return values;
108
+ }
100
109
  });
101
110
 
102
111
  function arrayFromNodes(nodes, context) {
@@ -217,6 +217,19 @@ export default domAssigned(class Variable {
217
217
  return variable;
218
218
  }
219
219
 
220
+ static fromNamedParameterAndAssignment(namedParameter, assignment, context) {
221
+ const asName = namedParameter.getAsName(),
222
+ name = (asName !== null) ?
223
+ asName : ///
224
+ namedParameter.getName(),
225
+ type = namedParameter.getType(),
226
+ value = null,
227
+ string = name, ///
228
+ variable = new Variable(string, type, name, value, assignment);
229
+
230
+ return variable;
231
+ }
232
+
220
233
  static fromTypeVariableNodeAndAssignmentNode(type, variableNode, assignmentNode, context) {
221
234
  const { Assignment } = dom,
222
235
  node = variableNode, ///
package/src/index.js CHANGED
@@ -21,16 +21,18 @@ import ReturnBlock from "./dom/block/return";
21
21
  import NegatedValue from "./dom/value/negated";
22
22
  import BitwiseValue from "./dom/value/bitwise";
23
23
  import ProcedureCall from "./dom/procedureCall";
24
+ import NamedParameter from "./dom/parameter/named";
24
25
  import BracketedValue from "./dom/value/bracketed";
25
26
  import ArrayAssigment from "./dom/assignment/array";
26
27
  import ReturnStatement from "./dom/returnStatement";
28
+ import NamedParameters from "./dom/parameters/named";
27
29
  import ObjectAssignment from "./dom/assignment/object";
28
30
  import ConditionalBlocks from "./dom/conditionalBlocks";
29
31
  import AnonymousProcedure from "./dom/procedure/anonymous";
30
32
  import ProcedureDeclaration from "./dom/declaration/procedure";
31
33
  import VariablesDeclaration from "./dom/declaration/variables";
34
+ import AnonymousProcedureCall from "./dom/procedureCall/anonymous";
32
35
 
33
36
  export { default as Values } from "./dom/values";
34
37
  export { default as FileContext } from "./context/file";
35
38
  export { default as stringUtilities } from "./utilities/string";
36
-