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.
- package/lib/element/expression/negated.js +2 -2
- package/lib/element/nodesQuery.js +2 -2
- package/lib/element/primitive.js +128 -60
- 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 +19 -5
- package/lib/node/primitive.js +40 -1
- package/lib/utilities/element.js +211 -84
- package/lib/utilities/primitive.js +6 -5
- package/lib/utilities/string.js +42 -14
- package/package.json +4 -4
- package/src/element/expression/negated.js +1 -1
- package/src/element/nodesQuery.js +1 -1
- package/src/element/primitive.js +105 -62
- 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 +25 -4
- package/src/node/primitive.js +47 -0
- package/src/utilities/element.js +272 -119
- package/src/utilities/primitive.js +13 -20
- package/src/utilities/string.js +48 -18
- package/test/main.js +0 -113
package/src/node/primitive.js
CHANGED
|
@@ -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
|
|
package/src/utilities/element.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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
|
}
|
|
@@ -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
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
365
|
-
const {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
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
|
|
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
|
|
472
|
-
const
|
|
502
|
+
export function typeFromPrimitiveNode(primitiveNode, context) {
|
|
503
|
+
const type = primitiveNode.getType();
|
|
473
504
|
|
|
474
|
-
return
|
|
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
|
|
511
|
-
const
|
|
535
|
+
export function valueFromPrimitiveNode(primitiveNode, context) {
|
|
536
|
+
const value = primitiveNode.getValue();
|
|
512
537
|
|
|
513
|
-
return
|
|
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
|
|
537
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
774
|
-
const
|
|
873
|
+
export function leftTermFromCompzrisonTermNode(comparisonTermNode, context) {
|
|
874
|
+
const leftTermNode = comparisonTermNode.getLeftTermNode(),
|
|
875
|
+
leftTerm = termFromTermNode(leftTermNode, context);
|
|
775
876
|
|
|
776
|
-
return
|
|
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
|
|
909
|
-
|
|
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
|
|
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
|
|
927
|
-
|
|
928
|
-
expression = expressionFromExpressionNode(expressionNode, context);
|
|
1062
|
+
export function logicalExpressionFromExpressionNode(expressionNode, context) {
|
|
1063
|
+
let logicalExpression = null;
|
|
929
1064
|
|
|
930
|
-
|
|
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
|
-
|
|
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
|
|
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);
|
|
1198
|
+
export function leftExpressionFromCompzrisonExpressionNode(comparisonExpressionNode, context) {
|
|
1199
|
+
const leftExpressionNode = comparisonExpressionNode.getLeftExpressionNode(),
|
|
1200
|
+
leftExpression = expressionFromExpressionNode(leftExpressionNode, context);
|
|
1054
1201
|
|
|
1055
|
-
return
|
|
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 =
|
|
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
|
|
1101
|
-
const
|
|
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
|
|