occam-furtle 2.0.330 → 2.0.331

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 (43) hide show
  1. package/lib/element/expression/comparison.js +110 -0
  2. package/lib/element/expression.js +13 -13
  3. package/lib/element/term/bracketed.js +85 -0
  4. package/lib/element/term/comparison.js +110 -0
  5. package/lib/element/term/logical.js +118 -0
  6. package/lib/element/term/negated.js +102 -0
  7. package/lib/element/term.js +54 -3
  8. package/lib/element/ternary.js +7 -7
  9. package/lib/node/expression/comparison.js +163 -0
  10. package/lib/node/expression.js +8 -8
  11. package/lib/node/term/bracketed.js +116 -0
  12. package/lib/node/term/comparison.js +163 -0
  13. package/lib/node/term/logical.js +175 -0
  14. package/lib/node/term/negated.js +116 -0
  15. package/lib/node/term.js +39 -3
  16. package/lib/node/ternary.js +11 -18
  17. package/lib/nonTerminalNodeMap.js +10 -6
  18. package/lib/preamble.js +9 -5
  19. package/lib/ruleNames.js +21 -5
  20. package/lib/utilities/element.js +30 -30
  21. package/package.json +1 -1
  22. package/src/element/{comparison.js → expression/comparison.js} +8 -8
  23. package/src/element/expression.js +10 -10
  24. package/src/element/term/bracketed.js +36 -0
  25. package/src/element/term/comparison.js +69 -0
  26. package/src/element/term/logical.js +80 -0
  27. package/src/element/term/negated.js +59 -0
  28. package/src/element/term.js +46 -3
  29. package/src/element/ternary.js +5 -5
  30. package/src/node/{comparison.js → expression/comparison.js} +7 -7
  31. package/src/node/expression.js +9 -9
  32. package/src/node/term/bracketed.js +16 -0
  33. package/src/node/term/comparison.js +68 -0
  34. package/src/node/term/logical.js +80 -0
  35. package/src/node/term/negated.js +16 -0
  36. package/src/node/term.js +51 -2
  37. package/src/node/ternary.js +13 -20
  38. package/src/nonTerminalNodeMap.js +17 -5
  39. package/src/preamble.js +6 -2
  40. package/src/ruleNames.js +7 -2
  41. package/src/utilities/element.js +42 -42
  42. package/lib/element/comparison.js +0 -110
  43. package/lib/node/comparison.js +0 -163
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ import { arrayUtilities } from "necessary";
4
+
5
+ import TermNode from "../../node/term";
6
+
7
+ import { TERM_RULE_NAME } from "../../ruleNames";
8
+ import { SPECIAL_TOKEN_TYPE } from "../../tokenTypes";
9
+ import { CONJUNCTION_OPERATOR, DISJUNCTION_OPERATOR } from "../../constants";
10
+
11
+ const { first, last } = arrayUtilities;
12
+
13
+ export default class LogicalTermNode extends TermNode {
14
+ getOperator() {
15
+ let operator = null;
16
+
17
+ const tokenType = SPECIAL_TOKEN_TYPE;
18
+
19
+ this.someTerminalNode((terminalNode) => {
20
+ const content = terminalNode.getContent();
21
+
22
+ operator = content; ///
23
+
24
+ return true;
25
+ }, tokenType);
26
+
27
+ return operator;
28
+ }
29
+
30
+ isConjection() {
31
+ const operator = this.getOperator(),
32
+ conjection = (operator === CONJUNCTION_OPERATOR);
33
+
34
+ return conjection;
35
+ }
36
+
37
+ isDisjunction() {
38
+ const operator = this.getOperator(),
39
+ disjunction = (operator === DISJUNCTION_OPERATOR);
40
+
41
+ return disjunction;
42
+ }
43
+
44
+ getTermNodes() {
45
+ const ruleName = TERM_RULE_NAME,
46
+ termNodes = this.getNodesByRuleName(ruleName);
47
+
48
+ return termNodes;
49
+ }
50
+
51
+ getLeftTermNode() {
52
+ const firstExpresionNode = this.getFirstTermNode(),
53
+ leftTermNode = firstExpresionNode; ///
54
+
55
+ return leftTermNode;
56
+ }
57
+
58
+ getRightTermNode() {
59
+ const lastTermNode = this.getLastTermNode(),
60
+ rightTermNode = lastTermNode; ///
61
+
62
+ return rightTermNode;
63
+ }
64
+
65
+ getLastTermNode() {
66
+ const termNodes = this.getTermNodes(),
67
+ lastTermNode = last(termNodes);
68
+
69
+ return lastTermNode;
70
+ }
71
+
72
+ getFirstTermNode() {
73
+ const termNodes = this.getTermNodes(),
74
+ firstTermNode = first(termNodes);
75
+
76
+ return firstTermNode;
77
+ }
78
+
79
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TermNode.fromRuleNameChildNodesOpacityAndPrecedence(LogicalTermNode, ruleName, childNodes, opacity, precedence); }
80
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import TermNode from "../../node/term";
4
+
5
+ import { TERM_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class NegatedTermNode extends TermNode {
8
+ getTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return termNode;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TermNode.fromRuleNameChildNodesOpacityAndPrecedence(NegatedTermNode, ruleName, childNodes, opacity, precedence); }
16
+ }
package/src/node/term.js CHANGED
@@ -2,7 +2,12 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
- import { VARIABLE_RULE_NAME, PRIMITIVE_RULE_NAME } from "../ruleNames";
5
+ import { VARIABLE_RULE_NAME,
6
+ PRIMITIVE_RULE_NAME,
7
+ NEGATED_TERM_RULE_NAME,
8
+ LOGICAL_TERM_RULE_NAME,
9
+ BRACKETED_TERM_RULE_NAME,
10
+ COMPARISON_TERM_RULE_NAME } from "../ruleNames";
6
11
 
7
12
  export default class TermNode extends NonTerminalNode {
8
13
  getVariableNode() {
@@ -19,5 +24,49 @@ export default class TermNode extends NonTerminalNode {
19
24
  return primitiveNode;
20
25
  }
21
26
 
22
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermNode, ruleName, childNodes, opacity, precedence); }
27
+ getNegatedTermNode() {
28
+ const ruleName = NEGATED_TERM_RULE_NAME,
29
+ negatedTermNode = this.getNodeByRuleName(ruleName);
30
+
31
+ return negatedTermNode;
32
+ }
33
+
34
+ getLogicalTermNode() {
35
+ const ruleName = LOGICAL_TERM_RULE_NAME,
36
+ logicalTermRuleName = this.getNodeByRuleName(ruleName);
37
+
38
+ return logicalTermRuleName;
39
+ }
40
+
41
+ getBracketedTermNode() {
42
+ const ruleName = BRACKETED_TERM_RULE_NAME,
43
+ bracketedTermRuleName = this.getNodeByRuleName(ruleName);
44
+
45
+ return bracketedTermRuleName;
46
+ }
47
+
48
+ getComparisonTermNode() {
49
+ const ruleName = COMPARISON_TERM_RULE_NAME,
50
+ comparisonNode = this.getNodeByRuleName(ruleName);
51
+
52
+ return comparisonNode;
53
+ }
54
+
55
+ static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) {
56
+ if (precedence === undefined) {
57
+ precedence = opacity; ///
58
+
59
+ opacity = childNodes; ///
60
+
61
+ childNodes = ruleName; ///
62
+
63
+ ruleName = Class; ///
64
+
65
+ Class = TermNode;
66
+ }
67
+
68
+ const termNode = NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence);
69
+
70
+ return termNode;
71
+ }
23
72
  }
@@ -4,11 +4,18 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import NonTerminalNode from "../nonTerminalNode";
6
6
 
7
- import { EXPRESSION_RULE_NAME } from "../ruleNames";
7
+ import { TERM_RULE_NAME, EXPRESSION_RULE_NAME } from "../ruleNames";
8
8
 
9
- const { first, second, third } = arrayUtilities;
9
+ const { first, second } = arrayUtilities;
10
10
 
11
11
  export default class TernaryNode extends NonTerminalNode {
12
+ getTermNode() {
13
+ const ruleName = TERM_RULE_NAME,
14
+ termNode = this.getNodeByRuleName(ruleName);
15
+
16
+ return termNode;
17
+ }
18
+
12
19
  getExpressionNodes() {
13
20
  const ruleName = EXPRESSION_RULE_NAME,
14
21
  expressionNodes = this.getNodesByRuleName(ruleName);
@@ -16,23 +23,16 @@ export default class TernaryNode extends NonTerminalNode {
16
23
  return expressionNodes;
17
24
  }
18
25
 
19
- getExpressionNode() {
20
- const firstExpressionNode = this.getFirstExpressionNode(),
21
- expressionNode = firstExpressionNode; ///
22
-
23
- return expressionNode;
24
- }
25
-
26
26
  getIfExpressionNode() {
27
- const secondExpressionNode = this.getSecondExpressionNode(),
28
- ifExpressionNode = secondExpressionNode; ///
27
+ const firstExpressionNode = this.getFirstExpressionNode(),
28
+ ifExpressionNode = firstExpressionNode; ///
29
29
 
30
30
  return ifExpressionNode;
31
31
  }
32
32
 
33
33
  getElseExpressionNode() {
34
- const thirdExpressionNode = this.getThirdExpressionNode(),
35
- elseExpressionNode = thirdExpressionNode; ///
34
+ const secondExpressionNode = this.getSecondExpressionNode(),
35
+ elseExpressionNode = secondExpressionNode; ///
36
36
 
37
37
  return elseExpressionNode;
38
38
  }
@@ -51,12 +51,5 @@ export default class TernaryNode extends NonTerminalNode {
51
51
  return secondExpressionNode;
52
52
  }
53
53
 
54
- getThirdExpressionNode() {
55
- const expressionNodes = this.getExpressionNodes(),
56
- thirdExpressionNode = third(expressionNodes);
57
-
58
- return thirdExpressionNode;
59
- }
60
-
61
54
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TernaryNode, ruleName, childNodes, opacity, precedence); }
62
55
  }
@@ -16,22 +16,26 @@ import ReferenceNode from "./node/reference";
16
16
  import ParameterNode from "./node/parameter";
17
17
  import NodeQueryNode from "./node/nodeQuery";
18
18
  import ExpressionNode from "./node/expression";
19
- import ComparisonNode from "./node/comparison";
20
19
  import ParametersNode from "./node/parameters";
21
20
  import NodesQueryNode from "./node/nodesQuery";
22
21
  import ReturnBlockNode from "./node/returnBlock";
22
+ import LogicalTermNode from "./node/term/logical";
23
+ import NegatedTermNode from "./node/term/negated";
24
+ import BracketedTermNode from "./node/term/bracketed";
25
+ import ComparisonTermNode from "./node/term/comparison";
23
26
  import ProcedureCallNode from "./node/procedureCall";
24
27
  import NamedParameterNode from "./node/parameter/named";
25
28
  import NamedParametersNode from "./node/parameters/named";
26
29
  import ReturnStatementNode from "./node/statement/return";
27
30
  import ArrayAssignmentNode from "./node/assignment/array";
28
31
  import ObjectAssignmentNode from "./node/assignment/object";
29
- import LogicalExpresionNode from "./node/expression/logical";
32
+ import LogicalExpressionNode from "./node/expression/logical";
30
33
  import NegatedExpressionNode from "./node/expression/negated";
31
34
  import AnonymousProcedureNode from "./node/procedure/anoymous";
32
35
  import VariableAssignmentNode from "./node/assignment/variable";
33
36
  import VariableAssignmentsNode from "./node/assignments/variable";
34
37
  import BracketedExpressionNode from "./node/expression/bracketed";
38
+ import ComparisonExpressionNode from "./node/expression/comparison";
35
39
  import ProcedureDeclarationNode from "./node/declaration/procedure";
36
40
 
37
41
  import { STEP_RULE_NAME,
@@ -50,11 +54,14 @@ import { STEP_RULE_NAME,
50
54
  PARAMETER_RULE_NAME,
51
55
  NODE_QUERY_RULE_NAME,
52
56
  EXPRESSION_RULE_NAME,
53
- COMPARISON_RULE_NAME,
54
57
  PARAMETERS_RULE_NAME,
55
58
  NODES_QUERY_RULE_NAME,
56
59
  RETURN_BLOCK_RULE_NAME,
60
+ LOGICAL_TERM_RULE_NAME,
61
+ NEGATED_TERM_RULE_NAME,
62
+ BRACKETED_TERM_RULE_NAME,
57
63
  PROCEDURE_CALL_RULE_NAME,
64
+ COMPARISON_TERM_RULE_NAME,
58
65
  NAMED_PARAMETER_RULE_NAME,
59
66
  NAMED_PARAMETERS_RULE_NAME,
60
67
  RETURN_STATEMENT_RULE_NAME,
@@ -66,6 +73,7 @@ import { STEP_RULE_NAME,
66
73
  ANONYMOUS_PROCEDURE_RULE_NAME,
67
74
  VARIABLE_ASSIGNMENTS_RULE_NAME,
68
75
  BRACKETED_EXPRESSION_RULE_NAME,
76
+ COMPARISON_EXPRESSION_RULE_NAME,
69
77
  PROCEDURE_DECLARATION_RULE_NAME } from "./ruleNames";
70
78
 
71
79
  const NonTerminalNodeMap = {
@@ -85,22 +93,26 @@ const NonTerminalNodeMap = {
85
93
  [PARAMETER_RULE_NAME]: ParameterNode,
86
94
  [NODE_QUERY_RULE_NAME]: NodeQueryNode,
87
95
  [EXPRESSION_RULE_NAME]: ExpressionNode,
88
- [COMPARISON_RULE_NAME]: ComparisonNode,
89
96
  [PARAMETERS_RULE_NAME]: ParametersNode,
90
97
  [NODES_QUERY_RULE_NAME]: NodesQueryNode,
91
98
  [RETURN_BLOCK_RULE_NAME]: ReturnBlockNode,
99
+ [LOGICAL_TERM_RULE_NAME]: LogicalTermNode,
100
+ [NEGATED_TERM_RULE_NAME]: NegatedTermNode,
92
101
  [PROCEDURE_CALL_RULE_NAME]: ProcedureCallNode,
102
+ [BRACKETED_TERM_RULE_NAME]: BracketedTermNode,
103
+ [COMPARISON_TERM_RULE_NAME]: ComparisonTermNode,
93
104
  [NAMED_PARAMETER_RULE_NAME]: NamedParameterNode,
94
105
  [NAMED_PARAMETERS_RULE_NAME]: NamedParametersNode,
95
106
  [RETURN_STATEMENT_RULE_NAME]: ReturnStatementNode,
96
107
  [ARRAY_ASSIGNMENT_RULE_NAME]: ArrayAssignmentNode,
97
108
  [OBJECT_ASSIGNMENT_RULE_NAME]: ObjectAssignmentNode,
98
- [LOGICAL_EXPRESSION_RULE_NAME]: LogicalExpresionNode,
109
+ [LOGICAL_EXPRESSION_RULE_NAME]: LogicalExpressionNode,
99
110
  [NEGATED_EXPRESSION_RULE_NAME]: NegatedExpressionNode,
100
111
  [ANONYMOUS_PROCEDURE_RULE_NAME]: AnonymousProcedureNode,
101
112
  [VARIABLE_ASSIGNMENT_RULE_NAME]: VariableAssignmentNode,
102
113
  [VARIABLE_ASSIGNMENTS_RULE_NAME]: VariableAssignmentsNode,
103
114
  [BRACKETED_EXPRESSION_RULE_NAME]: BracketedExpressionNode,
115
+ [COMPARISON_EXPRESSION_RULE_NAME]: ComparisonExpressionNode,
104
116
  [PROCEDURE_DECLARATION_RULE_NAME]: ProcedureDeclarationNode
105
117
  };
106
118
 
package/src/preamble.js CHANGED
@@ -17,10 +17,13 @@ import NodeQuery from "./element/nodeQuery";
17
17
  import Parameter from "./element/parameter";
18
18
  import Parameters from "./element/parameters";
19
19
  import NodesQuery from "./element/nodesQuery";
20
- import Comparison from "./element/comparison";
21
20
  import Expression from "./element/expression";
22
21
  import ReturnBlock from "./element/returnBlock";
22
+ import NegatedTerm from "./element/term/negated";
23
+ import LogicalTerm from "./element/term/logical";
24
+ import BracketedTerm from "./element/term/bracketed";
23
25
  import ProcedureCall from "./element/procedureCall";
26
+ import ComparisonTerm from "./element/term/comparison";
24
27
  import NamedParameter from "./element/parameter/named";
25
28
  import ArrayAssigment from "./element/assignment/array";
26
29
  import ReturnStatement from "./element/statement/return";
@@ -30,6 +33,7 @@ import NegatedExpression from "./element/expression/negated";
30
33
  import LogicalExpression from "./element/expression/logical";
31
34
  import AnonymousProcedure from "./element/procedure/anonymous";
32
35
  import VariableAssignment from "./element/assignment/variable";
33
- import BracketedExpression from "./element/expression/bracketed";
34
36
  import VariableAssignments from "./element/assignments/variable";
37
+ import BracketedExpression from "./element/expression/bracketed";
38
+ import ComparisonExpression from "./element/expression/comparison";
35
39
  import ProcedureDeclaration from "./element/declaration/procedure";
package/src/ruleNames.js CHANGED
@@ -16,11 +16,14 @@ export const REFERENCE_RULE_NAME = "reference";
16
16
  export const PARAMETER_RULE_NAME = "parameter";
17
17
  export const NODE_QUERY_RULE_NAME = "nodeQuery";
18
18
  export const EXPRESSION_RULE_NAME = "expression";
19
- export const COMPARISON_RULE_NAME = "comparison";
20
19
  export const PARAMETERS_RULE_NAME = "parameters";
21
20
  export const NODES_QUERY_RULE_NAME = "nodesQuery";
22
21
  export const RETURN_BLOCK_RULE_NAME = "returnBlock";
22
+ export const LOGICAL_TERM_RULE_NAME = "logicalTerm";
23
+ export const NEGATED_TERM_RULE_NAME = "negatedTerm";
24
+ export const BRACKETED_TERM_RULE_NAME = "bracketedTerm";
23
25
  export const PROCEDURE_CALL_RULE_NAME = "procedureCall";
26
+ export const COMPARISON_TERM_RULE_NAME = "comparisonTerm";
24
27
  export const NAMED_PARAMETER_RULE_NAME = "namedParameter";
25
28
  export const NAMED_PARAMETERS_RULE_NAME = "namedParameters";
26
29
  export const RETURN_STATEMENT_RULE_NAME = "returnStatement";
@@ -30,6 +33,8 @@ export const LOGICAL_EXPRESSION_RULE_NAME = "logicalExpression";
30
33
  export const NEGATED_EXPRESSION_RULE_NAME = "negatedExpression";
31
34
  export const VARIABLE_ASSIGNMENT_RULE_NAME = "variableAssignment";
32
35
  export const ANONYMOUS_PROCEDURE_RULE_NAME = "anonymousProcedure";
33
- export const VARIABLE_ASSIGNMENTS_RULE_NAME = "variableAssignments";
34
36
  export const BRACKETED_EXPRESSION_RULE_NAME = "bracketedExpression";
37
+ export const VARIABLE_ASSIGNMENTS_RULE_NAME = "variableAssignments";
35
38
  export const PROCEDURE_DECLARATION_RULE_NAME = "procedureDeclaration";
39
+ export const COMPARISON_EXPRESSION_RULE_NAME = "comparisonExpression";
40
+
@@ -31,11 +31,11 @@ export function stepFromStepNode(stepNode, context) {
31
31
 
32
32
  export function someFromSomeNode(someNode, context) {
33
33
  const { Some } = elements,
34
- variable = variableFromSomeNode(someNode, context),
35
- anonymousProcedure = anonymousProcedureFromSomeNode(someNode, context),
36
- someString = someStringFromVariableAndAnonymousProcedure(variable, anonymousProcedure),
37
- string = someString, ///
38
- some = new Some(string, variable, anonymousProcedure);
34
+ variable = variableFromSomeNode(someNode, context),
35
+ anonymousProcedure = anonymousProcedureFromSomeNode(someNode, context),
36
+ someString = someStringFromVariableAndAnonymousProcedure(variable, anonymousProcedure),
37
+ string = someString, ///
38
+ some = new Some(string, variable, anonymousProcedure);
39
39
 
40
40
  return some;
41
41
  }
@@ -192,18 +192,6 @@ export function nodesQueryFromNodesQueryNode(nodesQueryNode, context) {
192
192
  return nodesQuery;
193
193
  }
194
194
 
195
- export function comparisonFromComparisonNode(comparisonNode, context) {
196
- const { Comparison } = elements,
197
- node = comparisonNode, ///
198
- string = context.nodeAsString(node),
199
- negated = negatedFromComparisonNode(comparisonNode, context),
200
- leftExpression = leftExpressionFromCompzrisonNode(comparisonNode, context),
201
- rightExpression = rightExpressionFromCompzrisonNode(comparisonNode, context),
202
- comparison = new Comparison(string, negated, leftExpression, rightExpression);
203
-
204
- return comparison;
205
- }
206
-
207
195
  export function parametersFromParametersNode(parametersNode, context) {
208
196
  const { Parameters } = elements,
209
197
  node = parametersNode, ///
@@ -225,12 +213,12 @@ export function expressionFromExpressionNode(expressionNode, context) {
225
213
  ternary = ternaryFromExpressionNode(expressionNode, context),
226
214
  nodeQuery = nodeQueryFromExpressionNode(expressionNode, context),
227
215
  nodesQuery = nodesQueryFromExpressionNode(expressionNode, context),
228
- comparison = comparisonFromExpressionNode(expressionNode, context),
229
216
  returnBlock = returnBlockFromExpressionNode(expressionNode, context),
230
217
  procedureCall = procedureCallFromExpressionNode(expressionNode, context),
231
218
  negatedExpression = negatedExpressionFromExpressionNode(expressionNode, context),
232
219
  logicalExpression = logicalExpressionFromExpressionNode(expressionNode, context),
233
220
  bracketedExpression = bracketedExpressionFromExpressionNode(expressionNode, context),
221
+ comparisonExpression = comparisonExpressionFromExpressionNode(expressionNode, context),
234
222
  properties = [
235
223
  some,
236
224
  every,
@@ -239,7 +227,7 @@ export function expressionFromExpressionNode(expressionNode, context) {
239
227
  variable,
240
228
  nodeQuery,
241
229
  nodesQuery,
242
- comparison,
230
+ comparisonExpression,
243
231
  returnBlock,
244
232
  procedureCall,
245
233
  negatedExpression,
@@ -248,7 +236,7 @@ export function expressionFromExpressionNode(expressionNode, context) {
248
236
  ],
249
237
  expressionString = expressionStringFromPrimitiveAndProperties(primitive, properties, context),
250
238
  string = expressionString, ///
251
- expression = new Expression(string, variable, primitive, some, every, reduce, ternary, nodeQuery, nodesQuery, comparison, returnBlock, procedureCall, negatedExpression, logicalExpression, bracketedExpression);
239
+ expression = new Expression(string, variable, primitive, some, every, reduce, ternary, nodeQuery, nodesQuery, returnBlock, procedureCall, negatedExpression, logicalExpression, bracketedExpression, comparisonExpression);
252
240
 
253
241
  return expression;
254
242
  }
@@ -394,6 +382,18 @@ export function procedureDeclarationFromProcedureDeclarationNode(procedureDeclar
394
382
  return procedureDeclaration;
395
383
  }
396
384
 
385
+ export function comparisonExpressionFromComparisonExpressionNode(comparisonExpressionNode, context) {
386
+ const { ComparisonExpression } = elements,
387
+ node = comparisonExpressionNode, ///
388
+ string = context.nodeAsString(node),
389
+ negated = negatedFromComparisonExpressionNode(comparisonExpressionNode, context),
390
+ leftExpression = leftExpressionFromCompzrisonNode(comparisonExpressionNode, context),
391
+ rightExpression = rightExpressionFromCompzrisonNode(comparisonExpressionNode, context),
392
+ comparisonExpression = new ComparisonExpression(string, negated, leftExpression, rightExpression);
393
+
394
+ return comparisonExpression;
395
+ }
396
+
397
397
  export function nameFromLabelNode(labelNode, context) {
398
398
  const name = labelNode.getName();
399
399
 
@@ -595,12 +595,6 @@ export function ternaryFromExpressionNode(expressionNode, context) {
595
595
  return ternary;
596
596
  }
597
597
 
598
- export function negatedFromComparisonNode(comparisonNode, context) {
599
- const negated = comparisonNode.isNegated();
600
-
601
- return negated;
602
- }
603
-
604
598
  export function expressionFromVariableNode(variableNode, context) {
605
599
  const expression = null;
606
600
 
@@ -725,18 +719,6 @@ export function nodesQueryFromExpressionNode(expressionNode, context) {
725
719
  return nodesQuery;
726
720
  }
727
721
 
728
- export function comparisonFromExpressionNode(expressionNOde, context) {
729
- let comparison = null;
730
-
731
- const comparisonNode = expressionNOde.getComparisonNode();
732
-
733
- if (comparisonNode !== null) {
734
- comparison = comparisonFromComparisonNode(comparisonNode, context);
735
- }
736
-
737
- return comparison;
738
- }
739
-
740
722
  export function elseExpressionFromTernaryNode(ternaryNode, context) {
741
723
  const elseExpressionNode = ternaryNode.getElseExpressionNode(),
742
724
  elseExpression = expressionFromExpressionNode(elseExpressionNode, context);
@@ -857,8 +839,8 @@ export function anonymousProcedureFromReduceNode(reduceNode, context) {
857
839
  return anonymousProcedure;
858
840
  }
859
841
 
860
- export function leftExpressionFromCompzrisonNode(comparisonNode, context) {
861
- const leftExpressionNode = comparisonNode.getLeftExpressionNode(),
842
+ export function leftExpressionFromCompzrisonNode(comparisonExpressionNode, context) {
843
+ const leftExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
862
844
  leftExpression = expressionFromExpressionNode(leftExpressionNode, context);
863
845
 
864
846
  return leftExpression;
@@ -883,8 +865,8 @@ export function expressionFromTypeAndVariableNode(type, variableNode, context) {
883
865
  return expression;
884
866
  }
885
867
 
886
- export function rightExpressionFromCompzrisonNode(comparisonNode, context) {
887
- const rightExpressionNode = comparisonNode.getLeftExpressionNode(),
868
+ export function rightExpressionFromCompzrisonNode(comparisonExpressionNode, context) {
869
+ const rightExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
888
870
  rightExpression = expressionFromExpressionNode(rightExpressionNode, context);
889
871
 
890
872
  return rightExpression;
@@ -935,6 +917,12 @@ export function logicalExpressionFromExpressionNode(expressionNode, context) {
935
917
  return logicalExpression;
936
918
  }
937
919
 
920
+ export function negatedFromComparisonExpressionNode(comparisonExpressionNode, context) {
921
+ const negated = comparisonExpressionNode.isNegated();
922
+
923
+ return negated;
924
+ }
925
+
938
926
  export function expressionFromNegatedExpressionNode(negatedExpressionNode, context) {
939
927
  const expressionNode = negatedExpressionNode.getExpressionNode(),
940
928
  expression = expressionFromExpressionNode(expressionNode, context);
@@ -1001,6 +989,18 @@ export function procedureFromProcedureDeclarationNode(procedureDeclarationNode,
1001
989
  return procedure;
1002
990
  }
1003
991
 
992
+ export function comparisonExpressionFromExpressionNode(expressionNOde, context) {
993
+ let comparisonExpression = null;
994
+
995
+ const comparisonExpressionNode = expressionNOde.getComparisonExpressionNode();
996
+
997
+ if (comparisonExpressionNode !== null) {
998
+ comparisonExpression = comparisonExpressionFromComparisonExpressionNode(comparisonExpressionNode, context);
999
+ }
1000
+
1001
+ return comparisonExpression;
1002
+ }
1003
+
1004
1004
  export function parametersFromProcedureDeclarationNode(procedureDeclarationNode, context) {
1005
1005
  const parametersNode = procedureDeclarationNode.getParametersNode(),
1006
1006
  parameters = parametersFromParametersNode(parametersNode, context);
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _exception = /*#__PURE__*/ _interop_require_default(require("../exception"));
12
- var _elements = require("../elements");
13
- var _term = require("../utilities/term");
14
- function _class_call_check(instance, Constructor) {
15
- if (!(instance instanceof Constructor)) {
16
- throw new TypeError("Cannot call a class as a function");
17
- }
18
- }
19
- function _defineProperties(target, props) {
20
- for(var i = 0; i < props.length; i++){
21
- var descriptor = props[i];
22
- descriptor.enumerable = descriptor.enumerable || false;
23
- descriptor.configurable = true;
24
- if ("value" in descriptor) descriptor.writable = true;
25
- Object.defineProperty(target, descriptor.key, descriptor);
26
- }
27
- }
28
- function _create_class(Constructor, protoProps, staticProps) {
29
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
- if (staticProps) _defineProperties(Constructor, staticProps);
31
- return Constructor;
32
- }
33
- function _define_property(obj, key, value) {
34
- if (key in obj) {
35
- Object.defineProperty(obj, key, {
36
- value: value,
37
- enumerable: true,
38
- configurable: true,
39
- writable: true
40
- });
41
- } else {
42
- obj[key] = value;
43
- }
44
- return obj;
45
- }
46
- function _interop_require_default(obj) {
47
- return obj && obj.__esModule ? obj : {
48
- default: obj
49
- };
50
- }
51
- var _Comparison;
52
- var _default = (0, _elements.define)((_Comparison = /*#__PURE__*/ function() {
53
- function Comparison(string, negated, leftExpression, rightExpression) {
54
- _class_call_check(this, Comparison);
55
- this.string = string;
56
- this.negated = negated;
57
- this.leftExpression = leftExpression;
58
- this.rightExpression = rightExpression;
59
- }
60
- _create_class(Comparison, [
61
- {
62
- key: "getString",
63
- value: function getString() {
64
- return this.string;
65
- }
66
- },
67
- {
68
- key: "isNegated",
69
- value: function isNegated() {
70
- return this.negated;
71
- }
72
- },
73
- {
74
- key: "getLeftExpression",
75
- value: function getLeftExpression() {
76
- return this.leftExpression;
77
- }
78
- },
79
- {
80
- key: "getRightExpression",
81
- value: function getRightExpression() {
82
- return this.rightExpression;
83
- }
84
- },
85
- {
86
- key: "evaluate",
87
- value: function evaluate(context) {
88
- var term;
89
- var comparisonString = this.string; ///
90
- context.trace("Evaluating the '".concat(comparisonString, "' comparison..."));
91
- var leftTerm = this.leftExpression.evaluate(context), rightTerm = this.rightExpression.evaluate(context), leftTermType = leftTerm.getType(), rightTermType = rightTerm.getType();
92
- if (leftTermType !== rightTermType) {
93
- var leftTermString = leftTerm.getString(), rightTermString = rightTerm.getString(), message = "The '".concat(leftTermString, "' left expression's type is '").concat(leftTermType, "' whereas the '").concat(rightTermString, "' right expression's type is '").concat(rightTermType, "'."), exception = _exception.default.fromMessage(message);
94
- throw exception;
95
- }
96
- var leftTermEqualToRightTerm = leftTerm.isEqualTo(rightTerm);
97
- var boolean = leftTermEqualToRightTerm; ///
98
- if (this.negated) {
99
- boolean = !boolean; ///
100
- }
101
- term = (0, _term.termFromBoolean)(boolean, context);
102
- context.debug("...evaluated the '".concat(comparisonString, "' comparison."));
103
- return term;
104
- }
105
- }
106
- ]);
107
- return Comparison;
108
- }(), _define_property(_Comparison, "name", "Comparison"), _Comparison));
109
-
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbXBhcmlzb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tQm9vbGVhbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvdGVybVwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tcGFyaXNvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbmVnYXRlZCwgbGVmdEV4cHJlc3Npb24sIHJpZ2h0RXhwcmVzc2lvbikge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubmVnYXRlZCA9IG5lZ2F0ZWQ7XG4gICAgdGhpcy5sZWZ0RXhwcmVzc2lvbiA9IGxlZnRFeHByZXNzaW9uO1xuICAgIHRoaXMucmlnaHRFeHByZXNzaW9uID0gcmlnaHRFeHByZXNzaW9uO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGlzTmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGVkO1xuICB9XG5cbiAgZ2V0TGVmdEV4cHJlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdEV4cHJlc3Npb247XG4gIH1cblxuICBnZXRSaWdodEV4cHJlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRFeHByZXNzaW9uO1xuICB9XG5cbiAgZXZhbHVhdGUoY29udGV4dCkge1xuICAgIGxldCB0ZXJtO1xuXG4gICAgY29uc3QgY29tcGFyaXNvblN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEV2YWx1YXRpbmcgdGhlICcke2NvbXBhcmlzb25TdHJpbmd9JyBjb21wYXJpc29uLi4uYCk7XG5cbiAgICBjb25zdCBsZWZ0VGVybSA9IHRoaXMubGVmdEV4cHJlc3Npb24uZXZhbHVhdGUoY29udGV4dCksXG4gICAgICAgICAgcmlnaHRUZXJtID0gdGhpcy5yaWdodEV4cHJlc3Npb24uZXZhbHVhdGUoY29udGV4dCksXG4gICAgICAgICAgbGVmdFRlcm1UeXBlID0gbGVmdFRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHJpZ2h0VGVybVR5cGUgPSByaWdodFRlcm0uZ2V0VHlwZSgpO1xuXG4gICAgaWYgKGxlZnRUZXJtVHlwZSAhPT0gcmlnaHRUZXJtVHlwZSkge1xuICAgICAgY29uc3QgbGVmdFRlcm1TdHJpbmcgPSBsZWZ0VGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHJpZ2h0VGVybVN0cmluZyA9IHJpZ2h0VGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVGhlICcke2xlZnRUZXJtU3RyaW5nfScgbGVmdCBleHByZXNzaW9uJ3MgdHlwZSBpcyAnJHtsZWZ0VGVybVR5cGV9JyB3aGVyZWFzIHRoZSAnJHtyaWdodFRlcm1TdHJpbmd9JyByaWdodCBleHByZXNzaW9uJ3MgdHlwZSBpcyAnJHtyaWdodFRlcm1UeXBlfScuYCxcbiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbi5mcm9tTWVzc2FnZShtZXNzYWdlKTtcblxuICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGxlZnRUZXJtRXF1YWxUb1JpZ2h0VGVybSA9IGxlZnRUZXJtLmlzRXF1YWxUbyhyaWdodFRlcm0pO1xuXG4gICAgbGV0IGJvb2xlYW4gPSBsZWZ0VGVybUVxdWFsVG9SaWdodFRlcm07IC8vL1xuXG4gICAgaWYgKHRoaXMubmVnYXRlZCkge1xuICAgICAgYm9vbGVhbiA9ICFib29sZWFuOyAvLy9cbiAgICB9XG5cbiAgICB0ZXJtID0gdGVybUZyb21Cb29sZWFuKGJvb2xlYW4sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uZXZhbHVhdGVkIHRoZSAnJHtjb21wYXJpc29uU3RyaW5nfScgY29tcGFyaXNvbi5gKTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbXBhcmlzb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkNvbXBhcmlzb24iLCJzdHJpbmciLCJuZWdhdGVkIiwibGVmdEV4cHJlc3Npb24iLCJyaWdodEV4cHJlc3Npb24iLCJnZXRTdHJpbmciLCJpc05lZ2F0ZWQiLCJnZXRMZWZ0RXhwcmVzc2lvbiIsImdldFJpZ2h0RXhwcmVzc2lvbiIsImV2YWx1YXRlIiwiY29udGV4dCIsInRlcm0iLCJjb21wYXJpc29uU3RyaW5nIiwidHJhY2UiLCJsZWZ0VGVybSIsInJpZ2h0VGVybSIsImxlZnRUZXJtVHlwZSIsImdldFR5cGUiLCJyaWdodFRlcm1UeXBlIiwibGVmdFRlcm1TdHJpbmciLCJyaWdodFRlcm1TdHJpbmciLCJtZXNzYWdlIiwiZXhjZXB0aW9uIiwiRXhjZXB0aW9uIiwiZnJvbU1lc3NhZ2UiLCJsZWZ0VGVybUVxdWFsVG9SaWdodFRlcm0iLCJpc0VxdWFsVG8iLCJib29sZWFuIiwidGVybUZyb21Cb29sZWFuIiwiZGVidWciLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFPQTs7O2VBQUE7OztnRUFMc0I7d0JBRUM7b0JBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVoQyxXQUFlQSxJQUFBQSxnQkFBTSwrQkFBQzthQUFNQyxXQUNkQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsY0FBYyxFQUFFQyxlQUFlO2dDQURsQ0o7UUFFeEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxjQUFjLEdBQUdBO1FBQ3RCLElBQUksQ0FBQ0MsZUFBZSxHQUFHQTs7OztZQUd6QkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixNQUFNO1lBQ3BCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixPQUFPO1lBQ3JCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixjQUFjO1lBQzVCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSixlQUFlO1lBQzdCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLFNBQVNDLE9BQU87Z0JBQ2QsSUFBSUM7Z0JBRUosSUFBTUMsbUJBQW1CLElBQUksQ0FBQ1gsTUFBTSxFQUFFLEdBQUc7Z0JBRXpDUyxRQUFRRyxLQUFLLENBQUMsQUFBQyxtQkFBbUMsT0FBakJELGtCQUFpQjtnQkFFbEQsSUFBTUUsV0FBVyxJQUFJLENBQUNYLGNBQWMsQ0FBQ00sUUFBUSxDQUFDQyxVQUN4Q0ssWUFBWSxJQUFJLENBQUNYLGVBQWUsQ0FBQ0ssUUFBUSxDQUFDQyxVQUMxQ00sZUFBZUYsU0FBU0csT0FBTyxJQUMvQkMsZ0JBQWdCSCxVQUFVRSxPQUFPO2dCQUV2QyxJQUFJRCxpQkFBaUJFLGVBQWU7b0JBQ2xDLElBQU1DLGlCQUFpQkwsU0FBU1QsU0FBUyxJQUNuQ2Usa0JBQWtCTCxVQUFVVixTQUFTLElBQ3JDZ0IsVUFBVSxBQUFDLFFBQXFETCxPQUE5Q0csZ0JBQWUsaUNBQTZEQyxPQUE5QkosY0FBYSxtQkFBaUVFLE9BQWhERSxpQkFBZ0Isa0NBQThDLE9BQWRGLGVBQWMsT0FDNUpJLFlBQVlDLGtCQUFTLENBQUNDLFdBQVcsQ0FBQ0g7b0JBRXhDLE1BQU1DO2dCQUNSO2dCQUVBLElBQU1HLDJCQUEyQlgsU0FBU1ksU0FBUyxDQUFDWDtnQkFFcEQsSUFBSVksVUFBVUYsMEJBQTBCLEdBQUc7Z0JBRTNDLElBQUksSUFBSSxDQUFDdkIsT0FBTyxFQUFFO29CQUNoQnlCLFVBQVUsQ0FBQ0EsU0FBUyxHQUFHO2dCQUN6QjtnQkFFQWhCLE9BQU9pQixJQUFBQSxxQkFBZSxFQUFDRCxTQUFTakI7Z0JBRWhDQSxRQUFRbUIsS0FBSyxDQUFDLEFBQUMscUJBQXFDLE9BQWpCakIsa0JBQWlCO2dCQUVwRCxPQUFPRDtZQUNUOzs7O0tBRUEsOEJBQU9tQixRQUFPIn0=