occam-furtle 2.0.331 → 2.0.335

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.
@@ -4,9 +4,56 @@ import nullNode from "../nullNode";
4
4
  import NonTerminalNode from "../nonTerminalNode";
5
5
 
6
6
  import { NULL, TRUE, FALSE } from "../constants";
7
+ import { NODE_TYPE, STRING_TYPE, NUMBER_TYPE, BOOLEAN_TYPE } from "../types";
7
8
  import { NULL_TOKEN_TYPE, NUMBER_TOKEN_TYPE, BOOLEAN_TOKEN_TYPE, STRING_LITERAL_TOKEN_TYPE } from "../tokenTypes";
8
9
 
9
10
  export default class PrimitiveNode extends NonTerminalNode {
11
+ getType() {
12
+ let type;
13
+
14
+ const node = this.getNode(),
15
+ number = this.getNumber(),
16
+ boolean = this.getBoolean(),
17
+ stringLiteral = this.getStringLiteral();
18
+
19
+ if (false) {
20
+ ///
21
+ } else if (node !== null) {
22
+ type = NODE_TYPE;
23
+ } else if (number !== null) {
24
+ type = NUMBER_TYPE;
25
+ } else if (boolean !== null) {
26
+ type = BOOLEAN_TYPE;
27
+ } else if (stringLiteral !== null) {
28
+ type = STRING_TYPE;
29
+ }
30
+
31
+ return type;
32
+ }
33
+
34
+ getValue() {
35
+ let value;
36
+
37
+ const node = this.getNode(),
38
+ number = this.getNumber(),
39
+ boolean = this.getBoolean(),
40
+ stringLiteral = this.getStringLiteral();
41
+
42
+ if (false) {
43
+ ///
44
+ } else if (node !== null) {
45
+ value = node; ///
46
+ } else if (number !== null) {
47
+ value = number; ///
48
+ } else if (boolean !== null) {
49
+ value = boolean; ///
50
+ } else if (stringLiteral !== null) {
51
+ value = stringLiteral; ///
52
+ }
53
+
54
+ return value;
55
+ }
56
+
10
57
  getNode() {
11
58
  let node = null;
12
59
 
@@ -5,16 +5,18 @@ import { Query } from "occam-query";
5
5
  import elements from "../elements";
6
6
 
7
7
  import { BOOLEAN_TYPE } from "../types";
8
- import { variableStringFromName,
8
+ import { ternaryStringFromTerm,
9
+ variableStringFromName,
10
+ termStringFromPrimitiveAndProperties,
9
11
  procedureDeclarationStringFromProcedure,
10
12
  returnBlockStringFromReturnStatementNode,
11
13
  expressionStringFromPrimitiveAndProperties,
14
+ variableAssignmentStringFromTypeAndVariable,
12
15
  someStringFromVariableAndAnonymousProcedure,
13
16
  everyStringFromVariableAndAnonymousProcedure,
14
- variableAssignmentStringFromVariable,
15
17
  procedureStringFromTypeLabelParametersAndReturnBlock,
16
- variableAssignmentStringFromVariableAssignmentsArray,
17
18
  anonymousProcedureStringFromTypeParametersAndReturnBlock,
19
+ variableAssignmentStringFromTypeAndVariableAssignmentsArray,
18
20
  reduceStringFromVariableInitialExpressionAndAnonymousProcedure } from "../utilities/string";
19
21
 
20
22
  export function stepFromStepNode(stepNode, context) {
@@ -42,11 +44,22 @@ export function someFromSomeNode(someNode, context) {
42
44
 
43
45
  export function termFromTermNode(termNode, context) {
44
46
  const { Term } = elements,
45
- node = termNode, ///
46
- string = context.nodeAsString(node),
47
47
  variable = variableFromTermNode(termNode, context),
48
48
  primitive = primitiveFromTermNode(termNode, context),
49
- term = new Term(string, variable, primitive);
49
+ negatedTerm = negatedTermFromTermNode(termNode, context),
50
+ logicalTerm = logicalTermFromTermNode(termNode, context),
51
+ bracketedTerm = bracketedTermFromTermNode(termNode, context),
52
+ comparisonTerm = comparisonTermFromTermNode(termNode, context),
53
+ properties = [
54
+ variable,
55
+ negatedTerm,
56
+ logicalTerm,
57
+ bracketedTerm,
58
+ comparisonTerm
59
+ ],
60
+ termString = termStringFromPrimitiveAndProperties(primitive, properties, context),
61
+ string = termString, ///
62
+ term = new Term(string, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm);
50
63
 
51
64
  return term;
52
65
  }
@@ -107,12 +120,12 @@ export function reduceFromReduceNode(reduceNode, context) {
107
120
 
108
121
  export function ternaryFromTernaryNode(ternaryNode, context) {
109
122
  const { Ternary } = elements,
110
- node = ternaryNode, ///
111
- string = context.nodeAsString(node),
112
- expression = expressionFromTernaryNode(ternaryNode, context),
123
+ term = termFromTernaryNode(ternaryNode, context),
113
124
  ifExpression = ifExpressionFromTernaryNode(ternaryNode, context),
114
125
  elseExpression = elseExpressionFromTernaryNode(ternaryNode, context),
115
- ternary = new Ternary(string, expression, ifExpression, elseExpression);
126
+ ternaryString = ternaryStringFromTerm(term),
127
+ string = ternaryString, ///
128
+ ternary = new Ternary(string, term, ifExpression, elseExpression);
116
129
 
117
130
  return ternary;
118
131
  }
@@ -171,12 +184,9 @@ export function primitiveFromPrimitiveNode(primitiveNode, context) {
171
184
  const { Primitive } = elements,
172
185
  primitiveString = context.nodeAsString(primitiveNode),
173
186
  string = primitiveString, ///
174
- node = nodeFromPrimitiveNode(primitiveNode, context),
175
- nodes = nodesFromPrimitiveNode(primitiveNode, context),
176
- number = numberFromPrimitiveNode(primitiveNode, context),
177
- boolean = booleanFromPrimitiveNode(primitiveNode, context),
178
- stringLiteral = stringLiteralFromPrimitiveNode(primitiveNode, context),
179
- primitive = new Primitive(string, node, nodes, number, boolean, stringLiteral);
187
+ type = typeFromPrimitiveNode(primitiveNode, context),
188
+ value = valueFromPrimitiveNode(primitiveNode, context),
189
+ primitive = new Primitive(string, type, value);
180
190
 
181
191
  return primitive;
182
192
  }
@@ -227,12 +237,12 @@ export function expressionFromExpressionNode(expressionNode, context) {
227
237
  variable,
228
238
  nodeQuery,
229
239
  nodesQuery,
230
- comparisonExpression,
231
240
  returnBlock,
232
241
  procedureCall,
233
242
  negatedExpression,
234
243
  logicalExpression,
235
- bracketedExpression
244
+ bracketedExpression,
245
+ comparisonExpression
236
246
  ],
237
247
  expressionString = expressionStringFromPrimitiveAndProperties(primitive, properties, context),
238
248
  string = expressionString, ///
@@ -339,6 +349,19 @@ export function negatedExpressionFromNegatedExpressionNode(negatedExpressionNode
339
349
  return negatedExpression;
340
350
  }
341
351
 
352
+ export function logicalExpressionFromLogicalExpressionNode(logicalExpressionNode, context) {
353
+ const { LogicalExpression } = elements,
354
+ node = logicalExpressionNode, ///
355
+ string = context.nodeAsString(node),
356
+ type = typeFromLogicalExpressionNode(logicalExpressionNode, context),
357
+ disjunction = disjunctionFromLogicalExpressionNode(logicalExpressionNode, context),
358
+ leftExpression = leftExpressionFromLogicalExpressionNode(logicalExpressionNode, context),
359
+ rightExpression = rightExpressionFromLogicalExpressionNode(logicalExpressionNode, context),
360
+ logicalExpression = new LogicalExpression(string, type, disjunction, leftExpression, rightExpression);
361
+
362
+ return logicalExpression;
363
+ }
364
+
342
365
  export function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context) {
343
366
  const { AnonymousProcedure } = elements,
344
367
  type = typeFromProcedureAnonymousProcedureNode(anonymousProcedureNode, context),
@@ -351,6 +374,18 @@ export function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureN
351
374
  return anonymousProcedure;
352
375
  }
353
376
 
377
+ export function variableAssignmentsFromVariableAssignmentsNode(variableAssignmentsNode, context) {
378
+ const { VariableAssignments } = elements,
379
+ type = typeFromVariableAssignmentsNode(variableAssignmentsNode, context),
380
+ variableAssignmentsArray = variableAssignmentsArrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context),
381
+ variableAssignmentString = variableAssignmentStringFromTypeAndVariableAssignmentsArray(type, variableAssignmentsArray),
382
+ array = variableAssignmentsArray, ///
383
+ string = variableAssignmentString, ///
384
+ variableAssignments = new VariableAssignments(string, array);
385
+
386
+ return variableAssignments;
387
+ }
388
+
354
389
  export function bracketedExpressionFromBracketedExpressionNode(bracketedExpressionNode, context) {
355
390
  const { BracketedExpression } = elements,
356
391
  node = bracketedExpressionNode, ///
@@ -361,15 +396,16 @@ export function bracketedExpressionFromBracketedExpressionNode(bracketedExpressi
361
396
  return bracketedExpression;
362
397
  }
363
398
 
364
- export function variableAssignmentsFromVariableAssignmentsNode(variableAssignmentsNode, context) {
365
- const { VariableAssignments } = elements,
366
- variableAssignmentsArray = variableAssignmentsArrayFromVariableAssignmentsNode(variableAssignmentsNode, context),
367
- variableAssignmentString = variableAssignmentStringFromVariableAssignmentsArray(variableAssignmentsArray),
368
- array = variableAssignmentsArray, ///
369
- string = variableAssignmentString, ///
370
- variableAssignments = new VariableAssignments(string, array);
399
+ export function comparisonExpressionFromComparisonExpressionNode(comparisonExpressionNode, context) {
400
+ const { ComparisonExpression } = elements,
401
+ node = comparisonExpressionNode, ///
402
+ string = context.nodeAsString(node),
403
+ negated = negatedFromComparisonExpressionNode(comparisonExpressionNode, context),
404
+ leftExpression = leftExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context),
405
+ rightExpression = rightExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context),
406
+ comparisonExpression = new ComparisonExpression(string, negated, leftExpression, rightExpression);
371
407
 
372
- return variableAssignments;
408
+ return comparisonExpression;
373
409
  }
374
410
 
375
411
  export function procedureDeclarationFromProcedureDeclarationNode(procedureDeclarationNode, context) {
@@ -382,24 +418,19 @@ export function procedureDeclarationFromProcedureDeclarationNode(procedureDeclar
382
418
  return procedureDeclaration;
383
419
  }
384
420
 
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
421
  export function nameFromLabelNode(labelNode, context) {
398
422
  const name = labelNode.getName();
399
423
 
400
424
  return name;
401
425
  }
402
426
 
427
+ export function termFromTernaryNode(ternaryNode, context) {
428
+ const termNode = ternaryNode.getTermNode(),
429
+ term = termFromTermNode(termNode, context);
430
+
431
+ return term;
432
+ }
433
+
403
434
  export function variableFromSomeNode(someNode, context) {
404
435
  const variableNode = someNode.getVariableNode(), ///
405
436
  variable = variableFromVariableNode(variableNode, context);
@@ -468,16 +499,10 @@ export function nameFromReferenceNode(referenceNode, context) {
468
499
  return name;
469
500
  }
470
501
 
471
- export function nodeFromPrimitiveNode(primitiveNode, context) {
472
- const node = primitiveNode.getNode();
502
+ export function typeFromPrimitiveNode(primitiveNode, context) {
503
+ const type = primitiveNode.getType();
473
504
 
474
- return node;
475
- }
476
-
477
- export function nodesFromPrimitiveNode(primitiveNode, context) {
478
- const nodes = null;
479
-
480
- return nodes;
505
+ return type;
481
506
  }
482
507
 
483
508
  export function variableFromReduceNode(reduceNode, context) {
@@ -507,10 +532,10 @@ export function queryFromNodeQueryNode(nodeQueryNode, context) {
507
532
  return query;
508
533
  }
509
534
 
510
- export function numberFromPrimitiveNode(primitiveNode, context) {
511
- const number = primitiveNode.getNumber();
535
+ export function valueFromPrimitiveNode(primitiveNode, context) {
536
+ const value = primitiveNode.getValue();
512
537
 
513
- return number;
538
+ return value;
514
539
  }
515
540
 
516
541
  export function queryFromNodesQueryNode(nodesQueryNode, context) {
@@ -533,10 +558,41 @@ export function everyFromExpressionNode(expressionNode, context) {
533
558
  return every;
534
559
  }
535
560
 
536
- export function booleanFromPrimitiveNode(primitiveNode, context) {
537
- const boolean = primitiveNode.getBoolean();
561
+ export function negatedTermFromTermNode(termNode, context) {
562
+ let negatedTerm = null;
563
+
564
+ const negatedTermNode = termNode.getNegatedTermNode();
565
+
566
+ if (negatedTermNode !== null) {
567
+ negatedTerm = negatedTermFromNegatedTermNode(negatedTermNode, context);
568
+ }
569
+
570
+ return negatedTerm;
571
+ }
572
+
573
+ export function logicalTermFromTermNode(termNode, context) {
574
+ let logicalTerm = null;
538
575
 
539
- return boolean;
576
+ const logicalTermNode = termNode.getLogicalTermNode();
577
+
578
+ if (logicalTermNode !== null) {
579
+ logicalTerm = logicalTermFromLogicalTermNode(logicalTermNode, context);
580
+ }
581
+
582
+ return logicalTerm;
583
+ }
584
+
585
+ export function typeFromLogicalTermNode(logicalTermNode, context) {
586
+ const type = BOOLEAN_TYPE;
587
+
588
+ return type;
589
+ }
590
+
591
+ export function termFromNegatedTermNode(negatedTermNode, context) {
592
+ const termNode = negatedTermNode.getTermNode(),
593
+ term = termFromTermNode(termNode, context);
594
+
595
+ return term;
540
596
  }
541
597
 
542
598
  export function expressionFromReduceNode(reduceNode, context) {
@@ -569,13 +625,6 @@ export function stepsFromReturnBlockNode(returnBlockNode, context) {
569
625
  return steps;
570
626
  }
571
627
 
572
- export function expressionFromTernaryNode(ternaryNode, context) {
573
- const expressionNode = ternaryNode.getExpressionNode(),
574
- expression = expressionFromExpressionNode(expressionNode, context);
575
-
576
- return expression;
577
- }
578
-
579
628
  export function variableFromNodeQueryNode(nodeQueryNode, context) {
580
629
  const variableNode = nodeQueryNode.getVariableNode(),
581
630
  variable = variableFromVariableNode(variableNode, context);
@@ -595,6 +644,37 @@ export function ternaryFromExpressionNode(expressionNode, context) {
595
644
  return ternary;
596
645
  }
597
646
 
647
+ export function bracketedTermFromTermNode(termNode, context) {
648
+ let bracketedTerm = null;
649
+
650
+ const bracketedTermNode = termNode.getBracketedTermNode();
651
+
652
+ if (bracketedTermNode !== null) {
653
+ bracketedTerm = bracketedTermFromBracketedTermNode(bracketedTermNode, context);
654
+ }
655
+
656
+ return bracketedTerm;
657
+ }
658
+
659
+ export function termFromBracketedTermNode(bracketedTermNode, context) {
660
+ const termNode = bracketedTermNode.getTermNode(),
661
+ term = termFromTermNode(termNode, context);
662
+
663
+ return term;
664
+ }
665
+
666
+ export function comparisonTermFromTermNode(termNOde, context) {
667
+ let comparisonTerm = null;
668
+
669
+ const comparisonTermNode = termNOde.getComparisonTermNode();
670
+
671
+ if (comparisonTermNode !== null) {
672
+ comparisonTerm = comparisonTermFromComparisonTermNode(comparisonTermNode, context);
673
+ }
674
+
675
+ return comparisonTerm;
676
+ }
677
+
598
678
  export function expressionFromVariableNode(variableNode, context) {
599
679
  const expression = null;
600
680
 
@@ -639,6 +719,13 @@ export function nameFromNamedParameterNode(namedParameterNode, context) {
639
719
  return name;
640
720
  }
641
721
 
722
+ export function leftTermFromLogicalTermNode(logicalTermNode, context) {
723
+ const leftTermNode = logicalTermNode.getLeftTermNode(),
724
+ leftTerm = termFromTermNode(leftTermNode, context);
725
+
726
+ return leftTerm;
727
+ }
728
+
642
729
  export function arrayAssignmentFromStepNode(stepNode, context) {
643
730
  let arrayAssignment = null;
644
731
 
@@ -719,6 +806,19 @@ export function nodesQueryFromExpressionNode(expressionNode, context) {
719
806
  return nodesQuery;
720
807
  }
721
808
 
809
+ export function rightTermFromLogicalTermNode(logicalTermNode, context) {
810
+ const rightTermNode = logicalTermNode.getRightTermNode(),
811
+ rightTerm = termFromTermNode(rightTermNode, context);
812
+
813
+ return rightTerm;
814
+ }
815
+
816
+ export function negatedFromComparisonTermNode(comparisonTermNode, context) {
817
+ const negated = comparisonTermNode.isNegated();
818
+
819
+ return negated;
820
+ }
821
+
722
822
  export function elseExpressionFromTernaryNode(ternaryNode, context) {
723
823
  const elseExpressionNode = ternaryNode.getElseExpressionNode(),
724
824
  elseExpression = expressionFromExpressionNode(elseExpressionNode, context);
@@ -744,7 +844,7 @@ export function typeFromNegatedExpressionNode(negatedExpressionNode, context) {
744
844
  return type;
745
845
  }
746
846
 
747
- export function typeFromLogcialExpressionNode(logicalExpressionNode, context) {
847
+ export function typeFromLogicalExpressionNode(logicalExpressionNode, context) {
748
848
  const type = BOOLEAN_TYPE;
749
849
 
750
850
  return type;
@@ -770,10 +870,42 @@ export function referenceFromProcedureCallNode(procedureCallNode, context) {
770
870
  return reference;
771
871
  }
772
872
 
773
- export function stringLiteralFromPrimitiveNode(primitiveNode, context) {
774
- const stringLiteral = primitiveNode.getStringLiteral();
873
+ export function leftTermFromCompzrisonTermNode(comparisonTermNode, context) {
874
+ const leftTermNode = comparisonTermNode.getLeftTermNode(),
875
+ leftTerm = termFromTermNode(leftTermNode, context);
775
876
 
776
- return stringLiteral;
877
+ return leftTerm;
878
+ }
879
+
880
+ export function disjunctionFromLogicalTermNode(logicalTermNode, context) {
881
+ const disjunction = logicalTermNode.isDisjunction();
882
+
883
+ return disjunction;
884
+ }
885
+
886
+ export function negatedTermFromNegatedTermNode(negatedTermNode, context) {
887
+ const { NegatedTerm } = elements,
888
+ node = negatedTermNode, ///
889
+ string = context.nodeAsString(node),
890
+ termNode = negatedTermNode.getTermNode(),
891
+ type = typeFromNegatedTermNode(termNode, context),
892
+ term = termFromNegatedTermNode(negatedTermNode, context),
893
+ negatedTerm = new NegatedTerm(string, type, term);
894
+
895
+ return negatedTerm;
896
+ }
897
+
898
+ export function logicalTermFromLogicalTermNode(logicalTermNode, context) {
899
+ const { LogicalTerm } = elements,
900
+ node = logicalTermNode, ///
901
+ string = context.nodeAsString(node),
902
+ type = typeFromLogicalTermNode(logicalTermNode, context),
903
+ disjunction = disjunctionFromLogicalTermNode(logicalTermNode, context),
904
+ leftTerm = leftTermFromLogicalTermNode(logicalTermNode, context),
905
+ rightTerm = rightTermFromLogicalTermNode(logicalTermNode, context),
906
+ logicalTerm = new LogicalTerm(string, type, disjunction, leftTerm, rightTerm);
907
+
908
+ return logicalTerm;
777
909
  }
778
910
 
779
911
  export function variableFromTypeAndVariableNode(type, variableNode, context) {
@@ -825,6 +957,13 @@ export function procedureCallFromExpressionNode(expressionNode, context) {
825
957
  return procedureCall;
826
958
  }
827
959
 
960
+ export function rightTermFromCompzrisonTermNode(comparisonTermNode, context) {
961
+ const rightTermNode = comparisonTermNode.getLeftTermNode(),
962
+ rightTerm = termFromTermNode(rightTermNode, context);
963
+
964
+ return rightTerm;
965
+ }
966
+
828
967
  export function variableFromArrayAssignmentNode(arrayAssignmentNode, context) {
829
968
  const variableNode = arrayAssignmentNode.getVariableNode(),
830
969
  variable = variableFromVariableNode(variableNode, context);
@@ -832,6 +971,12 @@ export function variableFromArrayAssignmentNode(arrayAssignmentNode, context) {
832
971
  return variable;
833
972
  }
834
973
 
974
+ export function typeFromVariableAssignmentsNode(variableAssignmentsNode, context) {
975
+ const type = variableAssignmentsNode.getType();
976
+
977
+ return type;
978
+ }
979
+
835
980
  export function anonymousProcedureFromReduceNode(reduceNode, context) {
836
981
  const anonymousProcedureNode = reduceNode.getAnonymousProcedureNode(),
837
982
  anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
@@ -839,13 +984,6 @@ export function anonymousProcedureFromReduceNode(reduceNode, context) {
839
984
  return anonymousProcedure;
840
985
  }
841
986
 
842
- export function leftExpressionFromCompzrisonNode(comparisonExpressionNode, context) {
843
- const leftExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
844
- leftExpression = expressionFromExpressionNode(leftExpressionNode, context);
845
-
846
- return leftExpression;
847
- }
848
-
849
987
  export function variableFromObjectAssignmentNode(objectAssignmentNode, context) {
850
988
  const variableNode = objectAssignmentNode.getVariableNode(),
851
989
  variable = variableFromVariableNode(variableNode, context);
@@ -865,13 +1003,6 @@ export function expressionFromTypeAndVariableNode(type, variableNode, context) {
865
1003
  return expression;
866
1004
  }
867
1005
 
868
- export function rightExpressionFromCompzrisonNode(comparisonExpressionNode, context) {
869
- const rightExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
870
- rightExpression = expressionFromExpressionNode(rightExpressionNode, context);
871
-
872
- return rightExpression;
873
- }
874
-
875
1006
  export function parametersFromArrayAssignmentNode(arrayAssignmentNode, context) {
876
1007
  const parametersNode = arrayAssignmentNode.getParametersNode(),
877
1008
  parameters = parametersFromParametersNode(parametersNode, context);
@@ -893,6 +1024,16 @@ export function returnStatementFromReturnBlockNode(returnBlockNode, context) {
893
1024
  return returnStatement;
894
1025
  }
895
1026
 
1027
+ export function bracketedTermFromBracketedTermNode(bracketedTermNode, context) {
1028
+ const { BracketedTerm } = elements,
1029
+ node = bracketedTermNode, ///
1030
+ string = context.nodeAsString(node), ///
1031
+ term = termFromBracketedTermNode(bracketedTermNode, context),
1032
+ bracketedTerm = new BracketedTerm(string, term);
1033
+
1034
+ return bracketedTerm;
1035
+ }
1036
+
896
1037
  export function negatedExpressionFromExpressionNode(expressionNode, context) {
897
1038
  let negatedExpression = null;
898
1039
 
@@ -905,16 +1046,11 @@ export function negatedExpressionFromExpressionNode(expressionNode, context) {
905
1046
  return negatedExpression;
906
1047
  }
907
1048
 
908
- export function logicalExpressionFromExpressionNode(expressionNode, context) {
909
- let logicalExpression = null;
910
-
911
- const logicalExpressionNode = expressionNode.getLogicalExpressionNode();
912
-
913
- if (logicalExpressionNode !== null) {
914
- logicalExpression = logicalExpressionFromLogicalExpressionNode(logicalExpressionNode, context);
915
- }
1049
+ export function expressionFromNegatedExpressionNode(negatedExpressionNode, context) {
1050
+ const expressionNode = negatedExpressionNode.getExpressionNode(),
1051
+ expression = expressionFromExpressionNode(expressionNode, context);
916
1052
 
917
- return logicalExpression;
1053
+ return expression;
918
1054
  }
919
1055
 
920
1056
  export function negatedFromComparisonExpressionNode(comparisonExpressionNode, context) {
@@ -923,11 +1059,16 @@ export function negatedFromComparisonExpressionNode(comparisonExpressionNode, co
923
1059
  return negated;
924
1060
  }
925
1061
 
926
- export function expressionFromNegatedExpressionNode(negatedExpressionNode, context) {
927
- const expressionNode = negatedExpressionNode.getExpressionNode(),
928
- expression = expressionFromExpressionNode(expressionNode, context);
1062
+ export function logicalExpressionFromExpressionNode(expressionNode, context) {
1063
+ let logicalExpression = null;
929
1064
 
930
- return expression;
1065
+ const logicalExpressionNode = expressionNode.getLogicalExpressionNode();
1066
+
1067
+ if (logicalExpressionNode !== null) {
1068
+ logicalExpression = logicalExpressionFromLogicalExpressionNode(logicalExpressionNode, context);
1069
+ }
1070
+
1071
+ return logicalExpression;
931
1072
  }
932
1073
 
933
1074
  export function expressionFromVariableAssignmentNode(variableAssigmentNode, context) {
@@ -950,6 +1091,18 @@ export function parametersFromAnonymousProcedureNode(anonymousProcedureNode, con
950
1091
  return parameters;
951
1092
  }
952
1093
 
1094
+ export function comparisonTermFromComparisonTermNode(comparisonTermNode, context) {
1095
+ const { ComparisonTerm } = elements,
1096
+ node = comparisonTermNode, ///
1097
+ string = context.nodeAsString(node),
1098
+ negated = negatedFromComparisonTermNode(comparisonTermNode, context),
1099
+ leftTerm = leftTermFromCompzrisonTermNode(comparisonTermNode, context),
1100
+ rightTerm = rightTermFromCompzrisonTermNode(comparisonTermNode, context),
1101
+ comparisonTerm = new ComparisonTerm(string, negated, leftTerm, rightTerm);
1102
+
1103
+ return comparisonTerm;
1104
+ }
1105
+
953
1106
  export function returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, context) {
954
1107
  const returnBlockNode = anonymousProcedureNode.getReturnBlockNode(),
955
1108
  returnBlock = returnBlockFromReturnBlockNode(returnBlockNode, context);
@@ -957,6 +1110,19 @@ export function returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, co
957
1110
  return returnBlock;
958
1111
  }
959
1112
 
1113
+ export function procedureFromProcedureDeclarationNode(procedureDeclarationNode, context) {
1114
+ const { Procedure } = elements,
1115
+ type = typeFromProcedureDeclarationNode(procedureDeclarationNode, context),
1116
+ label = labelFromProcedureDeclarationNode(procedureDeclarationNode, context),
1117
+ parameters = parametersFromProcedureDeclarationNode(procedureDeclarationNode, context),
1118
+ returnBlock = returnBlockFromProcedureDeclarationNode(procedureDeclarationNode, context),
1119
+ procedureString = procedureStringFromTypeLabelParametersAndReturnBlock(type, label, parameters, returnBlock),
1120
+ string = procedureString, ///
1121
+ procedure = new Procedure(string, type, label, parameters, returnBlock);
1122
+
1123
+ return procedure;
1124
+ }
1125
+
960
1126
  export function bracketedExpressionFromExpressionNode(expressionNode, context) {
961
1127
  let bracketedExpression = null;
962
1128
 
@@ -971,24 +1137,11 @@ export function bracketedExpressionFromExpressionNode(expressionNode, context) {
971
1137
 
972
1138
  export function expressionFromBracketedExpressionNode(bracketedExpressionNode, context) {
973
1139
  const expressionNode = bracketedExpressionNode.getExpressionNode(),
974
- expression = expressionFromExpressionNode(expressionNode, context);
1140
+ expression = expressionFromExpressionNode(expressionNode, context);
975
1141
 
976
1142
  return expression;
977
1143
  }
978
1144
 
979
- export function procedureFromProcedureDeclarationNode(procedureDeclarationNode, context) {
980
- const { Procedure } = elements,
981
- type = typeFromProcedureDeclarationNode(procedureDeclarationNode, context),
982
- label = labelFromProcedureDeclarationNode(procedureDeclarationNode, context),
983
- parameters = parametersFromProcedureDeclarationNode(procedureDeclarationNode, context),
984
- returnBlock = returnBlockFromProcedureDeclarationNode(procedureDeclarationNode, context),
985
- procedureString = procedureStringFromTypeLabelParametersAndReturnBlock(type, label, parameters, returnBlock),
986
- string = procedureString, ///
987
- procedure = new Procedure(string, type, label, parameters, returnBlock);
988
-
989
- return procedure;
990
- }
991
-
992
1145
  export function comparisonExpressionFromExpressionNode(expressionNOde, context) {
993
1146
  let comparisonExpression = null;
994
1147
 
@@ -1042,24 +1195,25 @@ export function variableFromTypeAndVariableAssignmentNode(type, variableAssignme
1042
1195
  return variable;
1043
1196
  }
1044
1197
 
1045
- export function logicalExpressionFromLogicalExpressionNode(logicalExpressionNode, context) {
1046
- const { LogicalExpression } = elements,
1047
- node = logicalExpressionNode, ///
1048
- string = context.nodeAsString(node),
1049
- type = typeFromLogcialExpressionNode(logicalExpressionNode, context),
1050
- disjunction = disjunctionFromLogicalExpressionNode(logicalExpressionNode, context),
1051
- leftExpression = leftExpressionFromLogicalExpressionNode(logicalExpressionNode, context),
1052
- rightExpression = rightExpressionFromLogicalExpressionNode(logicalExpressionNode, context),
1053
- logicalExpression = new LogicalExpression(string, type, disjunction, leftExpression, rightExpression);
1198
+ export function leftExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context) {
1199
+ const leftExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
1200
+ leftExpression = expressionFromExpressionNode(leftExpressionNode, context);
1054
1201
 
1055
- return logicalExpression;
1202
+ return leftExpression;
1203
+ }
1204
+
1205
+ export function rightExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context) {
1206
+ const rightExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
1207
+ rightExpression = expressionFromExpressionNode(rightExpressionNode, context);
1208
+
1209
+ return rightExpression;
1056
1210
  }
1057
1211
 
1058
1212
  export function variableAssignmentFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context) {
1059
1213
  const { VariableAssignment } = elements,
1060
1214
  variable = variableFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context),
1061
1215
  expression = expressionFromVariableAssignmentNode(variableAssignmentNode, context),
1062
- variableAssignmentString = variableAssignmentStringFromVariable(expression, variable, context),
1216
+ variableAssignmentString = variableAssignmentStringFromTypeAndVariable(type, variable, context),
1063
1217
  string = variableAssignmentString, ///
1064
1218
  assignment = new VariableAssignment(string, variable, expression);
1065
1219
 
@@ -1097,9 +1251,8 @@ export function namedParamtersArrayFromNamedParameterNodes(namedParameterNodes,
1097
1251
  return namedParamtersArray;
1098
1252
  }
1099
1253
 
1100
- export function variableAssignmentsArrayFromVariableAssignmentsNode(variableAssignmentsNode, context) {
1101
- const type = variableAssignmentsNode.getType(),
1102
- variableAssignmentNodes = variableAssignmentsNode.getVariableAssignmentNodes(),
1254
+ export function variableAssignmentsArrayFromTypeAndVariableAssignmentsNode(type, variableAssignmentsNode, context) {
1255
+ const variableAssignmentNodes = variableAssignmentsNode.getVariableAssignmentNodes(),
1103
1256
  variableAssignmentsArray = variableAssignmentNodes.map((variableAssignmentNode) => {
1104
1257
  const variableAssignment = variableAssignmentFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context);
1105
1258