occam-furtle 3.0.521 → 3.0.524
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/all.js +126 -0
- package/lib/element/assignment/object.js +23 -1
- package/lib/element/error.js +3 -3
- package/lib/element/every.js +13 -13
- package/lib/element/exists.js +39 -0
- package/lib/element/expression.js +18 -2
- package/lib/element/importStatement.js +3 -2
- package/lib/element/procedure.js +2 -1
- package/lib/element/procedureCall.js +8 -1
- package/lib/element/reduce.js +5 -5
- package/lib/element/referenceListLiteral.js +24 -0
- package/lib/element/references.js +32 -0
- package/lib/element/some.js +7 -7
- package/lib/element/terms.js +2 -2
- package/lib/element/values.js +16 -3
- package/lib/example/furtle/bnf.js +2 -2
- package/lib/node/all.js +39 -0
- package/lib/node/exists.js +39 -0
- package/lib/node/expression.js +9 -1
- package/lib/node/references.js +23 -0
- package/lib/node/referencesListLiteral.js +27 -0
- package/lib/nominalValueProperties.js +34 -18
- package/lib/nonTerminalNodeMap.js +10 -2
- package/lib/parameterNames.js +5 -1
- package/lib/preamble.js +7 -3
- package/lib/process/instantiate.js +1 -1
- package/lib/ruleNames.js +17 -1
- package/lib/utilities/element.js +110 -7
- package/lib/utilities/string.js +38 -5
- package/package.json +5 -5
- package/src/element/all.js +119 -0
- package/src/element/assignment/object.js +48 -1
- package/src/element/error.js +3 -3
- package/src/element/every.js +14 -12
- package/src/element/exists.js +42 -0
- package/src/element/expression.js +19 -1
- package/src/element/importStatement.js +3 -1
- package/src/element/procedure.js +2 -0
- package/src/element/procedureCall.js +14 -0
- package/src/element/reduce.js +4 -4
- package/src/element/referenceListLiteral.js +19 -0
- package/src/element/references.js +31 -0
- package/src/element/some.js +7 -6
- package/src/element/terms.js +1 -1
- package/src/element/values.js +26 -2
- package/src/example/furtle/bnf.js +1 -1
- package/src/node/all.js +44 -0
- package/src/node/exists.js +44 -0
- package/src/node/expression.js +17 -1
- package/src/node/references.js +16 -0
- package/src/node/referencesListLiteral.js +23 -0
- package/src/nominalValueProperties.js +43 -25
- package/src/nonTerminalNodeMap.js +15 -3
- package/src/parameterNames.js +1 -0
- package/src/preamble.js +6 -2
- package/src/process/instantiate.js +6 -1
- package/src/ruleNames.js +4 -0
- package/src/utilities/element.js +147 -14
- package/src/utilities/string.js +49 -6
package/src/utilities/element.js
CHANGED
|
@@ -10,6 +10,8 @@ import { ternaryStringFromTerm,
|
|
|
10
10
|
termStringFromProperties,
|
|
11
11
|
valueStringFromProperties,
|
|
12
12
|
expressionStringFromProperties,
|
|
13
|
+
allStringFromVariableAndValues,
|
|
14
|
+
referencesStringFromReferencesArray,
|
|
13
15
|
returnBlockStringFromReturnStatementNode,
|
|
14
16
|
variableAssignmentStringFromTypeAndVariable,
|
|
15
17
|
someStringFromVariableAndAnonymousProcedure,
|
|
@@ -19,6 +21,23 @@ import { ternaryStringFromTerm,
|
|
|
19
21
|
procedureStringFromTypeLabelExportedParametersAndReturnBlock,
|
|
20
22
|
reduceStringFromVariableInitialExpressionAndAnonymousProcedure } from "../utilities/string";
|
|
21
23
|
|
|
24
|
+
export function allFromAllNode(someNode, context) {
|
|
25
|
+
const { All } = elements,
|
|
26
|
+
node = someNode, ///
|
|
27
|
+
values = valuesFromAllNode(someNode, context),
|
|
28
|
+
variable = variableFromAllNode(someNode, context),
|
|
29
|
+
references = referencesFromAllNode(someNode, context),
|
|
30
|
+
allString = allStringFromVariableAndValues(variable, values),
|
|
31
|
+
string = allString, ///
|
|
32
|
+
breakPoint = null;
|
|
33
|
+
|
|
34
|
+
context = null;
|
|
35
|
+
|
|
36
|
+
const all = new All(context, string, node, breakPoint, values, variable, references);
|
|
37
|
+
|
|
38
|
+
return all;
|
|
39
|
+
}
|
|
40
|
+
|
|
22
41
|
export function someFromSomeNode(someNode, context) {
|
|
23
42
|
const { Some } = elements,
|
|
24
43
|
node = someNode, ///
|
|
@@ -141,18 +160,21 @@ export function labelFromLabelNode(labelNode, context) {
|
|
|
141
160
|
return label;
|
|
142
161
|
}
|
|
143
162
|
|
|
144
|
-
export function
|
|
145
|
-
const {
|
|
146
|
-
node =
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
163
|
+
export function existsFromExistsNode(someNode, context) {
|
|
164
|
+
const { Exists } = elements,
|
|
165
|
+
node = someNode, ///
|
|
166
|
+
values = valuesFromExistsNode(someNode, context),
|
|
167
|
+
variable = variableFromExistsNode(someNode, context),
|
|
168
|
+
references = referencesFromExistsNode(someNode, context),
|
|
169
|
+
existsString = existsStringFromVariableAndValues(variable, values),
|
|
170
|
+
string = existsString, ///
|
|
171
|
+
breakPoint = null;
|
|
150
172
|
|
|
151
173
|
context = null;
|
|
152
174
|
|
|
153
|
-
const
|
|
175
|
+
const exists = new Exists(context, string, node, breakPoint, values, variable, references);
|
|
154
176
|
|
|
155
|
-
return
|
|
177
|
+
return exists;
|
|
156
178
|
}
|
|
157
179
|
|
|
158
180
|
export function valuesFromValuesNode(valuesNode, context) {
|
|
@@ -221,6 +243,20 @@ export function ternaryFromTernaryNode(ternaryNode, context) {
|
|
|
221
243
|
return ternary;
|
|
222
244
|
}
|
|
223
245
|
|
|
246
|
+
export function labelFromReferenceNode(referenceNode, context) {
|
|
247
|
+
const { Label } = elements,
|
|
248
|
+
node = referenceNode,
|
|
249
|
+
string = context.nodeAsString(node),
|
|
250
|
+
breakPoint = null,
|
|
251
|
+
name = nameFromReferenceNode(referenceNode, context);
|
|
252
|
+
|
|
253
|
+
context = null;
|
|
254
|
+
|
|
255
|
+
const label = new Label(context, string, node, breakPoint, name);
|
|
256
|
+
|
|
257
|
+
return label;
|
|
258
|
+
}
|
|
259
|
+
|
|
224
260
|
export function containsFromContainsNode(containsNode, context) {
|
|
225
261
|
const { Contains } = elements,
|
|
226
262
|
node = containsNode, ///
|
|
@@ -453,6 +489,8 @@ export function expressionFromExpressionNode(expressionNode, context) {
|
|
|
453
489
|
some = someFromExpressionNode(expressionNode, context),
|
|
454
490
|
every = everyFromExpressionNode(expressionNode, context),
|
|
455
491
|
reduce = reduceFromExpressionNode(expressionNode, context),
|
|
492
|
+
all = allFromExpressionNode(expressionNode, context),
|
|
493
|
+
exists = existsFromExpressionNode(expressionNode, context),
|
|
456
494
|
ternary = ternaryFromExpressionNode(expressionNode, context),
|
|
457
495
|
nodeQuery = nodeQueryFromExpressionNode(expressionNode, context),
|
|
458
496
|
nodesQuery = nodesQueryFromExpressionNode(expressionNode, context),
|
|
@@ -469,6 +507,8 @@ export function expressionFromExpressionNode(expressionNode, context) {
|
|
|
469
507
|
some,
|
|
470
508
|
every,
|
|
471
509
|
reduce,
|
|
510
|
+
all,
|
|
511
|
+
exists,
|
|
472
512
|
ternary,
|
|
473
513
|
nodeQuery,
|
|
474
514
|
nodesQuery,
|
|
@@ -487,7 +527,7 @@ export function expressionFromExpressionNode(expressionNode, context) {
|
|
|
487
527
|
|
|
488
528
|
context = null;
|
|
489
529
|
|
|
490
|
-
const expression = new Expression(context, string, node, breakPoint, term, some, every, reduce, ternary, nodeQuery, nodesQuery, lengthOf, toInteger, tryInteger, contains, endsWith, startsWith, returnBlock, procedureCall);
|
|
530
|
+
const expression = new Expression(context, string, node, breakPoint, term, some, every, reduce, all, exists, ternary, nodeQuery, nodesQuery, lengthOf, toInteger, tryInteger, contains, endsWith, startsWith, returnBlock, procedureCall);
|
|
491
531
|
|
|
492
532
|
return expression;
|
|
493
533
|
}
|
|
@@ -506,6 +546,23 @@ export function tryIntegerFromTryIntegerNode(tryIntegerNode, context) {
|
|
|
506
546
|
return tryInteger;
|
|
507
547
|
}
|
|
508
548
|
|
|
549
|
+
export function referencesFromReferencesNode(referencesNode, context) {
|
|
550
|
+
const { References } = elements,
|
|
551
|
+
node = referencesNode, ///
|
|
552
|
+
referenceNodes = referencesNode.getReferenceNodes(),
|
|
553
|
+
referencesArray = referencesArrayFromReferenceNodes(referenceNodes, context),
|
|
554
|
+
referencesString = referencesStringFromReferencesArray(referencesArray),
|
|
555
|
+
string = referencesString, ///
|
|
556
|
+
array = referencesArray, ///
|
|
557
|
+
breakPoint = null;
|
|
558
|
+
|
|
559
|
+
context = null;
|
|
560
|
+
|
|
561
|
+
const references = new References(context, string, node, breakPoint, array);
|
|
562
|
+
|
|
563
|
+
return references;
|
|
564
|
+
}
|
|
565
|
+
|
|
509
566
|
export function returnBlockFromReturnBlockNode(returnBlockNode, context) {
|
|
510
567
|
const { ReturnBlock } = elements,
|
|
511
568
|
node = returnBlockNode, ///
|
|
@@ -752,12 +809,26 @@ export function nameFromTypeNode(typeNode, context) {
|
|
|
752
809
|
return name;
|
|
753
810
|
}
|
|
754
811
|
|
|
812
|
+
export function valuesFromAllNode(allNode, context) {
|
|
813
|
+
const valuesNode = allNode.getValuesNode(), ///
|
|
814
|
+
values = valuesFromValuesNode(valuesNode, context);
|
|
815
|
+
|
|
816
|
+
return values;
|
|
817
|
+
}
|
|
818
|
+
|
|
755
819
|
export function nameFromLabelNode(labelNode, context) {
|
|
756
820
|
const name = labelNode.getName();
|
|
757
821
|
|
|
758
822
|
return name;
|
|
759
823
|
}
|
|
760
824
|
|
|
825
|
+
export function variableFromAllNode(allNode, context) {
|
|
826
|
+
const variableNode = allNode.getVariableNode(), ///
|
|
827
|
+
variable = variableFromVariableNode(variableNode, context);
|
|
828
|
+
|
|
829
|
+
return variable;
|
|
830
|
+
}
|
|
831
|
+
|
|
761
832
|
export function valueFromReduceNode(reduceNode, context) {
|
|
762
833
|
const valueNode = reduceNode.getValueNode(),
|
|
763
834
|
value = valueFromValueNode(valueNode, context);
|
|
@@ -790,8 +861,15 @@ export function typeFromBindingNode(bindingNode, context) {
|
|
|
790
861
|
return type;
|
|
791
862
|
}
|
|
792
863
|
|
|
864
|
+
export function valuesFromExistsNode(existsNode, context) {
|
|
865
|
+
const valuesNode = existsNode.getValuesNode(), ///
|
|
866
|
+
values = valuesFromValuesNode(valuesNode, context);
|
|
867
|
+
|
|
868
|
+
return values;
|
|
869
|
+
}
|
|
870
|
+
|
|
793
871
|
export function variableFromSomeNode(someNode, context) {
|
|
794
|
-
const variableNode = someNode.getVariableNode(),
|
|
872
|
+
const variableNode = someNode.getVariableNode(),
|
|
795
873
|
variable = variableFromVariableNode(variableNode, context);
|
|
796
874
|
|
|
797
875
|
return variable;
|
|
@@ -821,6 +899,13 @@ export function typeFromVariableNode(variableNode, context) {
|
|
|
821
899
|
return type;
|
|
822
900
|
}
|
|
823
901
|
|
|
902
|
+
export function referencesFromAllNode(allNode, context) {
|
|
903
|
+
const referencesNode = allNode.getReferencesNode(),
|
|
904
|
+
references = referencesFromReferencesNode(referencesNode, context);
|
|
905
|
+
|
|
906
|
+
return references;
|
|
907
|
+
}
|
|
908
|
+
|
|
824
909
|
export function typeFromProcedureNode(procedureNode, context) {
|
|
825
910
|
const typeNode = procedureNode.getTypeNode(),
|
|
826
911
|
type = typeFromTypeNode(typeNode, context);
|
|
@@ -892,6 +977,18 @@ export function variableFromValueNode(valueNode, context) {
|
|
|
892
977
|
return variable;
|
|
893
978
|
}
|
|
894
979
|
|
|
980
|
+
export function allFromExpressionNode(expressionNode, context) {
|
|
981
|
+
let all = null;
|
|
982
|
+
|
|
983
|
+
const allNode = expressionNode.getAllNode();
|
|
984
|
+
|
|
985
|
+
if (allNode !== null) {
|
|
986
|
+
all = allFromAllNode(allNode, context);
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
return all;
|
|
990
|
+
}
|
|
991
|
+
|
|
895
992
|
export function primitiveFromValueNode(valueNode, context) {
|
|
896
993
|
let primitive = null;
|
|
897
994
|
|
|
@@ -911,10 +1008,17 @@ export function variableFromReduceNode(reduceNode, context) {
|
|
|
911
1008
|
return variable;
|
|
912
1009
|
}
|
|
913
1010
|
|
|
1011
|
+
export function variableFromExistsNode(existsNode, context) {
|
|
1012
|
+
const variableNode = existsNode.getVariableNode(), ///
|
|
1013
|
+
variable = variableFromVariableNode(variableNode, context);
|
|
1014
|
+
|
|
1015
|
+
return variable;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
914
1018
|
export function queryFromNodeQueryNode(nodeQueryNode, context) {
|
|
915
1019
|
const string = nodeQueryNode.getString(),
|
|
916
|
-
|
|
917
|
-
|
|
1020
|
+
expressionString = string, ///
|
|
1021
|
+
query = Query.fromExpressionString(expressionString);
|
|
918
1022
|
|
|
919
1023
|
return query;
|
|
920
1024
|
}
|
|
@@ -1019,6 +1123,18 @@ export function termFromNegatedTermNode(negatedTermNode, context) {
|
|
|
1019
1123
|
return term;
|
|
1020
1124
|
}
|
|
1021
1125
|
|
|
1126
|
+
export function existsFromExpressionNode(expressionNode, context) {
|
|
1127
|
+
let exists = null;
|
|
1128
|
+
|
|
1129
|
+
const existsNode = expressionNode.getExistsNode();
|
|
1130
|
+
|
|
1131
|
+
if (existsNode !== null) {
|
|
1132
|
+
exists = existsFromExistsNode(existsNode, context);
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
return exists;
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1022
1138
|
export function argumentTypeFromTypeNode(typeNode, context) {
|
|
1023
1139
|
let argumentType = null;
|
|
1024
1140
|
|
|
@@ -1033,9 +1149,16 @@ export function argumentTypeFromTypeNode(typeNode, context) {
|
|
|
1033
1149
|
return argumentType;
|
|
1034
1150
|
}
|
|
1035
1151
|
|
|
1152
|
+
export function referencesFromExistsNode(existsNode, context) {
|
|
1153
|
+
const referencesNode = existsNode.getReferencesNode(),
|
|
1154
|
+
references = referencesFromReferencesNode(referencesNode, context);
|
|
1155
|
+
|
|
1156
|
+
return references;
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1036
1159
|
export function variableFromLengthOfNode(lengthOfNode, context) {
|
|
1037
1160
|
const variableNode = lengthOfNode.getVariableNode(),
|
|
1038
|
-
|
|
1161
|
+
variable = variableFromVariableNode(variableNode, context);
|
|
1039
1162
|
|
|
1040
1163
|
return variable;
|
|
1041
1164
|
}
|
|
@@ -1139,7 +1262,7 @@ export function variableFromToIntegerNode(toIntegerNode, context) {
|
|
|
1139
1262
|
|
|
1140
1263
|
export function termFromBracketedTermNode(bracketedTermNode, context) {
|
|
1141
1264
|
const termNode = bracketedTermNode.getTermNode(),
|
|
1142
|
-
|
|
1265
|
+
term = termFromTermNode(termNode, context);
|
|
1143
1266
|
|
|
1144
1267
|
return term;
|
|
1145
1268
|
}
|
|
@@ -1632,6 +1755,16 @@ export function bindingsArrayFromBindingsNode(bindingsNode, context) {
|
|
|
1632
1755
|
return bindingsArray;
|
|
1633
1756
|
}
|
|
1634
1757
|
|
|
1758
|
+
export function referencesArrayFromReferenceNodes(referenceNodes, context) {
|
|
1759
|
+
const referencesArray = referenceNodes.map((referenceNode) => { ///
|
|
1760
|
+
const reference = referenceFromReferenceNode(referenceNode, context);
|
|
1761
|
+
|
|
1762
|
+
return reference;
|
|
1763
|
+
});
|
|
1764
|
+
|
|
1765
|
+
return referencesArray;
|
|
1766
|
+
}
|
|
1767
|
+
|
|
1635
1768
|
export function parametersArrayFromParametersNode(parametersNode, context) {
|
|
1636
1769
|
const parameterNodes = parametersNode.getParameterNodes(),
|
|
1637
1770
|
parametersArray = parameterNodes.map((parameterNode) => { ///
|
package/src/utilities/string.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { EXPORT, EMPTY_STRING } from "../constants";
|
|
4
4
|
import { stringFromStringLiteral } from "./stringLiteral";
|
|
5
|
+
import {referenceFromReferenceNode} from "./element";
|
|
5
6
|
|
|
6
7
|
export function ternaryStringFromTerm(term) {
|
|
7
8
|
const termString = term.getString(),
|
|
@@ -84,11 +85,14 @@ export function valuesStringFromValuesArray(valuesArray) {
|
|
|
84
85
|
return valuesString;
|
|
85
86
|
}
|
|
86
87
|
|
|
87
|
-
export function
|
|
88
|
-
const
|
|
89
|
-
|
|
88
|
+
export function allStringFromVariableAndValues(variable, values) {
|
|
89
|
+
const variableString = variable.getString(),
|
|
90
|
+
valuesString = values.getString(),
|
|
91
|
+
allString = (valuesString !== EMPTY_STRING) ?
|
|
92
|
+
`all(${variableString}, ${valuesString})` :
|
|
93
|
+
`all(${variableString})`;
|
|
90
94
|
|
|
91
|
-
return
|
|
95
|
+
return allString;
|
|
92
96
|
}
|
|
93
97
|
|
|
94
98
|
export function expressionStringFromProperties(properties) {
|
|
@@ -105,6 +109,13 @@ export function expressionStringFromProperties(properties) {
|
|
|
105
109
|
return expressionString;
|
|
106
110
|
}
|
|
107
111
|
|
|
112
|
+
export function primtiveStringFromNominalValue(nominalValue) {
|
|
113
|
+
const string = nominalValue.getString(),
|
|
114
|
+
primtiveString = string; ///
|
|
115
|
+
|
|
116
|
+
return primtiveString;
|
|
117
|
+
}
|
|
118
|
+
|
|
108
119
|
export function primtiveStringFromStringLiteral(stringLiteral) {
|
|
109
120
|
const string = stringFromStringLiteral(stringLiteral),
|
|
110
121
|
primtiveString = string; ///
|
|
@@ -119,8 +130,8 @@ export function primtiveStringFromNominalValues(nominalValues) {
|
|
|
119
130
|
const nominalValueString = nominalValue.getString();
|
|
120
131
|
|
|
121
132
|
primitiveString = (primitiveString !== null) ?
|
|
122
|
-
`${primitiveString}, ${nominalValueString}` :
|
|
123
|
-
|
|
133
|
+
`${primitiveString}, '${nominalValueString}'` :
|
|
134
|
+
`'${nominalValueString}'`;
|
|
124
135
|
|
|
125
136
|
return primitiveString;
|
|
126
137
|
}, null);
|
|
@@ -130,6 +141,30 @@ export function primtiveStringFromNominalValues(nominalValues) {
|
|
|
130
141
|
return primtiveString;
|
|
131
142
|
}
|
|
132
143
|
|
|
144
|
+
export function existsStringFromVariableAndValues(variable, values) {
|
|
145
|
+
const variableString = variable.getString(),
|
|
146
|
+
valuesString = values.getString(),
|
|
147
|
+
existsString = (valuesString !== EMPTY_STRING) ?
|
|
148
|
+
`exists(${variableString}, ${valuesString})` :
|
|
149
|
+
`exists(${variableString})`;
|
|
150
|
+
|
|
151
|
+
return existsString;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export function referencesStringFromReferencesArray(referencesArray) {
|
|
155
|
+
const referencesString = referencesArray.reduce((referencesString, reference) => {
|
|
156
|
+
const referenceString = reference.getString();
|
|
157
|
+
|
|
158
|
+
referencesString = (referencesString === null) ?
|
|
159
|
+
referenceString :
|
|
160
|
+
`${referencesString}, ${referenceString}`;
|
|
161
|
+
|
|
162
|
+
return referencesString;
|
|
163
|
+
}, null); ///
|
|
164
|
+
|
|
165
|
+
return referencesString;
|
|
166
|
+
}
|
|
167
|
+
|
|
133
168
|
export function returnBlockStringFromReturnStatementNode(returnStatement) {
|
|
134
169
|
const returnStatementString = returnStatement.getString(),
|
|
135
170
|
returnBlockString = `{ ... ${returnStatementString} }`;
|
|
@@ -157,6 +192,14 @@ export function typeStringFromTypeNameAndArgumentTypeName(typeName, argumentType
|
|
|
157
192
|
return typeString;
|
|
158
193
|
}
|
|
159
194
|
|
|
195
|
+
export function procedureCallStringFromReferenceAndValues(reference, values) {
|
|
196
|
+
const valuesString = values.getString(),
|
|
197
|
+
referenceString = reference.getString(),
|
|
198
|
+
procedureCallString = `${referenceString}(${valuesString})`;
|
|
199
|
+
|
|
200
|
+
return procedureCallString;
|
|
201
|
+
}
|
|
202
|
+
|
|
160
203
|
export function variableAssignmentStringFromTypeAndVariable(type, variable) {
|
|
161
204
|
const typeString = type.getString(),
|
|
162
205
|
variableString = variable.getString(),
|