occam-furtle 2.0.74 → 2.0.76

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.
@@ -85,9 +85,10 @@ export default domAssigned(class ArrayAssigment {
85
85
  throw exception;
86
86
  }
87
87
 
88
- const { Variable, Assignment } = dom,
89
- assignment = Assignment.fromValue(value, context),
90
- variable = Variable.fromParameterAndAssignment(parameter, assignment);
88
+ debugger
89
+
90
+ const { Variable } = dom,
91
+ variable = Variable.fromValueAndParameter(value, parameter, context);
91
92
 
92
93
  context.addVariable(variable);
93
94
 
@@ -116,3 +117,17 @@ export default domAssigned(class ArrayAssigment {
116
117
  return arrayAssignment;
117
118
  }
118
119
  });
120
+
121
+ /*
122
+ static fromParameterAndAssignment(parameter, assignment, context) {
123
+ const type = parameter.getType(),
124
+ name = parameter.getName(),
125
+ value = null,
126
+ string = name, ///
127
+ variable = new Variable(string, type, name, value, assignment);
128
+
129
+ return variable;
130
+ }
131
+
132
+
133
+ */
@@ -108,15 +108,16 @@ export default domAssigned(class ObjectAssigment {
108
108
  throw exception;
109
109
  }
110
110
 
111
- const { Value, Variable, Assignment } = dom,
111
+ const { Value, Variable } = dom,
112
112
  terminalNode = node, ///
113
113
  content = terminalNode.getContent(),
114
114
  string = content; ///
115
115
 
116
116
  value = Value.fromString(string, context); ///
117
117
 
118
- const assignment = Assignment.fromValue(value, context),
119
- variable = Variable.fromNamedParameterAndAssignment(namedParameter, assignment);
118
+ debugger
119
+
120
+ const variable = Variable.fromValueAndNamedParameter(value, namedParameter, context);
120
121
 
121
122
  context.addVariable(variable);
122
123
 
@@ -138,13 +139,14 @@ export default domAssigned(class ObjectAssigment {
138
139
  nodeTerminalNode = node.isTerminalNode(),
139
140
  terminal = nodeTerminalNode; ///
140
141
 
141
- const { Value, Variable, Assignment } = dom,
142
+ const { Value, Variable } = dom,
142
143
  boolean = terminal; ///
143
144
 
144
145
  value = Value.fromBoolean(boolean, context); ///
145
146
 
146
- const assignment = Assignment.fromValue(value, context),
147
- variable = Variable.fromNamedParameterAndAssignment(namedParameter, assignment);
147
+ debugger
148
+
149
+ const variable = Variable.fromValueAndNamedParameter(value, namedParameter, context);
148
150
 
149
151
  context.addVariable(variable);
150
152
 
@@ -173,15 +175,16 @@ export default domAssigned(class ObjectAssigment {
173
175
  throw exception;
174
176
  }
175
177
 
176
- const { Value, Variable, Assignment } = dom,
178
+ const { Value, Variable } = dom,
177
179
  nonTerminalNode = node, ///
178
180
  childNodes = nonTerminalNode.getChildNodes(),
179
181
  nodes = childNodes; ///
180
182
 
181
183
  value = Value.fromNodes(nodes, context); ///
182
184
 
183
- const assignment = Assignment.fromValue(value, context),
184
- variable = Variable.fromNamedParameterAndAssignment(namedParameter, assignment);
185
+ debugger
186
+
187
+ const variable = Variable.fromValueAndNamedParameter(value, namedParameter, context);
185
188
 
186
189
  context.addVariable(variable);
187
190
 
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ import dom from "../../dom";
4
+ import Exception from "../../exception";
5
+
6
+ import { domAssigned } from "../../dom";
7
+
8
+ export default domAssigned(class VariableAssignment {
9
+ constructor(string, variable, value) {
10
+ this.string = string;
11
+ this.variable = variable;
12
+ this.value = value;
13
+ }
14
+
15
+ getString() {
16
+ return this.string;
17
+ }
18
+
19
+ getVariable() {
20
+ return this.variable;
21
+ }
22
+
23
+ getValue() {
24
+ return this.value;
25
+ }
26
+
27
+ evaluate(context) {
28
+ let value;
29
+
30
+ const variableAssignmentString = this.string; ///
31
+
32
+ context.trace(`Evaluating the '${variableAssignmentString}' variable assignment...`);
33
+
34
+ value = this.value.evaluate(context);
35
+
36
+ debugger
37
+
38
+ if (value === null) {
39
+ const variableAssignmentString = this.string, ///
40
+ message = `The '${variableAssignmentString}' variable assignment cannot be evaluated.`,
41
+ exception = Exception.fromMessage(message);
42
+
43
+ throw exception;
44
+ }
45
+
46
+ context.debug(`...evaluated the '${variableAssignmentString}' variable assignment.`);
47
+
48
+ return value;
49
+ }
50
+
51
+ static name = "VariableAssignment";
52
+
53
+ static fromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context) {
54
+ const variableAssignment = variableAssignmentFromTypeAndAssignmentNode(type, variableAssignmentNode, context);
55
+
56
+ return variableAssignment;
57
+ }
58
+ });
59
+
60
+ function variableAssignmentFromTypeAndAssignmentNode(type, variableAssignmentNode, context) {
61
+ const { Variable, Value, VariableAssignment } = dom,
62
+ node = variableAssignmentNode, ///
63
+ string = context.nodeAsString(node),
64
+ value = Value.fromVariableAssignmentNode(variableAssignmentNode, context),
65
+ variable = Variable.fromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context),
66
+ assignment = new VariableAssignment(string, variable, value);
67
+
68
+ return assignment;
69
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ import dom from "../../dom";
4
+
5
+ import { domAssigned } from "../../dom";
6
+ import { nodeQuery, nodesQuery } from "../../utilities/query";
7
+
8
+ const typeTerminalNodeQuery = nodeQuery("/variableAssignments/@type"),
9
+ variableAssignmentsNodeQuery = nodeQuery("/step/variableAssignments"),
10
+ variableAssignmentNodesQuery = nodesQuery("/variableAssignments/variableAssignment");
11
+
12
+ export default domAssigned(class VariableAssignments {
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
+ evaluate(context) {
27
+ const variableAssignmentsString = this.string; ///
28
+
29
+ context.trace(`Evaluating the '${variableAssignmentsString}' variable assignments...`);
30
+
31
+ this.array.forEach((variableAssignment) => {
32
+ variableAssignment.evaluate(context);
33
+
34
+ // context.addVariable(variable);
35
+ //
36
+ // variable.assign(context);
37
+ });
38
+
39
+ context.debug(`...evaluated the '${variableAssignmentsString}' variable assignments.`);
40
+ }
41
+
42
+ static name = "VariableAssignments";
43
+
44
+ static fromStepNode(stepNode, context) {
45
+ let variableAssignments = null;
46
+
47
+ const variableAssignmentsNode = variableAssignmentsNodeQuery(stepNode);
48
+
49
+ if (variableAssignmentsNode !== null) {
50
+ const node = variableAssignmentsNode, ////
51
+ string = context.nodeAsString(node),
52
+ type = typeFromVariableAssignmentsNode(variableAssignmentsNode, context),
53
+ array = arrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context);
54
+
55
+ variableAssignments = new VariableAssignments(string, array);
56
+ }
57
+
58
+ return variableAssignments;
59
+ }
60
+ });
61
+
62
+ function typeFromVariableAssignmentsNode(variableAssignmentsNode, context) {
63
+ const typeTerminalNode = typeTerminalNodeQuery(variableAssignmentsNode),
64
+ typeTerminalNodeContent = typeTerminalNode.getContent(),
65
+ type = typeTerminalNodeContent; ///
66
+
67
+ return type;
68
+ }
69
+
70
+ function arrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context) {
71
+ const variableAssignmentNodes = variableAssignmentNodesQuery(variableAssignmentsNode),
72
+ array = variableAssignmentNodes.map((variableAssignmentNode) => {
73
+ const { VariableAssignment } = dom,
74
+ variableAssignment = VariableAssignment.fromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context);
75
+
76
+ return variableAssignment;
77
+ });
78
+
79
+ return array;
80
+ }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- import dom from "../dom";
3
+ import dom from "../../dom";
4
4
 
5
- import { nodeQuery } from "../utilities/query";
6
- import { domAssigned } from "../dom";
5
+ import { nodeQuery } from "../../utilities/query";
6
+ import { domAssigned } from "../../dom";
7
7
 
8
8
  const returnStatementNodeQuery = nodeQuery("/returnBlock/returnStatement");
9
9
 
package/src/dom/value.js CHANGED
@@ -15,11 +15,11 @@ const { match } = arrayUtilities;
15
15
  const ternaryValueNodeQuery = nodeQuery("/ternary/value"),
16
16
  numberTerminalNodeQuery = nodeQuery("/value/@number"),
17
17
  conditionValueNodeQuery = nodeQuery("/condition/value"),
18
- assignmentValueNodeQuery = nodeQuery("/assignment/value"),
19
18
  primitiveTerminalNodeQuery = nodeQuery("/value/@primitive"),
20
19
  returnStatementValueNodeQuery = nodeQuery("/returnStatement/value"),
21
20
  stringLiteralTerminalNodeQuery = nodeQuery("/value/@string-literal"),
22
- conditionalBlocksCValueNodeQuery = nodeQuery("/conditionalBlocks/value");
21
+ conditionalBlocksCValueNodeQuery = nodeQuery("/conditionalBlocks/value"),
22
+ variableAssignmentValueNodeQuery = nodeQuery("/variableAssignment/value");
23
23
 
24
24
  export default domAssigned(class Value {
25
25
  constructor(node, nodes, number, string, boolean, some, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall, anonymousProcedureCall) {
@@ -393,20 +393,6 @@ export default domAssigned(class Value {
393
393
  return value;
394
394
  }
395
395
 
396
- static fromAssignmentNode(assigmentNode, context) {
397
- let value = null;
398
-
399
- const assignmentValueNode = assignmentValueNodeQuery(assigmentNode);
400
-
401
- if (assignmentValueNode !== null) {
402
- const valueNode = assignmentValueNode; ///
403
-
404
- value = valueFromValueNode(valueNode, context);
405
- }
406
-
407
- return value;
408
- }
409
-
410
396
  static fromReturnStatementNode(returnStatementNode, context) {
411
397
  let value = null;
412
398
 
@@ -428,6 +414,20 @@ export default domAssigned(class Value {
428
414
 
429
415
  return value;
430
416
  }
417
+
418
+ static fromVariableAssignmentNode(variableAssigmentNode, context) {
419
+ let value = null;
420
+
421
+ const variableAssignmentValueNode = variableAssignmentValueNodeQuery(variableAssigmentNode);
422
+
423
+ if (variableAssignmentValueNode !== null) {
424
+ const valueNode = variableAssignmentValueNode; ///
425
+
426
+ value = valueFromValueNode(valueNode, context);
427
+ }
428
+
429
+ return value;
430
+ }
431
431
  });
432
432
 
433
433
  function matchNode(nodeA, nodeB) {
@@ -12,15 +12,15 @@ const someVariableNodeQuery = nodeQuery("/some/variable"),
12
12
  nodesQueryVariableNodeQuery = nodeQuery("/nodesQuery/variable"),
13
13
  variableNameTerminalNodeQuery = nodeQuery("/variable/@name"),
14
14
  arrayAssignmentVariableNodeQuery = nodeQuery("/arrayAssignment/variable"),
15
- objectAssignmentVariableNodeQuery = nodeQuery("/objectAssignment/variable");
15
+ objectAssignmentVariableNodeQuery = nodeQuery("/objectAssignment/variable"),
16
+ variableAssignmentVariableNodeQuery = nodeQuery("/variableAssignment/variable");
16
17
 
17
18
  export default domAssigned(class Variable {
18
- constructor(string, type, name, value, assignment) {
19
+ constructor(string, type, name, value) {
19
20
  this.string = string;
20
21
  this.type = type;
21
22
  this.name = name;
22
23
  this.value = value;
23
- this.assignment = assignment;
24
24
  }
25
25
 
26
26
  getString() {
@@ -39,41 +39,37 @@ export default domAssigned(class Variable {
39
39
  return this.value;
40
40
  }
41
41
 
42
- getAssignment() {
43
- return this.assignment;
44
- }
42
+ matchVariableName(variableName) {
43
+ const nameMatches = (this.name === variableName);
45
44
 
46
- setString(string) {
47
- this.string = string;
45
+ return nameMatches;
48
46
  }
49
47
 
50
- setType(type) {
51
- this.type = type;
52
- }
48
+ evaluate(context) {
49
+ const variableString = this.string; ///
53
50
 
54
- setName(name) {
55
- this.name = name;
56
- }
51
+ context.trace(`Evaluating the '${variableString}' variable...`);
57
52
 
58
- setValue(value) {
59
- this.value = value;
60
- }
53
+ const variableName = this.name, ///
54
+ variablePresent = context.isVariablePresentByVariableName(variableName);
61
55
 
62
- setAssignment(assignment) {
63
- this.assignment = assignment;
64
- }
56
+ if (!variablePresent) {
57
+ const message = `The '${variableString}; variable is not present.'`,
58
+ exception = Exception.fromMessage(message);
65
59
 
66
- matchVariableName(variableName) {
67
- const nameMatches = (this.name === variableName);
60
+ throw exception;
61
+ }
68
62
 
69
- return nameMatches;
63
+ const variable = context.findVariableByVariableName(variableName),
64
+ value = variable.getValue(),
65
+ valueString = value.asString(context);
66
+
67
+ context.debug(`...evaluated the '${variableString}' variable to the ${valueString} value.`);
68
+
69
+ return value;
70
70
  }
71
71
 
72
72
  assign(context) {
73
- if (this.assignment === null) {
74
- return;
75
- }
76
-
77
73
  const variableName = this.name, ///
78
74
  variableString = this.string, ///
79
75
  variablePresent = context.isVariablePresentByVariableName(variableName);
@@ -87,10 +83,9 @@ export default domAssigned(class Variable {
87
83
  throw exception;
88
84
  }
89
85
 
90
- const value = this.assignment.evaluate(context),
91
- variable = context.findVariableByVariableName(variableName),
86
+ const value = this.value.evaluate(context),
92
87
  valueType = value.getType(),
93
- variableType = variable.getType();
88
+ variableType = this.type;
94
89
 
95
90
  if (valueType !== variableType) {
96
91
  const message = `The '${variableString} variable's '${variableType}' type does not match the assigned value's '${valueType}' type.'`,
@@ -99,37 +94,13 @@ export default domAssigned(class Variable {
99
94
  throw exception;
100
95
  }
101
96
 
102
- variable.setValue(value);
97
+ this.value = value;
103
98
 
104
99
  const valueString = value.asString(context);
105
100
 
106
101
  context.debug(`...assigned the ${valueString} value to the '${variableString}' variable.`);
107
102
  }
108
103
 
109
- evaluate(context) {
110
- const variableString = this.string; ///
111
-
112
- context.trace(`Evaluating the '${variableString}' variable...`);
113
-
114
- const variableName = this.name, ///
115
- variablePresent = context.isVariablePresentByVariableName(variableName);
116
-
117
- if (!variablePresent) {
118
- const message = `The '${variableString}; variable is not present.'`,
119
- exception = Exception.fromMessage(message);
120
-
121
- throw exception;
122
- }
123
-
124
- const variable = context.findVariableByVariableName(variableName),
125
- value = variable.getValue(),
126
- valueString = value.asString(context);
127
-
128
- context.debug(`...evaluated the '${variableString}' variable to the ${valueString} value.`);
129
-
130
- return value;
131
- }
132
-
133
104
  static name = "Variable";
134
105
 
135
106
  static fromSomeNode(someLoopNode, context) {
@@ -174,8 +145,7 @@ export default domAssigned(class Variable {
174
145
  const type = parameter.getType(),
175
146
  name = parameter.getName(),
176
147
  string = name, ///
177
- assignment = null,
178
- variable = new Variable(string, type, name, value, assignment);
148
+ variable = new Variable(string, type, name, value);
179
149
 
180
150
  return variable;
181
151
  }
@@ -185,8 +155,7 @@ export default domAssigned(class Variable {
185
155
  string = context.nodeAsString(node),
186
156
  name = nameFromVariableNode(variableNode),
187
157
  value = null,
188
- assignment = null,
189
- variable = new Variable(string, type, name, value, assignment);
158
+ variable = new Variable(string, type, name, value);
190
159
 
191
160
  return variable;
192
161
  }
@@ -207,37 +176,22 @@ export default domAssigned(class Variable {
207
176
  return variable;
208
177
  }
209
178
 
210
- static fromParameterAndAssignment(parameter, assignment, context) {
211
- const type = parameter.getType(),
212
- name = parameter.getName(),
213
- value = null,
214
- string = name, ///
215
- variable = new Variable(string, type, name, value, assignment);
216
-
217
- return variable;
218
- }
219
-
220
- static fromNamedParameterAndAssignment(namedParameter, assignment, context) {
179
+ static fromValueAndNamedParameter(value, namedParameter, context) {
221
180
  const asName = namedParameter.getAsName(),
222
181
  name = (asName !== null) ?
223
182
  asName : ///
224
- namedParameter.getName(),
183
+ namedParameter.getName(),
225
184
  type = namedParameter.getType(),
226
- value = null,
227
185
  string = name, ///
228
- variable = new Variable(string, type, name, value, assignment);
186
+ variable = new Variable(string, type, name, value);
229
187
 
230
188
  return variable;
231
189
  }
232
190
 
233
- static fromTypeVariableNodeAndAssignmentNode(type, variableNode, assignmentNode, context) {
234
- const { Assignment } = dom,
235
- node = variableNode, ///
236
- string = context.nodeAsString(node),
237
- name = nameFromVariableNode(variableNode),
238
- value = null,
239
- assignment = Assignment.fromAssignmentNode(assignmentNode, context),
240
- variable = new Variable(string, type, name, value, assignment);
191
+ static fromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context) {
192
+ const variableAssignmentVariableNode = variableAssignmentVariableNodeQuery(variableAssignmentNode),
193
+ variableNode = variableAssignmentVariableNode, ///
194
+ variable = variableFromVariableNode(variableNode, context);
241
195
 
242
196
  return variable;
243
197
  }
@@ -250,8 +204,7 @@ function variableFromVariableNode(variableNode, context) {
250
204
  type = null,
251
205
  name = nameFromVariableNode(variableNode),
252
206
  value = null,
253
- assignment = null,
254
- variable = new Variable(string, type, name, value, assignment);
207
+ variable = new Variable(string, type, name, value);
255
208
 
256
209
  return variable;
257
210
  }
@@ -263,3 +216,20 @@ function nameFromVariableNode(variableNode) {
263
216
 
264
217
  return name;
265
218
  }
219
+
220
+ /*
221
+
222
+ static fromNamedParameterAndAssignment(namedParameter, assignment, context) {
223
+ const asName = namedParameter.getAsName(),
224
+ name = (asName !== null) ?
225
+ asName : ///
226
+ namedParameter.getName(),
227
+ type = namedParameter.getType(),
228
+ value = null,
229
+ string = name, ///
230
+ variable = new Variable(string, type, name, value, assignment);
231
+
232
+ return variable;
233
+ }
234
+
235
+ */
package/src/index.js CHANGED
@@ -16,7 +16,6 @@ import Parameter from "./dom/parameter";
16
16
  import Parameters from "./dom/parameters";
17
17
  import NodesQuery from "./dom/query/nodes";
18
18
  import Comparison from "./dom/comparison";
19
- import Assignment from "./dom/assignment";
20
19
  import ReturnBlock from "./dom/block/return";
21
20
  import NegatedValue from "./dom/value/negated";
22
21
  import BitwiseValue from "./dom/value/bitwise";
@@ -24,13 +23,14 @@ import ProcedureCall from "./dom/procedureCall";
24
23
  import NamedParameter from "./dom/parameter/named";
25
24
  import BracketedValue from "./dom/value/bracketed";
26
25
  import ArrayAssigment from "./dom/assignment/array";
27
- import ReturnStatement from "./dom/returnStatement";
26
+ import ReturnStatement from "./dom/statement/return";
28
27
  import NamedParameters from "./dom/parameters/named";
29
28
  import ObjectAssignment from "./dom/assignment/object";
30
29
  import ConditionalBlocks from "./dom/conditionalBlocks";
31
30
  import AnonymousProcedure from "./dom/procedure/anonymous";
31
+ import VariableAssignment from "./dom/assignment/variable";
32
+ import VariableAssignments from "./dom/assignments/variable";
32
33
  import ProcedureDeclaration from "./dom/declaration/procedure";
33
- import VariablesDeclaration from "./dom/declaration/variables";
34
34
  import AnonymousProcedureCall from "./dom/procedureCall/anonymous";
35
35
 
36
36
  export { default as Values } from "./dom/values";