occam-furtle 2.0.331 → 2.0.334
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.
- package/lib/element/expression/negated.js +2 -2
- package/lib/element/primitive.js +10 -10
- package/lib/element/returnBlock.js +3 -3
- package/lib/element/statement/return.js +2 -2
- package/lib/element/step.js +8 -8
- package/lib/element/term/logical.js +11 -11
- package/lib/element/term.js +11 -5
- package/lib/utilities/element.js +191 -50
- package/lib/utilities/string.js +32 -5
- package/package.json +4 -4
- package/src/element/expression/negated.js +1 -1
- package/src/element/primitive.js +9 -9
- package/src/element/returnBlock.js +2 -2
- package/src/element/statement/return.js +1 -1
- package/src/element/step.js +6 -6
- package/src/element/term/logical.js +5 -5
- package/src/element/term.js +12 -4
- package/src/utilities/element.js +258 -90
- package/src/utilities/string.js +31 -3
- package/test/main.js +0 -113
package/src/utilities/element.js
CHANGED
|
@@ -5,13 +5,15 @@ import { Query } from "occam-query";
|
|
|
5
5
|
import elements from "../elements";
|
|
6
6
|
|
|
7
7
|
import { BOOLEAN_TYPE } from "../types";
|
|
8
|
-
import {
|
|
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
18
|
variableAssignmentStringFromVariableAssignmentsArray,
|
|
17
19
|
anonymousProcedureStringFromTypeParametersAndReturnBlock,
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
126
|
+
ternaryString = ternaryStringFromTerm(term),
|
|
127
|
+
string = ternaryString, ///
|
|
128
|
+
ternary = new Ternary(string, term, ifExpression, elseExpression);
|
|
116
129
|
|
|
117
130
|
return ternary;
|
|
118
131
|
}
|
|
@@ -227,12 +240,12 @@ export function expressionFromExpressionNode(expressionNode, context) {
|
|
|
227
240
|
variable,
|
|
228
241
|
nodeQuery,
|
|
229
242
|
nodesQuery,
|
|
230
|
-
comparisonExpression,
|
|
231
243
|
returnBlock,
|
|
232
244
|
procedureCall,
|
|
233
245
|
negatedExpression,
|
|
234
246
|
logicalExpression,
|
|
235
|
-
bracketedExpression
|
|
247
|
+
bracketedExpression,
|
|
248
|
+
comparisonExpression
|
|
236
249
|
],
|
|
237
250
|
expressionString = expressionStringFromPrimitiveAndProperties(primitive, properties, context),
|
|
238
251
|
string = expressionString, ///
|
|
@@ -339,6 +352,19 @@ export function negatedExpressionFromNegatedExpressionNode(negatedExpressionNode
|
|
|
339
352
|
return negatedExpression;
|
|
340
353
|
}
|
|
341
354
|
|
|
355
|
+
export function logicalExpressionFromLogicalExpressionNode(logicalExpressionNode, context) {
|
|
356
|
+
const { LogicalExpression } = elements,
|
|
357
|
+
node = logicalExpressionNode, ///
|
|
358
|
+
string = context.nodeAsString(node),
|
|
359
|
+
type = typeFromLogicalExpressionNode(logicalExpressionNode, context),
|
|
360
|
+
disjunction = disjunctionFromLogicalExpressionNode(logicalExpressionNode, context),
|
|
361
|
+
leftExpression = leftExpressionFromLogicalExpressionNode(logicalExpressionNode, context),
|
|
362
|
+
rightExpression = rightExpressionFromLogicalExpressionNode(logicalExpressionNode, context),
|
|
363
|
+
logicalExpression = new LogicalExpression(string, type, disjunction, leftExpression, rightExpression);
|
|
364
|
+
|
|
365
|
+
return logicalExpression;
|
|
366
|
+
}
|
|
367
|
+
|
|
342
368
|
export function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
343
369
|
const { AnonymousProcedure } = elements,
|
|
344
370
|
type = typeFromProcedureAnonymousProcedureNode(anonymousProcedureNode, context),
|
|
@@ -351,16 +377,6 @@ export function anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureN
|
|
|
351
377
|
return anonymousProcedure;
|
|
352
378
|
}
|
|
353
379
|
|
|
354
|
-
export function bracketedExpressionFromBracketedExpressionNode(bracketedExpressionNode, context) {
|
|
355
|
-
const { BracketedExpression } = elements,
|
|
356
|
-
node = bracketedExpressionNode, ///
|
|
357
|
-
string = context.nodeAsString(node), ///
|
|
358
|
-
expression = expressionFromBracketedExpressionNode(bracketedExpressionNode, context),
|
|
359
|
-
bracketedExpression = new BracketedExpression(string, expression);
|
|
360
|
-
|
|
361
|
-
return bracketedExpression;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
380
|
export function variableAssignmentsFromVariableAssignmentsNode(variableAssignmentsNode, context) {
|
|
365
381
|
const { VariableAssignments } = elements,
|
|
366
382
|
variableAssignmentsArray = variableAssignmentsArrayFromVariableAssignmentsNode(variableAssignmentsNode, context),
|
|
@@ -372,14 +388,14 @@ export function variableAssignmentsFromVariableAssignmentsNode(variableAssignmen
|
|
|
372
388
|
return variableAssignments;
|
|
373
389
|
}
|
|
374
390
|
|
|
375
|
-
export function
|
|
376
|
-
const {
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
391
|
+
export function bracketedExpressionFromBracketedExpressionNode(bracketedExpressionNode, context) {
|
|
392
|
+
const { BracketedExpression } = elements,
|
|
393
|
+
node = bracketedExpressionNode, ///
|
|
394
|
+
string = context.nodeAsString(node), ///
|
|
395
|
+
expression = expressionFromBracketedExpressionNode(bracketedExpressionNode, context),
|
|
396
|
+
bracketedExpression = new BracketedExpression(string, expression);
|
|
381
397
|
|
|
382
|
-
return
|
|
398
|
+
return bracketedExpression;
|
|
383
399
|
}
|
|
384
400
|
|
|
385
401
|
export function comparisonExpressionFromComparisonExpressionNode(comparisonExpressionNode, context) {
|
|
@@ -387,19 +403,36 @@ export function comparisonExpressionFromComparisonExpressionNode(comparisonExpre
|
|
|
387
403
|
node = comparisonExpressionNode, ///
|
|
388
404
|
string = context.nodeAsString(node),
|
|
389
405
|
negated = negatedFromComparisonExpressionNode(comparisonExpressionNode, context),
|
|
390
|
-
leftExpression =
|
|
391
|
-
rightExpression =
|
|
406
|
+
leftExpression = leftExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context),
|
|
407
|
+
rightExpression = rightExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context),
|
|
392
408
|
comparisonExpression = new ComparisonExpression(string, negated, leftExpression, rightExpression);
|
|
393
409
|
|
|
394
410
|
return comparisonExpression;
|
|
395
411
|
}
|
|
396
412
|
|
|
413
|
+
export function procedureDeclarationFromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
414
|
+
const { ProcedureDeclaration } = elements,
|
|
415
|
+
procedure = procedureFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
416
|
+
procedureDeclarationString = procedureDeclarationStringFromProcedure(procedure),
|
|
417
|
+
string = procedureDeclarationString, ///
|
|
418
|
+
procedureDeclaration = new ProcedureDeclaration(string, procedure);
|
|
419
|
+
|
|
420
|
+
return procedureDeclaration;
|
|
421
|
+
}
|
|
422
|
+
|
|
397
423
|
export function nameFromLabelNode(labelNode, context) {
|
|
398
424
|
const name = labelNode.getName();
|
|
399
425
|
|
|
400
426
|
return name;
|
|
401
427
|
}
|
|
402
428
|
|
|
429
|
+
export function termFromTernaryNode(ternaryNode, context) {
|
|
430
|
+
const termNode = ternaryNode.getTermNode(),
|
|
431
|
+
term = termFromTermNode(termNode, context);
|
|
432
|
+
|
|
433
|
+
return term;
|
|
434
|
+
}
|
|
435
|
+
|
|
403
436
|
export function variableFromSomeNode(someNode, context) {
|
|
404
437
|
const variableNode = someNode.getVariableNode(), ///
|
|
405
438
|
variable = variableFromVariableNode(variableNode, context);
|
|
@@ -533,6 +566,43 @@ export function everyFromExpressionNode(expressionNode, context) {
|
|
|
533
566
|
return every;
|
|
534
567
|
}
|
|
535
568
|
|
|
569
|
+
export function negatedTermFromTermNode(termNode, context) {
|
|
570
|
+
let negatedTerm = null;
|
|
571
|
+
|
|
572
|
+
const negatedTermNode = termNode.getNegatedTermNode();
|
|
573
|
+
|
|
574
|
+
if (negatedTermNode !== null) {
|
|
575
|
+
negatedTerm = negatedTermFromNegatedTermNode(negatedTermNode, context);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
return negatedTerm;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
export function logicalTermFromTermNode(termNode, context) {
|
|
582
|
+
let logicalTerm = null;
|
|
583
|
+
|
|
584
|
+
const logicalTermNode = termNode.getLogicalTermNode();
|
|
585
|
+
|
|
586
|
+
if (logicalTermNode !== null) {
|
|
587
|
+
logicalTerm = logicalTermFromLogicalTermNode(logicalTermNode, context);
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
return logicalTerm;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
export function typeFromLogicalTermNode(logicalTermNode, context) {
|
|
594
|
+
const type = BOOLEAN_TYPE;
|
|
595
|
+
|
|
596
|
+
return type;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
export function termFromNegatedTermNode(negatedTermNode, context) {
|
|
600
|
+
const termNode = negatedTermNode.getTermNode(),
|
|
601
|
+
term = termFromTermNode(termNode, context);
|
|
602
|
+
|
|
603
|
+
return term;
|
|
604
|
+
}
|
|
605
|
+
|
|
536
606
|
export function booleanFromPrimitiveNode(primitiveNode, context) {
|
|
537
607
|
const boolean = primitiveNode.getBoolean();
|
|
538
608
|
|
|
@@ -569,13 +639,6 @@ export function stepsFromReturnBlockNode(returnBlockNode, context) {
|
|
|
569
639
|
return steps;
|
|
570
640
|
}
|
|
571
641
|
|
|
572
|
-
export function expressionFromTernaryNode(ternaryNode, context) {
|
|
573
|
-
const expressionNode = ternaryNode.getExpressionNode(),
|
|
574
|
-
expression = expressionFromExpressionNode(expressionNode, context);
|
|
575
|
-
|
|
576
|
-
return expression;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
642
|
export function variableFromNodeQueryNode(nodeQueryNode, context) {
|
|
580
643
|
const variableNode = nodeQueryNode.getVariableNode(),
|
|
581
644
|
variable = variableFromVariableNode(variableNode, context);
|
|
@@ -595,6 +658,37 @@ export function ternaryFromExpressionNode(expressionNode, context) {
|
|
|
595
658
|
return ternary;
|
|
596
659
|
}
|
|
597
660
|
|
|
661
|
+
export function bracketedTermFromTermNode(termNode, context) {
|
|
662
|
+
let bracketedTerm = null;
|
|
663
|
+
|
|
664
|
+
const bracketedTermNode = termNode.getBracketedTermNode();
|
|
665
|
+
|
|
666
|
+
if (bracketedTermNode !== null) {
|
|
667
|
+
bracketedTerm = bracketedTermFromBracketedTermNode(bracketedTermNode, context);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
return bracketedTerm;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
export function termFromBracketedTermNode(bracketedTermNode, context) {
|
|
674
|
+
const termNode = bracketedTermNode.getTermNode(),
|
|
675
|
+
term = termFromTermNode(termNode, context);
|
|
676
|
+
|
|
677
|
+
return term;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
export function comparisonTermFromTermNode(termNOde, context) {
|
|
681
|
+
let comparisonTerm = null;
|
|
682
|
+
|
|
683
|
+
const comparisonTermNode = termNOde.getComparisonTermNode();
|
|
684
|
+
|
|
685
|
+
if (comparisonTermNode !== null) {
|
|
686
|
+
comparisonTerm = comparisonTermFromComparisonTermNode(comparisonTermNode, context);
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
return comparisonTerm;
|
|
690
|
+
}
|
|
691
|
+
|
|
598
692
|
export function expressionFromVariableNode(variableNode, context) {
|
|
599
693
|
const expression = null;
|
|
600
694
|
|
|
@@ -639,6 +733,13 @@ export function nameFromNamedParameterNode(namedParameterNode, context) {
|
|
|
639
733
|
return name;
|
|
640
734
|
}
|
|
641
735
|
|
|
736
|
+
export function leftTermFromLogicalTermNode(logicalTermNode, context) {
|
|
737
|
+
const leftTermNode = logicalTermNode.getLeftTermNode(),
|
|
738
|
+
leftTerm = termFromTermNode(leftTermNode, context);
|
|
739
|
+
|
|
740
|
+
return leftTerm;
|
|
741
|
+
}
|
|
742
|
+
|
|
642
743
|
export function arrayAssignmentFromStepNode(stepNode, context) {
|
|
643
744
|
let arrayAssignment = null;
|
|
644
745
|
|
|
@@ -719,6 +820,19 @@ export function nodesQueryFromExpressionNode(expressionNode, context) {
|
|
|
719
820
|
return nodesQuery;
|
|
720
821
|
}
|
|
721
822
|
|
|
823
|
+
export function rightTermFromLogicalTermNode(logicalTermNode, context) {
|
|
824
|
+
const rightTermNode = logicalTermNode.getRightTermNode(),
|
|
825
|
+
rightTerm = termFromTermNode(rightTermNode, context);
|
|
826
|
+
|
|
827
|
+
return rightTerm;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
export function negatedFromComparisonTermNode(comparisonTermNode, context) {
|
|
831
|
+
const negated = comparisonTermNode.isNegated();
|
|
832
|
+
|
|
833
|
+
return negated;
|
|
834
|
+
}
|
|
835
|
+
|
|
722
836
|
export function elseExpressionFromTernaryNode(ternaryNode, context) {
|
|
723
837
|
const elseExpressionNode = ternaryNode.getElseExpressionNode(),
|
|
724
838
|
elseExpression = expressionFromExpressionNode(elseExpressionNode, context);
|
|
@@ -744,7 +858,7 @@ export function typeFromNegatedExpressionNode(negatedExpressionNode, context) {
|
|
|
744
858
|
return type;
|
|
745
859
|
}
|
|
746
860
|
|
|
747
|
-
export function
|
|
861
|
+
export function typeFromLogicalExpressionNode(logicalExpressionNode, context) {
|
|
748
862
|
const type = BOOLEAN_TYPE;
|
|
749
863
|
|
|
750
864
|
return type;
|
|
@@ -776,6 +890,44 @@ export function stringLiteralFromPrimitiveNode(primitiveNode, context) {
|
|
|
776
890
|
return stringLiteral;
|
|
777
891
|
}
|
|
778
892
|
|
|
893
|
+
export function leftTermFromCompzrisonTermNode(comparisonTermNode, context) {
|
|
894
|
+
const leftTermNode = comparisonTermNode.getLeftTermNode(),
|
|
895
|
+
leftTerm = termFromTermNode(leftTermNode, context);
|
|
896
|
+
|
|
897
|
+
return leftTerm;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
export function disjunctionFromLogicalTermNode(logicalTermNode, context) {
|
|
901
|
+
const disjunction = logicalTermNode.isDisjunction();
|
|
902
|
+
|
|
903
|
+
return disjunction;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
export function negatedTermFromNegatedTermNode(negatedTermNode, context) {
|
|
907
|
+
const { NegatedTerm } = elements,
|
|
908
|
+
node = negatedTermNode, ///
|
|
909
|
+
string = context.nodeAsString(node),
|
|
910
|
+
termNode = negatedTermNode.getTermNode(),
|
|
911
|
+
type = typeFromNegatedTermNode(termNode, context),
|
|
912
|
+
term = termFromNegatedTermNode(negatedTermNode, context),
|
|
913
|
+
negatedTerm = new NegatedTerm(string, type, term);
|
|
914
|
+
|
|
915
|
+
return negatedTerm;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
export function logicalTermFromLogicalTermNode(logicalTermNode, context) {
|
|
919
|
+
const { LogicalTerm } = elements,
|
|
920
|
+
node = logicalTermNode, ///
|
|
921
|
+
string = context.nodeAsString(node),
|
|
922
|
+
type = typeFromLogicalTermNode(logicalTermNode, context),
|
|
923
|
+
disjunction = disjunctionFromLogicalTermNode(logicalTermNode, context),
|
|
924
|
+
leftTerm = leftTermFromLogicalTermNode(logicalTermNode, context),
|
|
925
|
+
rightTerm = rightTermFromLogicalTermNode(logicalTermNode, context),
|
|
926
|
+
logicalTerm = new LogicalTerm(string, type, disjunction, leftTerm, rightTerm);
|
|
927
|
+
|
|
928
|
+
return logicalTerm;
|
|
929
|
+
}
|
|
930
|
+
|
|
779
931
|
export function variableFromTypeAndVariableNode(type, variableNode, context) {
|
|
780
932
|
const { Variable } = elements,
|
|
781
933
|
name = nameFromVariableNode(variableNode),
|
|
@@ -832,6 +984,13 @@ export function variableFromArrayAssignmentNode(arrayAssignmentNode, context) {
|
|
|
832
984
|
return variable;
|
|
833
985
|
}
|
|
834
986
|
|
|
987
|
+
export function rightTermFromCompzrisonTermNode(comparisonTermNode, context) {
|
|
988
|
+
const rightTermNode = comparisonTermNode.getLeftTermNode(),
|
|
989
|
+
rightTerm = termFromTermNode(rightTermNode, context);
|
|
990
|
+
|
|
991
|
+
return rightTerm;
|
|
992
|
+
}
|
|
993
|
+
|
|
835
994
|
export function anonymousProcedureFromReduceNode(reduceNode, context) {
|
|
836
995
|
const anonymousProcedureNode = reduceNode.getAnonymousProcedureNode(),
|
|
837
996
|
anonymousProcedure = anonymousProcedureFromAnonymousProcedureNode(anonymousProcedureNode, context);
|
|
@@ -839,13 +998,6 @@ export function anonymousProcedureFromReduceNode(reduceNode, context) {
|
|
|
839
998
|
return anonymousProcedure;
|
|
840
999
|
}
|
|
841
1000
|
|
|
842
|
-
export function leftExpressionFromCompzrisonNode(comparisonExpressionNode, context) {
|
|
843
|
-
const leftExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
|
|
844
|
-
leftExpression = expressionFromExpressionNode(leftExpressionNode, context);
|
|
845
|
-
|
|
846
|
-
return leftExpression;
|
|
847
|
-
}
|
|
848
|
-
|
|
849
1001
|
export function variableFromObjectAssignmentNode(objectAssignmentNode, context) {
|
|
850
1002
|
const variableNode = objectAssignmentNode.getVariableNode(),
|
|
851
1003
|
variable = variableFromVariableNode(variableNode, context);
|
|
@@ -865,13 +1017,6 @@ export function expressionFromTypeAndVariableNode(type, variableNode, context) {
|
|
|
865
1017
|
return expression;
|
|
866
1018
|
}
|
|
867
1019
|
|
|
868
|
-
export function rightExpressionFromCompzrisonNode(comparisonExpressionNode, context) {
|
|
869
|
-
const rightExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
|
|
870
|
-
rightExpression = expressionFromExpressionNode(rightExpressionNode, context);
|
|
871
|
-
|
|
872
|
-
return rightExpression;
|
|
873
|
-
}
|
|
874
|
-
|
|
875
1020
|
export function parametersFromArrayAssignmentNode(arrayAssignmentNode, context) {
|
|
876
1021
|
const parametersNode = arrayAssignmentNode.getParametersNode(),
|
|
877
1022
|
parameters = parametersFromParametersNode(parametersNode, context);
|
|
@@ -893,6 +1038,16 @@ export function returnStatementFromReturnBlockNode(returnBlockNode, context) {
|
|
|
893
1038
|
return returnStatement;
|
|
894
1039
|
}
|
|
895
1040
|
|
|
1041
|
+
export function bracketedTermFromBracketedTermNode(bracketedTermNode, context) {
|
|
1042
|
+
const { BracketedTerm } = elements,
|
|
1043
|
+
node = bracketedTermNode, ///
|
|
1044
|
+
string = context.nodeAsString(node), ///
|
|
1045
|
+
term = termFromBracketedTermNode(bracketedTermNode, context),
|
|
1046
|
+
bracketedTerm = new BracketedTerm(string, term);
|
|
1047
|
+
|
|
1048
|
+
return bracketedTerm;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
896
1051
|
export function negatedExpressionFromExpressionNode(expressionNode, context) {
|
|
897
1052
|
let negatedExpression = null;
|
|
898
1053
|
|
|
@@ -905,16 +1060,11 @@ export function negatedExpressionFromExpressionNode(expressionNode, context) {
|
|
|
905
1060
|
return negatedExpression;
|
|
906
1061
|
}
|
|
907
1062
|
|
|
908
|
-
export function
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
const logicalExpressionNode = expressionNode.getLogicalExpressionNode();
|
|
912
|
-
|
|
913
|
-
if (logicalExpressionNode !== null) {
|
|
914
|
-
logicalExpression = logicalExpressionFromLogicalExpressionNode(logicalExpressionNode, context);
|
|
915
|
-
}
|
|
1063
|
+
export function expressionFromNegatedExpressionNode(negatedExpressionNode, context) {
|
|
1064
|
+
const expressionNode = negatedExpressionNode.getExpressionNode(),
|
|
1065
|
+
expression = expressionFromExpressionNode(expressionNode, context);
|
|
916
1066
|
|
|
917
|
-
return
|
|
1067
|
+
return expression;
|
|
918
1068
|
}
|
|
919
1069
|
|
|
920
1070
|
export function negatedFromComparisonExpressionNode(comparisonExpressionNode, context) {
|
|
@@ -923,11 +1073,16 @@ export function negatedFromComparisonExpressionNode(comparisonExpressionNode, co
|
|
|
923
1073
|
return negated;
|
|
924
1074
|
}
|
|
925
1075
|
|
|
926
|
-
export function
|
|
927
|
-
|
|
928
|
-
expression = expressionFromExpressionNode(expressionNode, context);
|
|
1076
|
+
export function logicalExpressionFromExpressionNode(expressionNode, context) {
|
|
1077
|
+
let logicalExpression = null;
|
|
929
1078
|
|
|
930
|
-
|
|
1079
|
+
const logicalExpressionNode = expressionNode.getLogicalExpressionNode();
|
|
1080
|
+
|
|
1081
|
+
if (logicalExpressionNode !== null) {
|
|
1082
|
+
logicalExpression = logicalExpressionFromLogicalExpressionNode(logicalExpressionNode, context);
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
return logicalExpression;
|
|
931
1086
|
}
|
|
932
1087
|
|
|
933
1088
|
export function expressionFromVariableAssignmentNode(variableAssigmentNode, context) {
|
|
@@ -950,6 +1105,18 @@ export function parametersFromAnonymousProcedureNode(anonymousProcedureNode, con
|
|
|
950
1105
|
return parameters;
|
|
951
1106
|
}
|
|
952
1107
|
|
|
1108
|
+
export function comparisonTermFromComparisonTermNode(comparisonTermNode, context) {
|
|
1109
|
+
const { ComparisonTerm } = elements,
|
|
1110
|
+
node = comparisonTermNode, ///
|
|
1111
|
+
string = context.nodeAsString(node),
|
|
1112
|
+
negated = negatedFromComparisonTermNode(comparisonTermNode, context),
|
|
1113
|
+
leftTerm = leftTermFromCompzrisonTermNode(comparisonTermNode, context),
|
|
1114
|
+
rightTerm = rightTermFromCompzrisonTermNode(comparisonTermNode, context),
|
|
1115
|
+
comparisonTerm = new ComparisonTerm(string, negated, leftTerm, rightTerm);
|
|
1116
|
+
|
|
1117
|
+
return comparisonTerm;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
953
1120
|
export function returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, context) {
|
|
954
1121
|
const returnBlockNode = anonymousProcedureNode.getReturnBlockNode(),
|
|
955
1122
|
returnBlock = returnBlockFromReturnBlockNode(returnBlockNode, context);
|
|
@@ -957,6 +1124,19 @@ export function returnBlockFromAnonymousProcedureNode(anonymousProcedureNode, co
|
|
|
957
1124
|
return returnBlock;
|
|
958
1125
|
}
|
|
959
1126
|
|
|
1127
|
+
export function procedureFromProcedureDeclarationNode(procedureDeclarationNode, context) {
|
|
1128
|
+
const { Procedure } = elements,
|
|
1129
|
+
type = typeFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1130
|
+
label = labelFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1131
|
+
parameters = parametersFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1132
|
+
returnBlock = returnBlockFromProcedureDeclarationNode(procedureDeclarationNode, context),
|
|
1133
|
+
procedureString = procedureStringFromTypeLabelParametersAndReturnBlock(type, label, parameters, returnBlock),
|
|
1134
|
+
string = procedureString, ///
|
|
1135
|
+
procedure = new Procedure(string, type, label, parameters, returnBlock);
|
|
1136
|
+
|
|
1137
|
+
return procedure;
|
|
1138
|
+
}
|
|
1139
|
+
|
|
960
1140
|
export function bracketedExpressionFromExpressionNode(expressionNode, context) {
|
|
961
1141
|
let bracketedExpression = null;
|
|
962
1142
|
|
|
@@ -971,24 +1151,11 @@ export function bracketedExpressionFromExpressionNode(expressionNode, context) {
|
|
|
971
1151
|
|
|
972
1152
|
export function expressionFromBracketedExpressionNode(bracketedExpressionNode, context) {
|
|
973
1153
|
const expressionNode = bracketedExpressionNode.getExpressionNode(),
|
|
974
|
-
|
|
1154
|
+
expression = expressionFromExpressionNode(expressionNode, context);
|
|
975
1155
|
|
|
976
1156
|
return expression;
|
|
977
1157
|
}
|
|
978
1158
|
|
|
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
1159
|
export function comparisonExpressionFromExpressionNode(expressionNOde, context) {
|
|
993
1160
|
let comparisonExpression = null;
|
|
994
1161
|
|
|
@@ -1042,24 +1209,25 @@ export function variableFromTypeAndVariableAssignmentNode(type, variableAssignme
|
|
|
1042
1209
|
return variable;
|
|
1043
1210
|
}
|
|
1044
1211
|
|
|
1045
|
-
export function
|
|
1046
|
-
const
|
|
1047
|
-
|
|
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);
|
|
1212
|
+
export function leftExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context) {
|
|
1213
|
+
const leftExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
|
|
1214
|
+
leftExpression = expressionFromExpressionNode(leftExpressionNode, context);
|
|
1054
1215
|
|
|
1055
|
-
return
|
|
1216
|
+
return leftExpression;
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
export function rightExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context) {
|
|
1220
|
+
const rightExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
|
|
1221
|
+
rightExpression = expressionFromExpressionNode(rightExpressionNode, context);
|
|
1222
|
+
|
|
1223
|
+
return rightExpression;
|
|
1056
1224
|
}
|
|
1057
1225
|
|
|
1058
1226
|
export function variableAssignmentFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context) {
|
|
1059
1227
|
const { VariableAssignment } = elements,
|
|
1060
1228
|
variable = variableFromTypeAndVariableAssignmentNode(type, variableAssignmentNode, context),
|
|
1061
1229
|
expression = expressionFromVariableAssignmentNode(variableAssignmentNode, context),
|
|
1062
|
-
variableAssignmentString =
|
|
1230
|
+
variableAssignmentString = variableAssignmentStringFromTypeAndVariable(type, variable, context),
|
|
1063
1231
|
string = variableAssignmentString, ///
|
|
1064
1232
|
assignment = new VariableAssignment(string, variable, expression);
|
|
1065
1233
|
|
package/src/utilities/string.js
CHANGED
|
@@ -5,6 +5,13 @@ import nullNode from "../nullNode";
|
|
|
5
5
|
import { NULL } from "../constants";
|
|
6
6
|
import { stringFromStringLiteral } from "./stringLiteral";
|
|
7
7
|
|
|
8
|
+
export function ternaryStringFromTerm(term) {
|
|
9
|
+
const termString = term.getString(),
|
|
10
|
+
ternaryString = `if (${termString}) { ... } else { ... }`;
|
|
11
|
+
|
|
12
|
+
return ternaryString;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
export function variableStringFromName(name) {
|
|
9
16
|
const variableString = name; ///
|
|
10
17
|
|
|
@@ -53,9 +60,30 @@ export function primtiveStringFromStringLiteral(stringLiteral) {
|
|
|
53
60
|
return primtiveString;
|
|
54
61
|
}
|
|
55
62
|
|
|
56
|
-
export function
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
export function termStringFromPrimitiveAndProperties(primitive, properties) {
|
|
64
|
+
let termString;
|
|
65
|
+
|
|
66
|
+
if (false) {
|
|
67
|
+
///
|
|
68
|
+
} else if (primitive !== null) {
|
|
69
|
+
const primitiveString = primitive.toString();
|
|
70
|
+
|
|
71
|
+
termString = primitiveString; ///
|
|
72
|
+
} else {
|
|
73
|
+
properties.forEach((property) => {
|
|
74
|
+
if (property !== null) {
|
|
75
|
+
const propertyString = property.getString();
|
|
76
|
+
|
|
77
|
+
termString = propertyString; ///
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return termString;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function variableAssignmentStringFromTypeAndVariable(type, variable) {
|
|
86
|
+
const variableString = variable.getString(),
|
|
59
87
|
variableAssignmentString = `${type} ${variableString} = ... ;`;
|
|
60
88
|
|
|
61
89
|
return variableAssignmentString;
|