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.
Files changed (66) hide show
  1. package/README.md +43 -12
  2. package/lib/constants.js +5 -1
  3. package/lib/context/block.js +8 -8
  4. package/lib/dom/assignment/array.js +10 -6
  5. package/lib/dom/assignment/object.js +10 -6
  6. package/lib/dom/assignment/variable.js +3 -2
  7. package/lib/dom/assignments/variable.js +10 -6
  8. package/lib/dom/block/return.js +21 -5
  9. package/lib/dom/comparison.js +2 -14
  10. package/lib/dom/declaration/procedure.js +6 -2
  11. package/lib/dom/error.js +48 -3
  12. package/lib/dom/every.js +7 -3
  13. package/lib/dom/label.js +52 -7
  14. package/lib/dom/parameter/named.js +48 -3
  15. package/lib/dom/parameter.js +48 -4
  16. package/lib/dom/parameters/named.js +13 -9
  17. package/lib/dom/parameters.js +17 -27
  18. package/lib/dom/procedure.js +10 -6
  19. package/lib/dom/procedureCall.js +10 -6
  20. package/lib/dom/query/node.js +10 -6
  21. package/lib/dom/query/nodes.js +10 -6
  22. package/lib/dom/reduce.js +8 -4
  23. package/lib/dom/reference.js +55 -10
  24. package/lib/dom/some.js +7 -3
  25. package/lib/dom/statement/return.js +7 -3
  26. package/lib/dom/step.js +6 -2
  27. package/lib/dom/ternary.js +10 -6
  28. package/lib/dom/value/bitwise.js +10 -6
  29. package/lib/dom/value/bracketed.js +7 -3
  30. package/lib/dom/value/negated.js +10 -6
  31. package/lib/dom/value.js +35 -39
  32. package/lib/dom/values.js +5 -19
  33. package/lib/dom/variable.js +3 -3
  34. package/package.json +1 -1
  35. package/src/constants.js +1 -0
  36. package/src/context/block.js +8 -8
  37. package/src/dom/assignment/array.js +15 -8
  38. package/src/dom/assignment/object.js +15 -8
  39. package/src/dom/assignment/variable.js +2 -1
  40. package/src/dom/assignments/variable.js +16 -8
  41. package/src/dom/block/return.js +25 -4
  42. package/src/dom/comparison.js +1 -16
  43. package/src/dom/declaration/procedure.js +10 -4
  44. package/src/dom/error.js +12 -3
  45. package/src/dom/every.js +12 -6
  46. package/src/dom/label.js +20 -10
  47. package/src/dom/parameter/named.js +14 -6
  48. package/src/dom/parameter.js +12 -5
  49. package/src/dom/parameters/named.js +23 -16
  50. package/src/dom/parameters.js +32 -47
  51. package/src/dom/procedure.js +19 -15
  52. package/src/dom/procedureCall.js +15 -9
  53. package/src/dom/query/node.js +19 -12
  54. package/src/dom/query/nodes.js +19 -12
  55. package/src/dom/reduce.js +17 -14
  56. package/src/dom/reference.js +21 -15
  57. package/src/dom/some.js +12 -6
  58. package/src/dom/statement/return.js +13 -6
  59. package/src/dom/step.js +12 -6
  60. package/src/dom/ternary.js +21 -14
  61. package/src/dom/value/bitwise.js +19 -12
  62. package/src/dom/value/bracketed.js +12 -6
  63. package/src/dom/value/negated.js +16 -9
  64. package/src/dom/value.js +42 -47
  65. package/src/dom/values.js +5 -19
  66. package/src/dom/variable.js +6 -4
@@ -46,19 +46,25 @@ export default domAssigned(class BracketedValue {
46
46
  const valueBracketedValueNode = valueBracketedValueNodeQuery(valueNode);
47
47
 
48
48
  if (valueBracketedValueNode !== null) {
49
- const { Value } = dom,
50
- bracketedValueNode = valueBracketedValueNode, ///
51
- valueNode = valueNodeQuery(bracketedValueNode),
52
- value = Value.fromValueNode(valueNode, context),
53
- string = stringFromValue(value, context);
49
+ const bracketedValueNode = valueBracketedValueNode; ///
54
50
 
55
- bracketedValue = new BracketedValue(string, value);
51
+ bracketedValue = bracketedValueFromBracketedValueNode(bracketedValueNode, context);
56
52
  }
57
53
 
58
54
  return bracketedValue;
59
55
  }
60
56
  });
61
57
 
58
+ function bracketedValueFromBracketedValueNode(bracketedValueNode, context) {
59
+ const { Value, BracketedValue } = dom,
60
+ valueNode = valueNodeQuery(bracketedValueNode),
61
+ value = Value.fromValueNode(valueNode, context),
62
+ string = stringFromValue(value, context),
63
+ bracketedValue = new BracketedValue(string, value);
64
+
65
+ return bracketedValue;
66
+ }
67
+
62
68
  function stringFromValue(value, context) {
63
69
  const valueString = value.asString(context),
64
70
  string = `(${valueString})`;
@@ -8,7 +8,7 @@ import { domAssigned } from "../../dom";
8
8
  import { BOOLEAN_TYPE } from "../../types";
9
9
 
10
10
  const valueNodeQuery = nodeQuery("/negatedValue/value"),
11
- negatedValueNodeQuery = nodeQuery("/value/negatedValue");
11
+ valueNegatedValueNodeQuery = nodeQuery("/value/negatedValue");
12
12
 
13
13
  export default domAssigned(class NegatedValue {
14
14
  constructor(string, type, value) {
@@ -66,22 +66,29 @@ export default domAssigned(class NegatedValue {
66
66
  static fromValueNode(valueNode, context) {
67
67
  let negatedValue = null;
68
68
 
69
- const negatedValueNode = negatedValueNodeQuery(valueNode);
69
+ const valueNegatedValueNode = valueNegatedValueNodeQuery(valueNode);
70
70
 
71
- if (negatedValueNode !== null) {
72
- const { Value } = dom,
73
- type = BOOLEAN_TYPE,
74
- valueNode = valueNodeQuery(negatedValueNode),
75
- value = Value.fromValueNode(valueNode, context),
76
- string = stringFromValue(value, context);
71
+ if (valueNegatedValueNode !== null) {
72
+ const negatedValueNode = valueNegatedValueNode; ///
77
73
 
78
- negatedValue = new NegatedValue(string, type, value);
74
+ negatedValue = negatedValueFromNegatedValueNode(negatedValueNode, context);
79
75
  }
80
76
 
81
77
  return negatedValue;
82
78
  }
83
79
  });
84
80
 
81
+ function negatedValueFromNegatedValueNode(negatedValueNode, context) {
82
+ const { Value, NegatedValue } = dom,
83
+ valueNode = valueNodeQuery(negatedValueNode),
84
+ value = Value.fromValueNode(valueNode, context),
85
+ type = BOOLEAN_TYPE,
86
+ string = stringFromValue(value, context),
87
+ negatedValue = new NegatedValue(string, type, value);
88
+
89
+ return negatedValue;
90
+ }
91
+
85
92
  function stringFromValue(value, context) {
86
93
  const valueString = value.asString(context),
87
94
  string = `!${valueString}`;
package/src/dom/value.js CHANGED
@@ -15,14 +15,13 @@ const { match } = arrayUtilities;
15
15
  const reduceValueNodeQuery = nodeQuery("/reduce/value"),
16
16
  ternaryValueNodeQuery = nodeQuery("/ternary/value"),
17
17
  numberTerminalNodeQuery = nodeQuery("/value/@number"),
18
- conditionValueNodeQuery = nodeQuery("/condition/value"),
19
18
  primitiveTerminalNodeQuery = nodeQuery("/value/@primitive"),
20
19
  returnStatementValueNodeQuery = nodeQuery("/returnStatement/value"),
21
20
  stringLiteralTerminalNodeQuery = nodeQuery("/value/@string-literal"),
22
21
  variableAssignmentValueNodeQuery = nodeQuery("/variableAssignment/value");
23
22
 
24
23
  export default domAssigned(class Value {
25
- constructor(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall) {
24
+ constructor(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, returnBlock, procedureCall, negatedValue, bitwiseValue, bracketedValue) {
26
25
  this.node = node;
27
26
  this.nodes = nodes;
28
27
  this.number = number;
@@ -36,10 +35,11 @@ export default domAssigned(class Value {
36
35
  this.nodeQuery = nodeQuery;
37
36
  this.nodesQuery = nodesQuery;
38
37
  this.comparison = comparison;
38
+ this.returnBlock = returnBlock;
39
+ this.procedureCall = procedureCall;
39
40
  this.negatedValue = negatedValue;
40
41
  this.bitwiseValue = bitwiseValue;
41
42
  this.bracketedValue = bracketedValue;
42
- this.procedureCall = procedureCall;
43
43
  }
44
44
 
45
45
  getNode() {
@@ -94,6 +94,14 @@ export default domAssigned(class Value {
94
94
  return this.comparison;
95
95
  }
96
96
 
97
+ getReturnBlock() {
98
+ return this.returnBlock;
99
+ }
100
+
101
+ getProcedureCall() {
102
+ return this.procedureCall;
103
+ }
104
+
97
105
  getNegatedValue() {
98
106
  return this.negatedValue;
99
107
  }
@@ -106,10 +114,6 @@ export default domAssigned(class Value {
106
114
  return this.bracketedValue;
107
115
  }
108
116
 
109
- getProcedureCall() {
110
- return this.procedureCall;
111
- }
112
-
113
117
  getType() {
114
118
  let type;
115
119
 
@@ -141,14 +145,16 @@ export default domAssigned(class Value {
141
145
  type = this.nodesQuery.getType();
142
146
  } else if (this.comparison !== null) {
143
147
  type = this.comparison.getType();
148
+ } else if (this.returnBlock !== null) {
149
+ type = this.returnBlock.getType();
150
+ } else if (this.procedureCall !== null) {
151
+ type = this.procedureCall.getType();
144
152
  } else if (this.negatedValue !== null) {
145
153
  type = this.negatedValue.getType();
146
154
  } else if (this.bitwiseValue !== null) {
147
155
  type = this.bitwiseValue.getType();
148
156
  } else if (this.bracketedValue !== null) {
149
157
  type = this.bracketedValue.getType();
150
- } else if (this.procedureCall !== null) {
151
- type = this.procedureCall.getType();
152
158
  }
153
159
 
154
160
  return type;
@@ -185,14 +191,16 @@ export default domAssigned(class Value {
185
191
  string = this.nodesQuery.getString();
186
192
  } else if (this.comparison !== null) {
187
193
  string = this.comparison.getString();
194
+ } else if (this.returnBlock !== null) {
195
+ string = this.returnBlock.getString();
196
+ } else if (this.procedureCall !== null) {
197
+ string = this.procedureCall.getString();
188
198
  } else if (this.negatedValue !== null) {
189
199
  string = this.negatedValue.getString();
190
200
  } else if (this.bitwiseValue !== null) {
191
201
  string = this.bitwiseValue.getString();
192
202
  } else if (this.bracketedValue !== null) {
193
203
  string = this.bracketedValue.getString();
194
- } else if (this.procedureCall !== null) {
195
- string = this.procedureCall.getString();
196
204
  }
197
205
 
198
206
  return string;
@@ -225,14 +233,16 @@ export default domAssigned(class Value {
225
233
  value = this.nodesQuery.evaluate(context);
226
234
  } else if (this.comparison !== null) {
227
235
  value = this.comparison.evaluate(context);
236
+ } else if (this.returnBlock !== null) {
237
+ value = this.returnBlock.evaluate(context);
238
+ } else if (this.procedureCall !== null) {
239
+ value = this.procedureCall.evaluate(context);
228
240
  } else if (this.negatedValue !== null) {
229
241
  value = this.negatedValue.evaluate(context);
230
242
  } else if (this.bitwiseValue !== null) {
231
243
  value = this.bitwiseValue.evaluate(context);
232
244
  } else if (this.bracketedValue !== null) {
233
245
  value = this.bracketedValue.evaluate(context);
234
- } else if (this.procedureCall !== null) {
235
- value = this.procedureCall.evaluate(context);
236
246
  }
237
247
 
238
248
  return value;
@@ -305,11 +315,12 @@ export default domAssigned(class Value {
305
315
  nodeQuery = null,
306
316
  nodesQuery = null,
307
317
  comparison = null,
318
+ returnBlock = null,
319
+ procedureCall = null,
308
320
  negatedValue = null,
309
321
  bitwiseValue = null,
310
322
  bracketedValue = null,
311
- procedureCall = null,
312
- value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
323
+ value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, returnBlock, procedureCall, negatedValue, bitwiseValue, bracketedValue);
313
324
 
314
325
  return value;
315
326
  }
@@ -327,11 +338,12 @@ export default domAssigned(class Value {
327
338
  nodeQuery = null,
328
339
  nodesQuery = null,
329
340
  comparison = null,
341
+ returnBlock = null,
342
+ procedureCall = null,
330
343
  negatedValue = null,
331
344
  bitwiseValue = null,
332
345
  bracketedValue = null,
333
- procedureCall = null,
334
- value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
346
+ value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, returnBlock, procedureCall, negatedValue, bitwiseValue, bracketedValue);
335
347
 
336
348
  return value;
337
349
  }
@@ -349,11 +361,12 @@ export default domAssigned(class Value {
349
361
  nodeQuery = null,
350
362
  nodesQuery = null,
351
363
  comparison = null,
364
+ returnBlock = null,
365
+ procedureCall = null,
352
366
  negatedValue = null,
353
367
  bitwiseValue = null,
354
368
  bracketedValue = null,
355
- procedureCall = null,
356
- value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
369
+ value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, returnBlock, procedureCall, negatedValue, bitwiseValue, bracketedValue);
357
370
 
358
371
  return value;
359
372
  }
@@ -371,11 +384,12 @@ export default domAssigned(class Value {
371
384
  nodeQuery = null,
372
385
  nodesQuery = null,
373
386
  comparison = null,
387
+ returnBlock = null,
388
+ procedureCall = null,
374
389
  negatedValue = null,
375
390
  bitwiseValue = null,
376
391
  bracketedValue = null,
377
- procedureCall = null,
378
- value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
392
+ value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, returnBlock, procedureCall, negatedValue, bitwiseValue, bracketedValue);
379
393
 
380
394
  return value;
381
395
  }
@@ -402,30 +416,10 @@ export default domAssigned(class Value {
402
416
  return value;
403
417
  }
404
418
 
405
- static fromConditionNode(conditionNode, context) {
406
- let value = null;
407
-
408
- const conditionValueNode = conditionValueNodeQuery(conditionNode);
409
-
410
- if (conditionValueNode !== null) {
411
- const valueNode = conditionValueNode; ///
412
-
413
- value = valueFromValueNode(valueNode, context);
414
- }
415
-
416
- return value;
417
- }
418
-
419
419
  static fromReturnStatementNode(returnStatementNode, context) {
420
- let value = null;
421
-
422
- const returnStatementValueNode = returnStatementValueNodeQuery(returnStatementNode);
423
-
424
- if (returnStatementValueNode !== null) {
425
- const valueNode = returnStatementValueNode; ///
426
-
427
- value = valueFromValueNode(valueNode, context);
428
- }
420
+ const returnStatementValueNode = returnStatementValueNodeQuery(returnStatementNode),
421
+ valueNode = returnStatementValueNode, ///
422
+ value = valueFromValueNode(valueNode, context);
429
423
 
430
424
  return value;
431
425
  }
@@ -512,7 +506,7 @@ function booleanAsString(boolean) {
512
506
  }
513
507
 
514
508
  function valueFromValueNode(valueNode, context) {
515
- const { Some, Every, Reduce, Value, Ternary, Variable, NodeQuery, NodesQuery, Comparison, NegatedValue, BitwiseValue, BracketedValue, ProcedureCall } = dom,
509
+ const { Some, Every, Reduce, Value, Ternary, Variable, NodeQuery, NodesQuery, Comparison, ReturnBlock, ProcedureCall, NegatedValue, BitwiseValue, BracketedValue } = dom,
516
510
  node = nodeFromValueNode(valueNode, context),
517
511
  nodes = nodesFromValueNode(valueNode, context),
518
512
  number = numberFromValueNode(valueNode, context),
@@ -526,11 +520,12 @@ function valueFromValueNode(valueNode, context) {
526
520
  nodeQuery = NodeQuery.fromValueNode(valueNode, context),
527
521
  nodesQuery = NodesQuery.fromValueNode(valueNode, context),
528
522
  comparison = Comparison.fromValueNode(valueNode, context),
523
+ returnBlock = ReturnBlock.fromValueNode(valueNode, context),
524
+ procedureCall = ProcedureCall.fromValueNode(valueNode, context),
529
525
  negatedValue = NegatedValue.fromValueNode(valueNode, context),
530
526
  bitwiseValue = BitwiseValue.fromValueNode(valueNode, context),
531
527
  bracketedValue = BracketedValue.fromValueNode(valueNode, context),
532
- procedureCall = ProcedureCall.fromValueNode(valueNode, context),
533
- value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, negatedValue, bitwiseValue, bracketedValue, procedureCall);
528
+ value = new Value(node, nodes, number, string, boolean, some, every, reduce, ternary, variable, nodeQuery, nodesQuery, comparison, returnBlock, procedureCall, negatedValue, bitwiseValue, bracketedValue);
534
529
 
535
530
  return value;
536
531
  }
package/src/dom/values.js CHANGED
@@ -5,7 +5,7 @@ import dom from "../dom";
5
5
  import { domAssigned } from "../dom";
6
6
  import { nodeQuery, nodesQuery } from "../utilities/query";
7
7
 
8
- const valuesNodeQuery = nodeQuery("/value/procedureCall/values"),
8
+ const procedureCallValuesNodeQuery = nodeQuery("/procedureCall/values"),
9
9
  valueNodesQuery = nodesQuery("/values/value");
10
10
 
11
11
  export default domAssigned(class Values {
@@ -80,24 +80,10 @@ export default domAssigned(class Values {
80
80
  return values;
81
81
  }
82
82
 
83
- static fromValuesNode(valuesNode, context) {
84
- let values = null;
85
-
86
- if (valuesNode !== null) {
87
- values = valuesFromValuesNode(valuesNode, context);
88
- }
89
-
90
- return values;
91
- }
92
-
93
- static fromValueNode(valueNode, context) {
94
- let values = null;
95
-
96
- const valuesNode = valuesNodeQuery(valueNode);
97
-
98
- if (valuesNode !== null) {
99
- values = valuesFromValuesNode(valuesNode, context);
100
- }
83
+ static fromProcedureCallNode(procedureCallNode, context) {
84
+ const procedureCallValuesNode = procedureCallValuesNodeQuery(procedureCallNode),
85
+ valuesNode = procedureCallValuesNode, ///
86
+ values = valuesFromValuesNode(valuesNode, context);
101
87
 
102
88
  return values;
103
89
  }
@@ -52,8 +52,9 @@ export default domAssigned(class Variable {
52
52
 
53
53
  context.trace(`Evaluating the '${variableString}' variable...`);
54
54
 
55
- const variableName = this.name, ///
56
- variablePresent = context.isVariablePresentByVariableName(variableName);
55
+ const nested = true,
56
+ variableName = this.name, ///
57
+ variablePresent = context.isVariablePresentByVariableName(variableName, nested);
57
58
 
58
59
  if (!variablePresent) {
59
60
  const message = `The '${variableString}; variable is not present.'`,
@@ -72,10 +73,11 @@ export default domAssigned(class Variable {
72
73
  }
73
74
 
74
75
  assign(value, context) {
75
- const valueString = value.asString(context), ///
76
+ const nested = false,
77
+ valueString = value.asString(context), ///
76
78
  variableName = this.name, ///
77
79
  variableString = this.string, ///
78
- variablePresent = context.isVariablePresentByVariableName(variableName);
80
+ variablePresent = context.isVariablePresentByVariableName(variableName, nested);
79
81
 
80
82
  context.trace(`Assigning the ${valueString} value to the '${variableString}' variable...`);
81
83