occam-furtle 2.0.340 → 3.0.1

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 (118) hide show
  1. package/example.js +6319 -2036
  2. package/lib/context/block.js +81 -41
  3. package/lib/context/file/furtle.js +260 -0
  4. package/lib/context/file/nominal.js +956 -0
  5. package/lib/context/file.js +146 -271
  6. package/lib/context/release.js +675 -0
  7. package/lib/context.js +210 -0
  8. package/lib/element/assignment/array.js +117 -15
  9. package/lib/element/assignment/object.js +119 -17
  10. package/lib/element/assignment/variable.js +121 -14
  11. package/lib/element/assignments/variable.js +120 -13
  12. package/lib/element/declaration/procedure.js +120 -12
  13. package/lib/element/error.js +118 -13
  14. package/lib/element/every.js +116 -13
  15. package/lib/element/expression.js +134 -68
  16. package/lib/element/label.js +119 -12
  17. package/lib/element/nodeQuery.js +120 -18
  18. package/lib/element/nodesQuery.js +120 -18
  19. package/lib/element/parameter/named.js +117 -15
  20. package/lib/element/parameter.js +116 -14
  21. package/lib/element/parameters/named.js +116 -14
  22. package/lib/element/parameters.js +115 -13
  23. package/lib/element/primitive.js +115 -63
  24. package/lib/element/procedure/anonymous.js +118 -16
  25. package/lib/element/procedure.js +118 -16
  26. package/lib/element/procedureCall.js +116 -14
  27. package/lib/element/reduce.js +116 -14
  28. package/lib/element/reference.js +119 -12
  29. package/lib/element/returnBlock.js +116 -14
  30. package/lib/element/some.js +117 -15
  31. package/lib/element/statement/return.js +120 -13
  32. package/lib/element/step.js +121 -14
  33. package/lib/element/term/bracketed.js +120 -13
  34. package/lib/element/term/comparison.js +117 -15
  35. package/lib/element/term/logical.js +119 -17
  36. package/lib/element/term/negated.js +119 -15
  37. package/lib/element/term.js +131 -45
  38. package/lib/element/terms.js +125 -14
  39. package/lib/element/ternary.js +118 -16
  40. package/lib/element/variable.js +127 -19
  41. package/lib/element.js +1 -8
  42. package/lib/index.js +9 -1
  43. package/lib/log.js +13 -12
  44. package/lib/metaTypeNames.js +26 -0
  45. package/lib/metaTypes.js +66 -0
  46. package/lib/node/expression.js +8 -15
  47. package/lib/nodeProperties.js +17 -21
  48. package/lib/nodeProperty.js +4 -7
  49. package/lib/utilities/context.js +8 -37
  50. package/lib/utilities/customGrammar.js +49 -0
  51. package/lib/utilities/element.js +110 -60
  52. package/lib/utilities/lineIndex.js +26 -0
  53. package/lib/utilities/primitive.js +14 -5
  54. package/lib/utilities/string.js +41 -37
  55. package/lib/utilities/term.js +14 -5
  56. package/lib/utilities/terms.js +7 -3
  57. package/package.json +2 -2
  58. package/src/context/block.js +20 -32
  59. package/src/context/file/furtle.js +141 -0
  60. package/src/context/file/nominal.js +946 -0
  61. package/src/context/file.js +32 -209
  62. package/src/context/release.js +653 -0
  63. package/src/context.js +74 -0
  64. package/src/element/assignment/array.js +8 -9
  65. package/src/element/assignment/object.js +12 -11
  66. package/src/element/assignment/variable.js +7 -8
  67. package/src/element/assignments/variable.js +7 -8
  68. package/src/element/declaration/procedure.js +6 -6
  69. package/src/element/error.js +4 -6
  70. package/src/element/every.js +5 -6
  71. package/src/element/expression.js +13 -33
  72. package/src/element/label.js +6 -7
  73. package/src/element/nodeQuery.js +12 -14
  74. package/src/element/nodesQuery.js +12 -14
  75. package/src/element/parameter/named.js +7 -8
  76. package/src/element/parameter.js +6 -8
  77. package/src/element/parameters/named.js +8 -9
  78. package/src/element/parameters.js +6 -8
  79. package/src/element/primitive.js +5 -57
  80. package/src/element/procedure/anonymous.js +7 -9
  81. package/src/element/procedure.js +6 -8
  82. package/src/element/procedureCall.js +6 -8
  83. package/src/element/reduce.js +5 -7
  84. package/src/element/reference.js +6 -7
  85. package/src/element/returnBlock.js +5 -7
  86. package/src/element/some.js +9 -9
  87. package/src/element/statement/return.js +7 -8
  88. package/src/element/step.js +6 -7
  89. package/src/element/term/bracketed.js +7 -8
  90. package/src/element/term/comparison.js +6 -8
  91. package/src/element/term/logical.js +12 -12
  92. package/src/element/term/negated.js +11 -9
  93. package/src/element/term.js +16 -17
  94. package/src/element/terms.js +16 -9
  95. package/src/element/ternary.js +8 -9
  96. package/src/element/variable.js +24 -14
  97. package/src/element.js +0 -8
  98. package/src/index.js +2 -0
  99. package/src/log.js +11 -11
  100. package/src/metaTypeNames.js +5 -0
  101. package/src/metaTypes.js +71 -0
  102. package/src/node/expression.js +9 -17
  103. package/src/nodeProperties.js +23 -32
  104. package/src/nodeProperty.js +5 -10
  105. package/src/utilities/context.js +7 -45
  106. package/src/utilities/customGrammar.js +40 -0
  107. package/src/utilities/element.js +181 -94
  108. package/src/utilities/lineIndex.js +21 -0
  109. package/src/utilities/primitive.js +22 -5
  110. package/src/utilities/string.js +42 -36
  111. package/src/utilities/term.js +22 -5
  112. package/src/utilities/terms.js +12 -4
  113. package/test/helpers/furtle.js +1 -1
  114. package/test/helpers/nominal.js +2 -3
  115. package/test/main.js +4 -3
  116. package/test/context/file.js +0 -127
  117. package/test/context/release.js +0 -151
  118. package/test/helpers/constants.js +0 -17
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
+ import Element from "../element";
5
6
  import elements from "../elements";
6
7
  import nullNode from "../nullNode";
7
8
 
@@ -10,17 +11,14 @@ import { NODE_TYPE, NODES_TYPE, STRING_TYPE, NUMBER_TYPE, BOOLEAN_TYPE } from "
10
11
 
11
12
  const { match } = arrayUtilities;
12
13
 
13
- export default define(class Primitive {
14
- constructor(string, type, value) {
15
- this.string = string;
14
+ export default define(class Primitive extends Element {
15
+ constructor(context, string, node, type, value) {
16
+ super(context, string, node)
17
+
16
18
  this.type = type;
17
19
  this.value = value;
18
20
  }
19
21
 
20
- getString() {
21
- return this.string;
22
- }
23
-
24
22
  getType() {
25
23
  return this.type;
26
24
  }
@@ -29,56 +27,6 @@ export default define(class Primitive {
29
27
  return this.value;
30
28
  }
31
29
 
32
- getNode() {
33
- let node = null;
34
-
35
- if (this.type === NODE_TYPE) {
36
- node = this.value; ///
37
- }
38
-
39
- return node;
40
- }
41
-
42
- getNodes() {
43
- let nodes = null;
44
-
45
- if (this.type === NODES_TYPE) {
46
- nodes = this.value; ///
47
- }
48
-
49
- return nodes;
50
- }
51
-
52
- getNumber() {
53
- let number = null;
54
-
55
- if (this.type === NUMBER_TYPE) {
56
- number = this.value; ///
57
- }
58
-
59
- return number;
60
- }
61
-
62
- getBoolean() {
63
- let boolean = null;
64
-
65
- if (this.type === BOOLEAN_TYPE) {
66
- boolean = this.value; ///
67
- }
68
-
69
- return boolean;
70
- }
71
-
72
- getStringLiteral() {
73
- let stringLiteral = null;
74
-
75
- if (this.type === STRING_TYPE) {
76
- stringLiteral = this.value; ///
77
- }
78
-
79
- return stringLiteral;
80
- }
81
-
82
30
  evaluate(context) {
83
31
  const { Term } = elements,
84
32
  primitive = this,
@@ -1,28 +1,26 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../../element";
3
4
  import Exception from "../../exception";
4
5
 
5
6
  import { define } from "../../elements";
6
7
  import { variablesFromTermsAndParameters } from "../procedure";
7
8
 
8
- export default define(class AnonymousProcedure {
9
- constructor(string, type, parameters, returnBlock) {
10
- this.string = string;
9
+ export default define(class AnonymousProcedure extends Element {
10
+ constructor(context, string, node, type, parameters, returnBlock) {
11
+ super(context, string, node)
12
+
11
13
  this.type = type;
12
14
  this.parameters = parameters;
13
15
  this.returnBlock = returnBlock;
14
16
  }
15
17
 
16
- getString() {
17
- return this.string;
18
- }
19
-
20
18
  getType() {
21
19
  return this.type;
22
20
  }
23
21
 
24
22
  getParameters() {
25
- return this.paramters;
23
+ return this.parameters;
26
24
  }
27
25
 
28
26
  getReturnBlock() {
@@ -30,7 +28,7 @@ export default define(class AnonymousProcedure {
30
28
  }
31
29
 
32
30
  call(terms, context) {
33
- const anonymousProcedureString = this.string; ///
31
+ const anonymousProcedureString = this.getString(); ///
34
32
 
35
33
  context.trace(`Calling the '${anonymousProcedureString}' anonymous procedure...`);
36
34
 
@@ -1,24 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
  import Exception from "../exception";
5
6
 
6
7
  import { define } from "../elements";
7
8
  import { BOOLEAN_TYPE } from "../types";
8
9
 
9
- export default define(class Procedure {
10
- constructor(string, type, label, parameters, returnBlock) {
11
- this.string = string;
10
+ export default define(class Procedure extends Element {
11
+ constructor(context, string, node, type, label, parameters, returnBlock) {
12
+ super(context, string, node)
13
+
12
14
  this.type = type;
13
15
  this.label = label;
14
16
  this.parameters = parameters;
15
17
  this.returnBlock = returnBlock;
16
18
  }
17
19
 
18
- getString() {
19
- return this.string;
20
- }
21
-
22
20
  getType() {
23
21
  return this.type;
24
22
  }
@@ -49,7 +47,7 @@ export default define(class Procedure {
49
47
  matchName(name) { return this.label.matchName(name); }
50
48
 
51
49
  call(terms, context) {
52
- const procedureString = this.string; ///
50
+ const procedureString = this.getString(); ///
53
51
 
54
52
  context.trace(`Calling the '${procedureString}' procedure...`);
55
53
 
@@ -1,20 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import Exception from "../exception";
4
5
 
5
6
  import { define } from "../elements";
6
7
 
7
- export default define(class ProcedureCall {
8
- constructor(string, reference, terms) {
9
- this.string = string;
8
+ export default define(class ProcedureCall extends Element {
9
+ constructor(context, string, node, reference, terms) {
10
+ super(context, string, node)
11
+
10
12
  this.reference = reference;
11
13
  this.terms = terms;
12
14
  }
13
15
 
14
- getString() {
15
- return this.string;
16
- }
17
-
18
16
  getReference() {
19
17
  return this.reference;
20
18
  }
@@ -26,7 +24,7 @@ export default define(class ProcedureCall {
26
24
  getName() { return this.reference.getName(); }
27
25
 
28
26
  evaluate(context) {
29
- const procedureCallString = this.string; ///
27
+ const procedureCallString = this.getString(); ///
30
28
 
31
29
  context.trace(`Evaluating the '${procedureCallString}' procedure call...`);
32
30
 
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
  import Exception from "../exception";
5
6
 
@@ -7,18 +8,15 @@ import { define } from "../elements";
7
8
  import { NODES_TYPE } from "../types";
8
9
  import { termFromNode } from "../utilities/term";
9
10
 
10
- export default define(class Reduce {
11
- constructor(string, variable, initialExpression, anonymousProcedure) {
12
- this.string = string;
11
+ export default define(class Reduce extends Element {
12
+ constructor(context, string, node, variable, initialExpression, anonymousProcedure) {
13
+ super(context, string, node)
14
+
13
15
  this.variable = variable;
14
16
  this.initialExpression = initialExpression;
15
17
  this.anonymousProcedure = anonymousProcedure;
16
18
  }
17
19
 
18
- getString() {
19
- return this.string;
20
- }
21
-
22
20
  getVariable() {
23
21
  return this.variable;
24
22
  }
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
 
5
- export default define(class Reference {
6
- constructor(string, name) {
7
- this.string = string;
8
- this.name = name;
9
- }
7
+ export default define(class Reference extends Element {
8
+ constructor(context, string, node, name) {
9
+ super(context, string, node)
10
10
 
11
- getString() {
12
- return this.string;
11
+ this.name = name;
13
12
  }
14
13
 
15
14
  getName() {
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import Exception from "../exception";
4
5
  import BlockContext from "../context/block";
5
6
 
6
7
  import { define } from "../elements";
7
8
 
8
- export default define(class ReturnBlock {
9
- constructor(string, steps, nonsensical, returnStatement) {
10
- this.string = string;
9
+ export default define(class ReturnBlock extends Element {
10
+ constructor(context, string, node, steps, nonsensical, returnStatement) {
11
+ super(context, string, node)
12
+
11
13
  this.steps = steps;
12
14
  this.nonsensical = nonsensical;
13
15
  this.returnStatement = returnStatement;
14
16
  }
15
17
 
16
- getString() {
17
- return this.string;
18
- }
19
-
20
18
  getSteps() {
21
19
  return this.steps;
22
20
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
  import Exception from "../exception";
5
6
 
@@ -7,17 +8,14 @@ import { define } from "../elements";
7
8
  import { NODES_TYPE, BOOLEAN_TYPE } from "../types";
8
9
  import { termFromNode, termFromBoolean } from "../utilities/term";
9
10
 
10
- export default define(class Some {
11
- constructor(string, variable, anonymousProcedure) {
12
- this.string = string;
11
+ export default define(class Some extends Element {
12
+ constructor(context, string, node, variable, anonymousProcedure) {
13
+ super(context, string, node)
14
+
13
15
  this.variable = variable;
14
16
  this.anonymousProcedure = anonymousProcedure;
15
17
  }
16
18
 
17
- getString() {
18
- return this.string;
19
- }
20
-
21
19
  getVariable() {
22
20
  return this.variable;
23
21
  }
@@ -45,7 +43,8 @@ export default define(class Some {
45
43
  throw exception;
46
44
  }
47
45
 
48
- const nodes = term.getNodes(),
46
+ const primitiveValue = term.getPrimitiveValue(),
47
+ nodes = primitiveValue, ///
49
48
  boolean = nodes.some((node) => {
50
49
  let term;
51
50
 
@@ -66,7 +65,8 @@ export default define(class Some {
66
65
  throw exception;
67
66
  }
68
67
 
69
- const boolean = term.getBoolean();
68
+ const primitiveValue = term.getPrimitiveValue(),
69
+ boolean = primitiveValue; ///
70
70
 
71
71
  return boolean;
72
72
  });
@@ -2,14 +2,13 @@
2
2
 
3
3
  import { define } from "../../elements";
4
4
 
5
- export default define(class ReturnStatement {
6
- constructor(string, term) {
7
- this.string = string;
8
- this.term = term;
9
- }
5
+ import Element from "../../element";
10
6
 
11
- getString() {
12
- return this.string;
7
+ export default define(class ReturnStatement extends Element {
8
+ constructor(context, string, node, term) {
9
+ super(context, string, node)
10
+
11
+ this.term = term;
13
12
  }
14
13
 
15
14
  getExpression() {
@@ -19,7 +18,7 @@ export default define(class ReturnStatement {
19
18
  evaluate(context) {
20
19
  let term;
21
20
 
22
- const returnStatementString = this.string; ///
21
+ const returnStatementString = this.getString(); ///
23
22
 
24
23
  context.trace(`Evaluating the '${returnStatementString}' return statement...`);
25
24
 
@@ -1,19 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
 
5
- export default define(class Step {
6
- constructor(string, arrayAssignment, objectAssigment, variablessAssignment) {
7
- this.string = string;
7
+ export default define(class Step extends Element {
8
+ constructor(context, string, node, arrayAssignment, objectAssigment, variablessAssignment) {
9
+ super(context, string, node)
10
+
8
11
  this.arrayAssignment = arrayAssignment;
9
12
  this.objectAssigment = objectAssigment;
10
13
  this.variablessAssignment = variablessAssignment;
11
14
  }
12
15
 
13
- getString() {
14
- return this.string;
15
- }
16
-
17
16
  getArrayAssignment() {
18
17
  return this.arrayAssignment;
19
18
  }
@@ -2,14 +2,13 @@
2
2
 
3
3
  import { define } from "../../elements";
4
4
 
5
- export default define(class BracketedTerm {
6
- constructor(string, term) {
7
- this.string = string;
8
- this.term = term;
9
- }
5
+ import Element from "../../element";
10
6
 
11
- getString() {
12
- return this.string;
7
+ export default define(class BracketedTerm extends Element {
8
+ constructor(context, string, node, term) {
9
+ super(context, string, node)
10
+
11
+ this.term = term;
13
12
  }
14
13
 
15
14
  getTerm() {
@@ -21,7 +20,7 @@ export default define(class BracketedTerm {
21
20
  evaluate(context) {
22
21
  let term;
23
22
 
24
- const bracketedTermString = this.string; ///
23
+ const bracketedTermString = this.getString(); ///
25
24
 
26
25
  context.trace(`Evaluating the '${bracketedTermString}' bracketed term...`);
27
26
 
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../../element";
3
4
  import Exception from "../../exception";
4
5
 
5
6
  import { define } from "../../elements";
6
7
  import { termFromBoolean } from "../../utilities/term";
7
8
 
8
- export default define(class ComparisonTerm {
9
- constructor(string, negated, leftTerm, rightTerm) {
10
- this.string = string;
9
+ export default define(class ComparisonTerm extends Element {
10
+ constructor(context, string, node, negated, leftTerm, rightTerm) {
11
+ super(context, string, node)
12
+
11
13
  this.negated = negated;
12
14
  this.leftTerm = leftTerm;
13
15
  this.rightTerm = rightTerm;
14
16
  }
15
17
 
16
- getString() {
17
- return this.string;
18
- }
19
-
20
18
  isNegated() {
21
19
  return this.negated;
22
20
  }
@@ -32,7 +30,7 @@ export default define(class ComparisonTerm {
32
30
  evaluate(context) {
33
31
  let term;
34
32
 
35
- const comparisonTermString = this.string; ///
33
+ const comparisonTermString = this.getString(); ///
36
34
 
37
35
  context.trace(`Evaluating the '${comparisonTermString}' comparison term...`);
38
36
 
@@ -1,24 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../../element";
3
4
  import Exception from "../../exception";
4
5
 
5
6
  import { define } from "../../elements";
6
7
  import { BOOLEAN_TYPE } from "../../types";
7
8
  import { termFromBoolean } from "../../utilities/term";
8
9
 
9
- export default define(class LogicalTerm {
10
- constructor(string, type, disjunction, leftTerm, rightTerm) {
11
- this.string = string;
10
+ export default define(class LogicalTerm extends Element {
11
+ constructor(context, string, node, type, disjunction, leftTerm, rightTerm) {
12
+ super(context, string, node)
13
+
12
14
  this.type = type;
13
15
  this.disjunction = disjunction;
14
16
  this.leftTerm = leftTerm;
15
17
  this.rightTerm = rightTerm;
16
18
  }
17
19
 
18
- getString() {
19
- return this.string;
20
- }
21
-
22
20
  getType() {
23
21
  return this.type;
24
22
  }
@@ -38,7 +36,7 @@ export default define(class LogicalTerm {
38
36
  evaluate(context) {
39
37
  let term;
40
38
 
41
- const logicalTermString = this.string; ///
39
+ const logicalTermString = this.getString(); ///
42
40
 
43
41
  context.trace(`Evaluating the '${logicalTermString}' logical term...`);
44
42
 
@@ -63,11 +61,13 @@ export default define(class LogicalTerm {
63
61
  throw exception;
64
62
  }
65
63
 
66
- const leftTermBoolean = leftTerm.getBoolean(),
67
- rightTermBoolean = rightTerm.getBoolean(),
64
+ const leftTermPrimitiveValue = leftTerm.getPrimitiveValue(),
65
+ rightTermPrimitiveValue = rightTerm.getPrimitiveValue(),
66
+ leftBoolean =leftTermPrimitiveValue, ///
67
+ rightBoolean = rightTermPrimitiveValue, ///
68
68
  boolean = this.disjunction ?
69
- (leftTermBoolean || rightTermBoolean) :
70
- (leftTermBoolean && rightTermBoolean);
69
+ (leftBoolean || rightBoolean) :
70
+ (leftBoolean && rightBoolean);
71
71
 
72
72
  term = termFromBoolean(boolean, context);
73
73
 
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../../element";
3
4
  import Exception from "../../exception";
4
5
 
5
6
  import { define } from "../../elements";
6
7
  import { BOOLEAN_TYPE } from "../../types";
7
8
  import { termFromBoolean } from "../../utilities/term";
8
9
 
9
- export default define(class NegatedTerm {
10
- constructor(string, type, term) {
11
- this.string = string;
10
+ export default define(class NegatedTerm extends Element {
11
+ constructor(context, string, node, type, term) {
12
+ super(context, string, node)
13
+
12
14
  this.type = type;
13
15
  this.term = term;
14
16
  }
15
17
 
16
- getString() {
17
- return this.string;
18
- }
19
-
20
18
  getType() {
21
19
  return this.type;
22
20
  }
@@ -28,7 +26,7 @@ export default define(class NegatedTerm {
28
26
  evaluate(context) {
29
27
  let term;
30
28
 
31
- const negatedTermString = this.string; ///
29
+ const negatedTermString = this.getString(); ///
32
30
 
33
31
  context.trace(`Evaluating the '${negatedTermString}' negated term...`);
34
32
 
@@ -44,7 +42,11 @@ export default define(class NegatedTerm {
44
42
  throw exception;
45
43
  }
46
44
 
47
- let boolean = term.getBoolean();
45
+ let boolean;
46
+
47
+ const primitiveValue = term.getPrimitiveValue();
48
+
49
+ boolean = primitiveValue; ///
48
50
 
49
51
  boolean = !boolean;
50
52
 
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
 
5
- export default define(class Term {
6
- constructor(string, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm) {
7
- this.string = string;
7
+ export default define(class Term extends Element {
8
+ constructor(context, string, node, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm) {
9
+ super(context, string, node)
10
+
8
11
  this.variable = variable;
9
12
  this.primitive = primitive;
10
13
  this.negatedTerm = negatedTerm;
@@ -13,10 +16,6 @@ export default define(class Term {
13
16
  this.comparisonTerm = comparisonTerm;
14
17
  }
15
18
 
16
- getString() {
17
- return this.string;
18
- }
19
-
20
19
  getVariable() {
21
20
  return this.variable;
22
21
  }
@@ -41,15 +40,11 @@ export default define(class Term {
41
40
  return this.comparisonTerm;
42
41
  }
43
42
 
44
- getNode() { return this.primitive.getNode(); }
45
-
46
- getNodes() { return this.primitive.getNodes(); }
43
+ getPrimitiveValue() {
44
+ const primitiveValue = this.primitive.getValue();
47
45
 
48
- getNumber() { return this.primitive.getNumber(); }
49
-
50
- getBoolean() { return this.primitive.getBoolean(); }
51
-
52
- getStringLiteral() { return this.primitive.getStringLiteral(); }
46
+ return primitiveValue;
47
+ }
53
48
 
54
49
  getType() {
55
50
  let type;
@@ -122,12 +117,16 @@ export default define(class Term {
122
117
  static fromPrimitive(primitive, context) {
123
118
  const primitiveString = primitive.getString(),
124
119
  string = primitiveString, ///
120
+ node = null,
125
121
  variable = null,
126
122
  negatedTerm = null,
127
123
  logicalTerm = null,
128
124
  bracketedTerm = null,
129
- comparisonTerm = null,
130
- term = new Term(string, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm);
125
+ comparisonTerm = null;
126
+
127
+ context = null;
128
+
129
+ const term = new Term(context, string, node, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm);
131
130
 
132
131
  return term;
133
132
  }
@@ -1,16 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
  import { termsStringFromTermsArray } from "../utilities/string";
5
7
 
6
- export default define(class Terms {
7
- constructor(string, array) {
8
- this.string = string;
9
- this.array = array;
10
- }
8
+ export default define(class Terms extends Element {
9
+ constructor(context, string, node, array) {
10
+ super(context, string, node)
11
11
 
12
- getString() {
13
- return this.string;
12
+ this.array = array;
14
13
  }
15
14
 
16
15
  getArray() {
@@ -46,7 +45,11 @@ export default define(class Terms {
46
45
  termsString = termsStringFromTermsArray(termsArray, context),
47
46
  string = termsString, ///
48
47
  array = termsArray, ///
49
- terms = new Terms(string, array);
48
+ node = null;
49
+
50
+ context = null;
51
+
52
+ const terms = new Terms(context, string, node, array);
50
53
 
51
54
  return terms;
52
55
  }
@@ -60,7 +63,11 @@ export default define(class Terms {
60
63
  termsString = termsStringFromTermsArray(termsArray, context),
61
64
  string = termsString, ///
62
65
  array = termsArray, ///
63
- terms = new Terms(string, array);
66
+ node = null;
67
+
68
+ context = null;
69
+
70
+ const terms = new Terms(context, string, node, array);
64
71
 
65
72
  return terms;
66
73
  }