occam-verify-cli 1.0.184 → 1.0.192
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/constants.js +5 -1
- package/lib/dom/assertion/property.js +2 -4
- package/lib/dom/assertion/subproof.js +3 -5
- package/lib/dom/assertion/type.js +6 -8
- package/lib/dom/axiom.js +15 -100
- package/lib/dom/conjecture.js +5 -4
- package/lib/dom/constructor/bracketed.js +6 -7
- package/lib/dom/declaration/complexType.js +6 -6
- package/lib/dom/declaration/metavariable.js +3 -5
- package/lib/dom/declaration/type.js +2 -2
- package/lib/dom/declaration.js +2 -4
- package/lib/dom/derivation.js +2 -4
- package/lib/dom/equality.js +9 -11
- package/lib/dom/frame.js +8 -12
- package/lib/dom/judgement.js +2 -4
- package/lib/dom/lemma.js +5 -4
- package/lib/dom/metaLemma.js +5 -4
- package/lib/dom/metaType.js +2 -4
- package/lib/dom/metatheorem.js +5 -4
- package/lib/dom/metavariable.js +12 -15
- package/lib/dom/parameter.js +2 -4
- package/lib/dom/procedureCall.js +6 -10
- package/lib/dom/proof.js +2 -4
- package/lib/dom/property.js +16 -51
- package/lib/dom/propertyRelation.js +8 -10
- package/lib/dom/reference.js +7 -11
- package/lib/dom/rule.js +6 -8
- package/lib/dom/statement.js +27 -31
- package/lib/dom/step.js +4 -6
- package/lib/dom/subDerivation.js +2 -4
- package/lib/dom/subproof.js +6 -8
- package/lib/dom/term.js +14 -20
- package/lib/dom/theorem.js +5 -4
- package/lib/dom/topLevelAssertion.js +30 -24
- package/lib/dom/topLevelMetaAssertion.js +5 -15
- package/lib/dom/type.js +8 -25
- package/lib/dom/variable.js +5 -11
- package/lib/node/assertion/contained.js +45 -58
- package/lib/node/assertion/defined.js +33 -58
- package/lib/node/assertion/property.js +33 -58
- package/lib/node/assertion/satisfies.js +21 -58
- package/lib/node/assertion/subproof.js +21 -58
- package/lib/node/assertion/type.js +33 -58
- package/lib/node/axiom.js +6 -52
- package/lib/node/combinator.js +6 -57
- package/lib/node/conclusion.js +21 -58
- package/lib/node/conjecture.js +6 -52
- package/lib/node/constructor.js +6 -57
- package/lib/node/declaration/combinator.js +13 -61
- package/lib/node/declaration/complexType.js +27 -75
- package/lib/node/declaration/constructor.js +24 -70
- package/lib/node/declaration/metavariable.js +40 -58
- package/lib/node/declaration/property.js +27 -72
- package/lib/node/declaration/type.js +23 -69
- package/lib/node/declaration/variable.js +28 -83
- package/lib/node/declaration.js +33 -58
- package/lib/node/deduction.js +21 -58
- package/lib/node/derivation.js +21 -58
- package/lib/node/equality.js +34 -58
- package/lib/node/error.js +6 -57
- package/lib/node/frame.js +52 -58
- package/lib/node/judgement.js +33 -58
- package/lib/node/label.js +21 -58
- package/lib/{node.js → node/labels.js} +25 -27
- package/lib/node/lemma.js +6 -52
- package/lib/node/metaLemma.js +6 -52
- package/lib/node/metaType.js +18 -60
- package/lib/node/metatheorem.js +6 -52
- package/lib/node/metavariable.js +40 -61
- package/lib/node/parameter.js +22 -58
- package/lib/node/parenthesisedLabels.js +123 -0
- package/lib/node/premise.js +33 -58
- package/lib/node/procedureCall.js +33 -58
- package/lib/node/proof.js +21 -58
- package/lib/node/property.js +18 -62
- package/lib/node/propertyRelation.js +40 -58
- package/lib/node/reference.js +21 -58
- package/lib/node/rule.js +6 -52
- package/lib/node/statement.js +105 -58
- package/lib/node/step.js +47 -58
- package/lib/node/subDerivation.js +21 -58
- package/lib/node/subproof.js +47 -58
- package/lib/node/supposition.js +33 -58
- package/lib/node/term.js +57 -58
- package/lib/node/theorem.js +6 -52
- package/lib/node/topLevelAssertion.js +86 -59
- package/lib/node/topLevelMetaAssertion.js +65 -59
- package/lib/node/type.js +14 -60
- package/lib/node/variable.js +14 -60
- package/lib/nominal/parser.js +3 -3
- package/lib/nonTerminalNodeMap.js +5 -3
- package/lib/ruleNames.js +10 -2
- package/lib/utilities/node.js +283 -7
- package/lib/utilities/type.js +16 -4
- package/lib/verifier/topLevel.js +6 -6
- package/package.json +8 -8
- package/src/constants.js +1 -0
- package/src/dom/assertion/property.js +1 -4
- package/src/dom/assertion/subproof.js +2 -6
- package/src/dom/assertion/type.js +7 -10
- package/src/dom/axiom.js +7 -77
- package/src/dom/conjecture.js +6 -1
- package/src/dom/constructor/bracketed.js +6 -8
- package/src/dom/declaration/complexType.js +7 -6
- package/src/dom/declaration/metavariable.js +2 -6
- package/src/dom/declaration/type.js +4 -2
- package/src/dom/declaration.js +1 -5
- package/src/dom/derivation.js +1 -4
- package/src/dom/equality.js +13 -17
- package/src/dom/frame.js +7 -19
- package/src/dom/judgement.js +1 -4
- package/src/dom/lemma.js +6 -1
- package/src/dom/metaLemma.js +6 -1
- package/src/dom/metaType.js +1 -5
- package/src/dom/metatheorem.js +6 -1
- package/src/dom/metavariable.js +11 -25
- package/src/dom/parameter.js +2 -6
- package/src/dom/procedureCall.js +5 -14
- package/src/dom/proof.js +1 -4
- package/src/dom/property.js +21 -78
- package/src/dom/propertyRelation.js +10 -14
- package/src/dom/reference.js +6 -18
- package/src/dom/rule.js +6 -12
- package/src/dom/statement.js +26 -46
- package/src/dom/step.js +3 -5
- package/src/dom/subDerivation.js +1 -4
- package/src/dom/subproof.js +8 -12
- package/src/dom/term.js +16 -32
- package/src/dom/theorem.js +6 -1
- package/src/dom/topLevelAssertion.js +30 -25
- package/src/dom/topLevelMetaAssertion.js +16 -28
- package/src/dom/type.js +9 -35
- package/src/dom/variable.js +4 -12
- package/src/node/assertion/contained.js +41 -3
- package/src/node/assertion/defined.js +29 -3
- package/src/node/assertion/property.js +29 -3
- package/src/node/assertion/satisfies.js +17 -3
- package/src/node/assertion/subproof.js +17 -3
- package/src/node/assertion/type.js +29 -3
- package/src/node/axiom.js +3 -3
- package/src/node/combinator.js +3 -3
- package/src/node/conclusion.js +17 -3
- package/src/node/conjecture.js +3 -3
- package/src/node/constructor.js +3 -3
- package/src/node/declaration/combinator.js +11 -7
- package/src/node/declaration/complexType.js +25 -24
- package/src/node/declaration/constructor.js +22 -17
- package/src/node/declaration/metavariable.js +36 -3
- package/src/node/declaration/property.js +21 -17
- package/src/node/declaration/type.js +22 -17
- package/src/node/declaration/variable.js +24 -32
- package/src/node/declaration.js +29 -3
- package/src/node/deduction.js +17 -3
- package/src/node/derivation.js +18 -3
- package/src/node/equality.js +31 -3
- package/src/node/error.js +3 -3
- package/src/node/frame.js +53 -3
- package/src/node/judgement.js +29 -3
- package/src/node/label.js +17 -3
- package/src/node/labels.js +21 -0
- package/src/node/lemma.js +3 -3
- package/src/node/metaLemma.js +3 -3
- package/src/node/metaType.js +19 -8
- package/src/node/metatheorem.js +3 -3
- package/src/node/metavariable.js +42 -9
- package/src/node/parameter.js +20 -3
- package/src/node/parenthesisedLabels.js +28 -0
- package/src/node/premise.js +29 -3
- package/src/node/procedureCall.js +29 -3
- package/src/node/proof.js +17 -3
- package/src/node/property.js +18 -12
- package/src/node/propertyRelation.js +35 -3
- package/src/node/reference.js +17 -3
- package/src/node/rule.js +3 -3
- package/src/node/statement.js +108 -3
- package/src/node/step.js +41 -3
- package/src/node/subDerivation.js +18 -3
- package/src/node/subproof.js +41 -3
- package/src/node/supposition.js +29 -3
- package/src/node/term.js +62 -3
- package/src/node/theorem.js +3 -3
- package/src/node/topLevelAssertion.js +89 -3
- package/src/node/topLevelMetaAssertion.js +59 -3
- package/src/node/type.js +15 -8
- package/src/node/variable.js +15 -8
- package/src/nominal/parser.js +1 -1
- package/src/nonTerminalNodeMap.js +9 -3
- package/src/ruleNames.js +3 -1
- package/src/utilities/node.js +147 -6
- package/src/utilities/type.js +9 -0
- package/src/verifier/topLevel.js +5 -10
- package/lib/defaultTerminalNode.js +0 -20
- package/lib/mixins/node.js +0 -145
- package/src/defaultTerminalNode.js +0 -7
- package/src/mixins/node.js +0 -201
- package/src/node.js +0 -29
package/src/dom/type.js
CHANGED
|
@@ -4,17 +4,14 @@ import { arrayUtilities } from "necessary";
|
|
|
4
4
|
|
|
5
5
|
import dom from "../dom";
|
|
6
6
|
|
|
7
|
-
import { nodeQuery } from "../utilities/query";
|
|
8
7
|
import { domAssigned } from "../dom";
|
|
9
8
|
import { OBJECT_TYPE_NAME } from "../typeNames";
|
|
10
9
|
import { typeFromTypeNode } from "../utilities/node";
|
|
11
|
-
import {
|
|
10
|
+
import { stringFromTypeNameNameAndSuperTypes } from "../utilities/type";
|
|
12
11
|
import { superTypesFromJSON, propertiesFromJSON, superTypesToSuperTypesJSON, propertiesToPropertiesJSON } from "../utilities/json";
|
|
13
12
|
|
|
14
13
|
const { push, first } = arrayUtilities;
|
|
15
14
|
|
|
16
|
-
const typeAssertionTypeNodeQuery = nodeQuery("/typeAssertion/type");
|
|
17
|
-
|
|
18
15
|
class Type {
|
|
19
16
|
constructor(string, name, superTypes, properties, provisional) {
|
|
20
17
|
this.string = string;
|
|
@@ -108,15 +105,7 @@ class Type {
|
|
|
108
105
|
}
|
|
109
106
|
|
|
110
107
|
isEqualTo(type) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if (this.type === type) {
|
|
114
|
-
equalTo = true;
|
|
115
|
-
} else {
|
|
116
|
-
if (type.name === null) {
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
}
|
|
108
|
+
const equalTo = (this === type);
|
|
120
109
|
|
|
121
110
|
return equalTo;
|
|
122
111
|
}
|
|
@@ -224,7 +213,8 @@ class Type {
|
|
|
224
213
|
const { name, provisional } = json,
|
|
225
214
|
properties = propertiesFromJSON(json, fileContext),
|
|
226
215
|
superTypes = superTypesFromJSON(json, fileContext),
|
|
227
|
-
|
|
216
|
+
typeName = name, ///
|
|
217
|
+
string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
|
|
228
218
|
type = new Type(string, name, superTypes, properties, provisional);
|
|
229
219
|
|
|
230
220
|
return type;
|
|
@@ -237,8 +227,7 @@ class Type {
|
|
|
237
227
|
}
|
|
238
228
|
|
|
239
229
|
static fromTypeAssertionNode(typeAssertionNode, fileContext) {
|
|
240
|
-
const
|
|
241
|
-
typeNode = typeAssertionTypeNode, ///
|
|
230
|
+
const typeNode = typeAssertionNode.getTypeNode(),
|
|
242
231
|
type = typeFromTypeNode(typeNode, fileContext);
|
|
243
232
|
|
|
244
233
|
return type;
|
|
@@ -247,10 +236,11 @@ class Type {
|
|
|
247
236
|
static fromTypeAndProvisional(type, provisional) {
|
|
248
237
|
const name = type.getName(),
|
|
249
238
|
superType = type, ///
|
|
239
|
+
typeName = name, ///
|
|
250
240
|
superTypes = [
|
|
251
241
|
superType
|
|
252
242
|
],
|
|
253
|
-
string =
|
|
243
|
+
string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
|
|
254
244
|
properties = type.getProperties();
|
|
255
245
|
|
|
256
246
|
type = new Type(string, name, superTypes, properties, provisional); ///
|
|
@@ -264,7 +254,7 @@ class Type {
|
|
|
264
254
|
typeName = typeDeclarationNode.getTypeName(),
|
|
265
255
|
name = typeName, ///
|
|
266
256
|
superTypes = superTypesFromTypeDeclarationNode(typeDeclarationNode, fileContext),
|
|
267
|
-
string =
|
|
257
|
+
string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
|
|
268
258
|
type = new Type(string, name, superTypes, properties, provisional);
|
|
269
259
|
|
|
270
260
|
return type;
|
|
@@ -301,7 +291,7 @@ class Type {
|
|
|
301
291
|
typeName = complexTypeDeclarationNode.getTypeName(),
|
|
302
292
|
name = typeName,
|
|
303
293
|
superTypes = superTypesFromComplexTypeDeclarationNode(complexTypeDeclarationNode, fileContext),
|
|
304
|
-
string =
|
|
294
|
+
string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
|
|
305
295
|
type = new Type(string, name, superTypes, properties, provisional);
|
|
306
296
|
|
|
307
297
|
return type;
|
|
@@ -310,22 +300,6 @@ class Type {
|
|
|
310
300
|
|
|
311
301
|
export default domAssigned(Type);
|
|
312
302
|
|
|
313
|
-
function stringFromNameAndSuperTypes(name, superTypes) {
|
|
314
|
-
let string;
|
|
315
|
-
|
|
316
|
-
if (name === null) {
|
|
317
|
-
string = OBJECT_TYPE_NAME; ///
|
|
318
|
-
} else {
|
|
319
|
-
const superTypesString = superTypesStringFromSuperTypes(superTypes);
|
|
320
|
-
|
|
321
|
-
string = (superTypesString !== null) ?
|
|
322
|
-
`${name}:${superTypesString}` :
|
|
323
|
-
name; ///
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
return string;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
303
|
function superTypesFromTypeDeclarationNode(typeDeclarationNode, fileContext) {
|
|
330
304
|
const superTypeNodes = typeDeclarationNode.getSuperTypeNodes(),
|
|
331
305
|
superTypes = superTypeNodes.map((superTypeNode) => {
|
package/src/dom/variable.js
CHANGED
|
@@ -4,16 +4,12 @@ import dom from "../dom";
|
|
|
4
4
|
import LocalContext from "../context/local";
|
|
5
5
|
import TermSubstitution from "../substitution/term";
|
|
6
6
|
|
|
7
|
-
import { nodeQuery } from "../utilities/query";
|
|
8
|
-
import { ObjectType } from "./type";
|
|
9
7
|
import { domAssigned } from "../dom";
|
|
10
8
|
import { EMPTY_STRING } from "../constants";
|
|
11
9
|
import { typeFromTypeNode } from "../utilities/node";
|
|
12
10
|
import { typeFromJSON, typeToTypeJSON } from "../utilities/json";
|
|
13
11
|
import { variableNodeFromVariableString } from "../context/partial/variable";
|
|
14
12
|
|
|
15
|
-
const termVariableNodeQuery = nodeQuery("/term/variable!");
|
|
16
|
-
|
|
17
13
|
export default domAssigned(class Variable {
|
|
18
14
|
constructor(string, node, name, type, propertyRelations) {
|
|
19
15
|
this.string = string;
|
|
@@ -209,10 +205,10 @@ export default domAssigned(class Variable {
|
|
|
209
205
|
static fromTermNode(termNode, context) {
|
|
210
206
|
let variable = null;
|
|
211
207
|
|
|
212
|
-
const
|
|
208
|
+
const singularVariableNode = termNode.getSingularVariableNode();
|
|
213
209
|
|
|
214
|
-
if (
|
|
215
|
-
const variableNode =
|
|
210
|
+
if (singularVariableNode !== null) {
|
|
211
|
+
const variableNode = singularVariableNode, ///
|
|
216
212
|
type = null;
|
|
217
213
|
|
|
218
214
|
variable = variableFromVariableNodeAndType(variableNode, type, context);
|
|
@@ -234,11 +230,7 @@ export default domAssigned(class Variable {
|
|
|
234
230
|
}
|
|
235
231
|
|
|
236
232
|
static fromVariableNodeAndType(variableNode, type, context) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
if (variableNode !== null) {
|
|
240
|
-
variable = variableFromVariableNodeAndType(variableNode, type, context);
|
|
241
|
-
}
|
|
233
|
+
const variable = variableFromVariableNodeAndType(variableNode, type, context);
|
|
242
234
|
|
|
243
235
|
return variable;
|
|
244
236
|
}
|
|
@@ -1,7 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeTermNode, isNodeFrameNode, isNodeStatementNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class ContainedAssertionNode extends NonTerminalNode {
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const termNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeTermNode = isNodeTermNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeTermNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return termNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getFrameNode() {
|
|
21
|
+
const frameNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeFrameNode = isNodeFrameNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeFrameNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return frameNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
getStatementNode() {
|
|
33
|
+
const statementNode = this.findChildNode((childNode) => {
|
|
34
|
+
const childNodeStatementNode = isNodeStatementNode(childNode);
|
|
35
|
+
|
|
36
|
+
if (childNodeStatementNode) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
}) || null;
|
|
40
|
+
|
|
41
|
+
return statementNode;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ContainedAssertionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
45
|
}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeTermNode, isNodeFrameNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class DefinedAssertionNode extends NonTerminalNode {
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const termNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeTermNode = isNodeTermNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeTermNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return termNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getFrameNode() {
|
|
21
|
+
const frameNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeFrameNode = isNodeFrameNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeFrameNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return frameNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DefinedAssertionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeTermNode, isNodePropertyRelationNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class PropertyAssertionNode extends NonTerminalNode {
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const termNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeTermNode = isNodeTermNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeTermNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return termNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getPropertyRelationNode() {
|
|
21
|
+
const propertyRelationNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodePropertyRelationNode = isNodePropertyRelationNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodePropertyRelationNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return propertyRelationNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyAssertionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeMetavariableNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class SatisfiesAssertionNode extends NonTerminalNode {
|
|
8
|
+
getMetavariableNode() {
|
|
9
|
+
const metavariableNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeMetavariableNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return metavariableNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SatisfiesAssertionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
21
|
}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeStatementNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class SubproofAssertionNode extends NonTerminalNode {
|
|
8
|
+
getStatementNodes() {
|
|
9
|
+
const statementNodes = this.filterChildNode((childNode) => {
|
|
10
|
+
const childNodeStatementNode = isNodeStatementNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeStatementNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
return statementNodes;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubproofAssertionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
21
|
}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeTermNode, isNodeTypeNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class TypeAssertionNode extends NonTerminalNode {
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const termNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeTermNode = isNodeTermNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeTermNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return termNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getTypeNode() {
|
|
21
|
+
const typeNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeTypeNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return typeNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeAssertionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|
package/src/node/axiom.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import TopLevelAssertionNode from "../node/topLevelAssertion";
|
|
4
4
|
|
|
5
|
-
export default class AxiomNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class AxiomNode extends TopLevelAssertionNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(AxiomNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
package/src/node/combinator.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
export default class CombinatorNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class CombinatorNode extends NonTerminalNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(CombinatorNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
package/src/node/conclusion.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeStatementNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class ConclusionNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const statementNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeStatementNode = isNodeStatementNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeStatementNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return statementNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConclusionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
21
|
}
|
package/src/node/conjecture.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import TopLevelAssertionNode from "../node/topLevelAssertion";
|
|
4
4
|
|
|
5
|
-
export default class ConjectureNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class ConjectureNode extends TopLevelAssertionNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(ConjectureNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
package/src/node/constructor.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
export default class ConstructorNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class ConstructorNode extends NonTerminalNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import { isNodeStatementNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class ContainedDeclarationNode extends NonTerminalNode {
|
|
6
8
|
getStatementNode() {
|
|
7
|
-
const statementNode = this.
|
|
8
|
-
const
|
|
9
|
+
const statementNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeStatementNode = isNodeStatementNode(childNode);
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
if (childNodeStatementNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
12
16
|
|
|
13
17
|
return statementNode;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ContainedDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
17
21
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONAL } from "../../constants";
|
|
6
6
|
import { isNodeTypeNode, isNodePropertyDeclarationNode } from "../../utilities/node";
|
|
7
7
|
|
|
8
|
-
export default class ComplexTypeDeclarationNode extends
|
|
8
|
+
export default class ComplexTypeDeclarationNode extends NonTerminalNode {
|
|
9
9
|
getTypeName() {
|
|
10
|
-
let typeName;
|
|
10
|
+
let typeName = null;
|
|
11
11
|
|
|
12
12
|
this.someChildNode((childNode) => {
|
|
13
13
|
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
@@ -25,30 +25,35 @@ export default class ComplexTypeDeclarationNode extends Node {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
isProvisional() {
|
|
28
|
-
|
|
29
|
-
const terminalNode = firstChildNode, ///
|
|
30
|
-
content = terminalNode.getContent(),
|
|
31
|
-
contentProvisional = (content === PROVISIONAL),
|
|
32
|
-
provisional = contentProvisional; ///
|
|
28
|
+
let provisional = false;
|
|
33
29
|
|
|
34
|
-
|
|
30
|
+
this.someChildNode((childNode) => {
|
|
31
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
32
|
+
|
|
33
|
+
if (childNodeTerminalNode) {
|
|
34
|
+
const terminalNode = childNode,
|
|
35
|
+
content = terminalNode.getContent(),
|
|
36
|
+
contentProvisional = (content === PROVISIONAL);
|
|
37
|
+
|
|
38
|
+
if (contentProvisional) {
|
|
39
|
+
provisional = true;
|
|
40
|
+
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
35
44
|
});
|
|
36
45
|
|
|
37
46
|
return provisional;
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
getSuperTypeNodes() {
|
|
41
|
-
const typeNodes = this.
|
|
50
|
+
const typeNodes = this.filterChildNode((childNode) => {
|
|
42
51
|
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
43
52
|
|
|
44
53
|
if (childNodeTypeNode) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
typeNodes.push(typeNode);
|
|
54
|
+
return true;
|
|
48
55
|
}
|
|
49
|
-
|
|
50
|
-
return typeNodes;
|
|
51
|
-
}, []);
|
|
56
|
+
});
|
|
52
57
|
|
|
53
58
|
typeNodes.pop();
|
|
54
59
|
|
|
@@ -58,20 +63,16 @@ export default class ComplexTypeDeclarationNode extends Node {
|
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
getPropertyDeclarationNodes() {
|
|
61
|
-
const propertyDeclarationNodes = this.
|
|
66
|
+
const propertyDeclarationNodes = this.filterChildNode((childNode) => {
|
|
62
67
|
const childNodePropertyDeclarationNode = isNodePropertyDeclarationNode(childNode);
|
|
63
68
|
|
|
64
69
|
if (childNodePropertyDeclarationNode) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
propertyDeclarationNodes.push(propertyDeclarationNode);
|
|
70
|
+
return true;
|
|
68
71
|
}
|
|
69
|
-
|
|
70
|
-
return propertyDeclarationNodes;
|
|
71
|
-
}, []);
|
|
72
|
+
});
|
|
72
73
|
|
|
73
74
|
return propertyDeclarationNodes;
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
77
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ComplexTypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
77
78
|
}
|
|
@@ -1,51 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONALLY } from "../../constants";
|
|
6
|
+
import { isNodeTermNode, isNodeTypeNode } from "../../utilities/node";
|
|
6
7
|
|
|
7
|
-
export default class ConstructorDeclarationNode extends
|
|
8
|
+
export default class ConstructorDeclarationNode extends NonTerminalNode {
|
|
8
9
|
getTermNode() {
|
|
9
|
-
const termNode = this.
|
|
10
|
-
const
|
|
10
|
+
const termNode = this.findChildNode((childNode) => {
|
|
11
|
+
const childNodeTermNode = isNodeTermNode(childNode);
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
if (childNodeTermNode) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}) || null;
|
|
14
17
|
|
|
15
18
|
return termNode;
|
|
16
19
|
}
|
|
17
20
|
|
|
18
21
|
getTypeNode() {
|
|
19
|
-
const typeNode = this.
|
|
20
|
-
const
|
|
22
|
+
const typeNode = this.findChildNode((childNode) => {
|
|
23
|
+
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
21
24
|
|
|
22
|
-
|
|
25
|
+
if (childNodeTypeNode) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
23
28
|
}) || null;
|
|
24
29
|
|
|
25
30
|
return typeNode;
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
isProvisional() {
|
|
29
|
-
|
|
30
|
-
let provisional = false;
|
|
34
|
+
let provisional = false;
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
this.someChildNode((childNode) => {
|
|
37
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
33
38
|
|
|
34
|
-
if (
|
|
35
|
-
const terminalNode =
|
|
39
|
+
if (childNodeTerminalNode) {
|
|
40
|
+
const terminalNode = childNode,
|
|
36
41
|
content = terminalNode.getContent(),
|
|
37
42
|
contentProvisionally = (content === PROVISIONALLY);
|
|
38
43
|
|
|
39
44
|
if (contentProvisionally) {
|
|
40
45
|
provisional = true;
|
|
46
|
+
|
|
47
|
+
return true;
|
|
41
48
|
}
|
|
42
49
|
}
|
|
43
|
-
|
|
44
|
-
return provisional;
|
|
45
50
|
});
|
|
46
51
|
|
|
47
52
|
return provisional;
|
|
48
53
|
}
|
|
49
54
|
|
|
50
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
55
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
51
56
|
}
|