occam-verify-cli 1.0.185 → 1.0.198
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/context/file.js +3 -3
- package/lib/dom/assertion/contained.js +12 -24
- package/lib/dom/assertion/defined.js +9 -21
- package/lib/dom/assertion/property.js +8 -10
- package/lib/dom/assertion/satisfies.js +6 -8
- 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/constructor.js +6 -6
- package/lib/dom/declaration/metavariable.js +3 -5
- package/lib/dom/declaration/type.js +2 -2
- package/lib/dom/declaration/variable.js +6 -6
- package/lib/dom/declaration.js +14 -16
- package/lib/dom/derivation.js +2 -4
- package/lib/dom/equality.js +9 -11
- package/lib/dom/frame.js +14 -18
- package/lib/dom/judgement.js +8 -10
- 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 +14 -16
- 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 +12 -20
- package/lib/dom/theorem.js +5 -4
- package/lib/dom/topLevelAssertion.js +30 -24
- package/lib/dom/topLevelMetaAssertion.js +76 -140
- package/lib/dom/type.js +8 -25
- package/lib/dom/variable.js +5 -11
- package/lib/equivalence.js +4 -6
- package/lib/mixins/term/verify.js +4 -8
- package/lib/node/argument.js +116 -0
- package/lib/node/assertion/contained.js +48 -53
- package/lib/node/assertion/defined.js +41 -53
- package/lib/node/assertion/property.js +23 -53
- package/lib/node/assertion/satisfies.js +23 -53
- package/lib/node/assertion/subproof.js +16 -53
- package/lib/node/assertion/type.js +23 -53
- package/lib/node/axiom.js +6 -52
- package/lib/node/combinator.js +6 -52
- package/lib/node/conclusion.js +16 -53
- package/lib/node/conjecture.js +6 -52
- package/lib/node/constructor.js +6 -52
- package/lib/node/declaration/combinator.js +8 -56
- package/lib/node/declaration/complexType.js +42 -86
- package/lib/node/declaration/constructor.js +26 -77
- package/lib/node/declaration/metavariable.js +30 -53
- package/lib/node/declaration/property.js +19 -69
- package/lib/node/declaration/type.js +45 -78
- package/lib/node/declaration/variable.js +21 -81
- package/lib/node/declaration.js +23 -53
- package/lib/node/deduction.js +16 -53
- package/lib/node/derivation.js +42 -51
- package/lib/node/equality.js +32 -53
- package/lib/node/error.js +6 -52
- package/lib/node/frame.js +30 -53
- package/lib/node/judgement.js +23 -53
- package/lib/node/label.js +16 -53
- package/lib/node/labels.js +116 -0
- package/lib/node/lemma.js +6 -52
- package/lib/node/metaArgument.js +116 -0
- package/lib/node/metaLemma.js +6 -52
- package/lib/node/metaType.js +14 -55
- package/lib/node/metatheorem.js +6 -52
- package/lib/node/metavariable.js +30 -56
- package/lib/node/nonTerminal.js +200 -0
- package/lib/node/parameter.js +22 -53
- package/lib/node/parenthesisedLabel.js +116 -0
- package/lib/node/parenthesisedLabels.js +123 -0
- package/lib/node/premise.js +23 -53
- package/lib/node/procedureCall.js +23 -53
- package/lib/node/proof.js +16 -53
- package/lib/node/property.js +18 -57
- package/lib/node/propertyRelation.js +30 -53
- package/lib/node/reference.js +16 -53
- package/lib/node/rule.js +44 -53
- package/lib/node/statement.js +139 -53
- package/lib/node/step.js +37 -53
- package/lib/node/subDerivation.js +49 -51
- package/lib/node/subproof.js +44 -53
- package/lib/node/substitution/frame.js +123 -0
- package/lib/node/substitution/reference.js +123 -0
- package/lib/node/substitution/statement.js +123 -0
- package/lib/node/substitution/term.js +123 -0
- package/lib/node/supposition.js +23 -53
- package/lib/node/term.js +41 -53
- package/lib/node/theorem.js +6 -52
- package/lib/node/topLevelAssertion.js +66 -54
- package/lib/node/topLevelMetaAssertion.js +45 -54
- package/lib/node/type.js +14 -55
- package/lib/{node.js → node/types.js} +22 -24
- package/lib/node/variable.js +14 -55
- package/lib/nominal/parser.js +3 -3
- package/lib/nonTerminalNodeMap.js +14 -4
- package/lib/ruleNames.js +42 -2
- package/lib/substitution/frame.js +5 -7
- package/lib/substitution/reference.js +5 -7
- package/lib/substitution/term.js +5 -7
- package/lib/unifier/metaLevel.js +4 -4
- package/lib/utilities/brackets.js +5 -5
- package/lib/utilities/json.js +18 -1
- package/lib/utilities/node.js +1 -37
- package/lib/utilities/subproof.js +13 -4
- package/lib/utilities/type.js +16 -4
- package/lib/verifier/topLevel.js +6 -6
- package/package.json +2 -2
- package/src/constants.js +1 -0
- package/src/context/file.js +2 -2
- package/src/dom/assertion/contained.js +12 -34
- package/src/dom/assertion/defined.js +9 -30
- package/src/dom/assertion/property.js +7 -12
- package/src/dom/assertion/satisfies.js +5 -10
- 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 +8 -7
- package/src/dom/declaration/constructor.js +6 -7
- package/src/dom/declaration/metavariable.js +2 -6
- package/src/dom/declaration/type.js +4 -2
- package/src/dom/declaration/variable.js +6 -7
- package/src/dom/declaration.js +12 -20
- package/src/dom/derivation.js +1 -4
- package/src/dom/equality.js +13 -17
- package/src/dom/frame.js +11 -25
- package/src/dom/judgement.js +7 -12
- 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 +16 -22
- 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 +14 -33
- package/src/dom/theorem.js +6 -1
- package/src/dom/topLevelAssertion.js +30 -25
- package/src/dom/topLevelMetaAssertion.js +87 -55
- package/src/dom/type.js +11 -37
- package/src/dom/variable.js +4 -12
- package/src/equivalence.js +3 -6
- package/src/mixins/term/verify.js +5 -11
- package/src/node/argument.js +16 -0
- package/src/node/assertion/contained.js +49 -3
- package/src/node/assertion/defined.js +42 -3
- package/src/node/assertion/property.js +19 -3
- package/src/node/assertion/satisfies.js +19 -3
- package/src/node/assertion/subproof.js +12 -3
- package/src/node/assertion/type.js +19 -3
- package/src/node/axiom.js +3 -3
- package/src/node/combinator.js +3 -3
- package/src/node/conclusion.js +12 -3
- package/src/node/conjecture.js +3 -3
- package/src/node/constructor.js +3 -3
- package/src/node/declaration/combinator.js +7 -8
- package/src/node/declaration/complexType.js +40 -43
- package/src/node/declaration/constructor.js +25 -30
- package/src/node/declaration/metavariable.js +26 -3
- package/src/node/declaration/property.js +17 -23
- package/src/node/declaration/type.js +43 -32
- package/src/node/declaration/variable.js +19 -37
- package/src/node/declaration.js +19 -3
- package/src/node/deduction.js +12 -3
- package/src/node/derivation.js +15 -3
- package/src/node/equality.js +32 -3
- package/src/node/error.js +3 -3
- package/src/node/frame.js +26 -3
- package/src/node/judgement.js +19 -3
- package/src/node/label.js +12 -3
- package/src/node/labels.js +16 -0
- package/src/node/lemma.js +3 -3
- package/src/node/metaArgument.js +16 -0
- package/src/node/metaLemma.js +3 -3
- package/src/node/metaType.js +15 -8
- package/src/node/metatheorem.js +3 -3
- package/src/node/metavariable.js +32 -9
- package/src/node/nonTerminal.js +112 -0
- package/src/node/parameter.js +20 -3
- package/src/node/parenthesisedLabel.js +16 -0
- package/src/node/parenthesisedLabels.js +23 -0
- package/src/node/premise.js +19 -3
- package/src/node/procedureCall.js +19 -3
- package/src/node/proof.js +12 -3
- package/src/node/property.js +18 -12
- package/src/node/propertyRelation.js +26 -3
- package/src/node/reference.js +12 -3
- package/src/node/rule.js +40 -3
- package/src/node/statement.js +151 -3
- package/src/node/step.js +31 -3
- package/src/node/subDerivation.js +22 -3
- package/src/node/subproof.js +38 -3
- package/src/node/substitution/frame.js +23 -0
- package/src/node/substitution/reference.js +23 -0
- package/src/node/substitution/statement.js +23 -0
- package/src/node/substitution/term.js +23 -0
- package/src/node/supposition.js +19 -3
- package/src/node/term.js +38 -3
- package/src/node/theorem.js +3 -3
- package/src/node/topLevelAssertion.js +69 -3
- package/src/node/topLevelMetaAssertion.js +40 -3
- package/src/node/type.js +15 -8
- package/src/node/types.js +16 -0
- package/src/node/variable.js +15 -8
- package/src/nominal/parser.js +1 -1
- package/src/nonTerminalNodeMap.js +67 -37
- package/src/ruleNames.js +11 -1
- package/src/substitution/frame.js +7 -10
- package/src/substitution/reference.js +7 -10
- package/src/substitution/term.js +7 -9
- package/src/unifier/metaLevel.js +2 -3
- package/src/utilities/brackets.js +8 -8
- package/src/utilities/json.js +19 -0
- package/src/utilities/node.js +0 -27
- package/src/utilities/subproof.js +22 -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/node/combinator.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
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,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ConclusionNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return statementNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConclusionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
16
|
}
|
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 "../node/nonTerminal";
|
|
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,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
getStatementNode() {
|
|
7
|
-
const statementNode = this.fromSecondChildNode((secondChildNode) => {
|
|
8
|
-
const statementNode = secondChildNode; ///
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../../ruleNames";
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
export default class ContainedDeclarationNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
12
11
|
|
|
13
12
|
return statementNode;
|
|
14
13
|
}
|
|
15
14
|
|
|
16
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ContainedDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
17
16
|
}
|
|
@@ -1,77 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONAL } from "../../constants";
|
|
6
|
-
import {
|
|
6
|
+
import { TYPE_RULE_NAME, TYPES_RULE_NAME, PROPERTY_DECLARATION_RULE_NAME } from "../../ruleNames";
|
|
7
7
|
|
|
8
|
-
export default class ComplexTypeDeclarationNode extends
|
|
9
|
-
|
|
10
|
-
let
|
|
8
|
+
export default class ComplexTypeDeclarationNode extends NonTerminalNode {
|
|
9
|
+
isProvisional() {
|
|
10
|
+
let provisional = false;
|
|
11
11
|
|
|
12
12
|
this.someChildNode((childNode) => {
|
|
13
|
-
const
|
|
13
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
14
14
|
|
|
15
|
-
if (
|
|
16
|
-
const
|
|
15
|
+
if (childNodeTerminalNode) {
|
|
16
|
+
const terminalNode = childNode,
|
|
17
|
+
content = terminalNode.getContent(),
|
|
18
|
+
contentProvisional = (content === PROVISIONAL);
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
if (contentProvisional) {
|
|
21
|
+
provisional = true;
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
});
|
|
23
27
|
|
|
24
|
-
return
|
|
28
|
+
return provisional;
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
content = terminalNode.getContent(),
|
|
31
|
-
contentProvisional = (content === PROVISIONAL),
|
|
32
|
-
provisional = contentProvisional; ///
|
|
31
|
+
getTypeName() {
|
|
32
|
+
const typeNode = this.getTypeNode(),
|
|
33
|
+
typeName = typeNode.getTypeName();
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
return typeName;
|
|
36
|
+
}
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
getTypeNode() {
|
|
39
|
+
const ruleName = TYPE_RULE_NAME,
|
|
40
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
41
|
+
|
|
42
|
+
return typeNode;
|
|
38
43
|
}
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
45
|
+
getTypesNode() {
|
|
46
|
+
const ruleName = TYPES_RULE_NAME,
|
|
47
|
+
typesNode = this.getNodeByRuleName(ruleName);
|
|
43
48
|
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
return typesNode;
|
|
50
|
+
}
|
|
46
51
|
|
|
47
|
-
|
|
48
|
-
|
|
52
|
+
getSuperTypeNodes() {
|
|
53
|
+
let superTypeNodes = [];
|
|
49
54
|
|
|
50
|
-
|
|
51
|
-
}, []);
|
|
55
|
+
const typesNode = this.getTypesNode();
|
|
52
56
|
|
|
53
|
-
|
|
57
|
+
if (typesNode !== null) {
|
|
58
|
+
const typeNodes = typesNode.getTypeNodes();
|
|
54
59
|
|
|
55
|
-
|
|
60
|
+
superTypeNodes = typeNodes; ///
|
|
61
|
+
}
|
|
56
62
|
|
|
57
63
|
return superTypeNodes;
|
|
58
64
|
}
|
|
59
65
|
|
|
60
66
|
getPropertyDeclarationNodes() {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (childNodePropertyDeclarationNode) {
|
|
65
|
-
const propertyDeclarationNode = childNode; ///
|
|
66
|
-
|
|
67
|
-
propertyDeclarationNodes.push(propertyDeclarationNode);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return propertyDeclarationNodes;
|
|
71
|
-
}, []);
|
|
67
|
+
const ruleName = PROPERTY_DECLARATION_RULE_NAME,
|
|
68
|
+
propertyDeclarationNodes = this.getNodesByRuleName(ruleName);
|
|
72
69
|
|
|
73
70
|
return propertyDeclarationNodes;
|
|
74
71
|
}
|
|
75
72
|
|
|
76
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
73
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ComplexTypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
77
74
|
}
|
|
@@ -1,51 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONALLY } from "../../constants";
|
|
6
|
+
import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../../ruleNames";
|
|
6
7
|
|
|
7
|
-
export default class ConstructorDeclarationNode extends
|
|
8
|
-
getTermNode() {
|
|
9
|
-
const termNode = this.fromSecondChildNode((secondChildNode) => {
|
|
10
|
-
const termNode = secondChildNode; ///
|
|
11
|
-
|
|
12
|
-
return termNode;
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
return termNode;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
getTypeNode() {
|
|
19
|
-
const typeNode = this.fromFourthChildNode((fourthChildNode) => {
|
|
20
|
-
const typeNode = fourthChildNode; ///
|
|
21
|
-
|
|
22
|
-
return typeNode;
|
|
23
|
-
}) || null;
|
|
24
|
-
|
|
25
|
-
return typeNode;
|
|
26
|
-
}
|
|
27
|
-
|
|
8
|
+
export default class ConstructorDeclarationNode extends NonTerminalNode {
|
|
28
9
|
isProvisional() {
|
|
29
|
-
|
|
30
|
-
let provisional = false;
|
|
10
|
+
let provisional = false;
|
|
31
11
|
|
|
32
|
-
|
|
12
|
+
this.someChildNode((childNode) => {
|
|
13
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
33
14
|
|
|
34
|
-
if (
|
|
35
|
-
const terminalNode =
|
|
15
|
+
if (childNodeTerminalNode) {
|
|
16
|
+
const terminalNode = childNode,
|
|
36
17
|
content = terminalNode.getContent(),
|
|
37
18
|
contentProvisionally = (content === PROVISIONALLY);
|
|
38
19
|
|
|
39
20
|
if (contentProvisionally) {
|
|
40
21
|
provisional = true;
|
|
22
|
+
|
|
23
|
+
return true;
|
|
41
24
|
}
|
|
42
25
|
}
|
|
43
|
-
|
|
44
|
-
return provisional;
|
|
45
26
|
});
|
|
46
27
|
|
|
47
28
|
return provisional;
|
|
48
29
|
}
|
|
49
30
|
|
|
50
|
-
|
|
31
|
+
getTermNode() {
|
|
32
|
+
const ruleName = TERM_RULE_NAME,
|
|
33
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
34
|
+
|
|
35
|
+
return termNode;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
getTypeNode() {
|
|
39
|
+
const ruleName = TYPE_RULE_NAME,
|
|
40
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
41
|
+
|
|
42
|
+
return typeNode;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
51
46
|
}
|
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { META_TYPE_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class MetavariableDeclarationNode extends NonTerminalNode {
|
|
8
|
+
getTypeNode() {
|
|
9
|
+
const metavariableNode = this.getMetavariableNode(),
|
|
10
|
+
typeNode = metavariableNode.getTypeNode();
|
|
11
|
+
|
|
12
|
+
return typeNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getMetaTypeNode() {
|
|
16
|
+
const ruleName = META_TYPE_RULE_NAME,
|
|
17
|
+
metaTypeNode = this.getNodeByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return metaTypeNode
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getMetavariableNode() {
|
|
23
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
24
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
25
|
+
|
|
26
|
+
return metavariableNode;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
30
|
}
|
|
@@ -1,36 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { TYPE_RULE_NAME, PROPERTY_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
|
-
export default class PropertyDeclarationNode extends
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return typeNode;
|
|
13
|
-
});
|
|
7
|
+
export default class PropertyDeclarationNode extends NonTerminalNode {
|
|
8
|
+
getPropertyName() {
|
|
9
|
+
const propertyNode = this.getPropertyNode(),
|
|
10
|
+
propertyName = propertyNode.getPropertyName();
|
|
14
11
|
|
|
15
|
-
return
|
|
12
|
+
return propertyName;
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (childNodePropertyNode) {
|
|
23
|
-
const propertyNode = childNode, ///
|
|
24
|
-
propertyName = propertyNode.getPropertyName();
|
|
15
|
+
getTypeNode() {
|
|
16
|
+
const ruleName = TYPE_RULE_NAME,
|
|
17
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
25
18
|
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
return typeNode;
|
|
20
|
+
}
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
getPropertyNode() {
|
|
23
|
+
const ruleName = PROPERTY_RULE_NAME,
|
|
24
|
+
propertyNode = this.getNodeByRuleName(ruleName);
|
|
31
25
|
|
|
32
|
-
return
|
|
26
|
+
return propertyNode;
|
|
33
27
|
}
|
|
34
28
|
|
|
35
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
29
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
36
30
|
}
|
|
@@ -1,62 +1,73 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONAL } from "../../constants";
|
|
6
|
-
import {
|
|
6
|
+
import { TYPE_RULE_NAME, TYPES_RULE_NAME } from "../../ruleNames";
|
|
7
7
|
|
|
8
|
-
export default class TypeDeclarationNode extends
|
|
9
|
-
|
|
10
|
-
let
|
|
8
|
+
export default class TypeDeclarationNode extends NonTerminalNode {
|
|
9
|
+
isProvisional() {
|
|
10
|
+
let provisional = false;
|
|
11
11
|
|
|
12
12
|
this.someChildNode((childNode) => {
|
|
13
|
-
const
|
|
13
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
14
14
|
|
|
15
|
-
if (
|
|
16
|
-
const
|
|
15
|
+
if (childNodeTerminalNode) {
|
|
16
|
+
const terminalNode = childNode,
|
|
17
|
+
content = terminalNode.getContent(),
|
|
18
|
+
contentProvisional = (content === PROVISIONAL);
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
if (contentProvisional) {
|
|
21
|
+
provisional = true;
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
});
|
|
23
27
|
|
|
24
|
-
return
|
|
28
|
+
return provisional;
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const terminalNode = firstChildNode, ///
|
|
30
|
-
content = terminalNode.getContent(),
|
|
31
|
-
contentProvisional = (content === PROVISIONAL),
|
|
32
|
-
provisional = contentProvisional; ///
|
|
31
|
+
getTypeName() {
|
|
32
|
+
let typeName = null;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
});
|
|
34
|
+
const typeNode = this.getTypeNode();
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
if (typeNode !== null) {
|
|
37
|
+
typeName = typeNode.getTypeName();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return typeName;
|
|
38
41
|
}
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
+
getTypeNode() {
|
|
44
|
+
const ruleName = TYPE_RULE_NAME,
|
|
45
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
return typeNode;
|
|
48
|
+
}
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
getTypesNode() {
|
|
51
|
+
const ruleName = TYPES_RULE_NAME,
|
|
52
|
+
typesNode = this.getNodeByRuleName(ruleName);
|
|
53
|
+
|
|
54
|
+
return typesNode;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
getSuperTypeNodes() {
|
|
58
|
+
let superTypeNodes = [];
|
|
49
59
|
|
|
50
|
-
|
|
51
|
-
}, []);
|
|
60
|
+
const typesNode = this.getTypesNode();
|
|
52
61
|
|
|
53
|
-
|
|
62
|
+
if (typesNode !== null) {
|
|
63
|
+
const typeNodes = typesNode.getTypeNodes();
|
|
54
64
|
|
|
55
|
-
|
|
65
|
+
superTypeNodes = typeNodes; ///
|
|
66
|
+
}
|
|
56
67
|
|
|
57
68
|
return superTypeNodes;
|
|
58
69
|
}
|
|
59
70
|
|
|
60
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
71
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
61
72
|
}
|
|
62
73
|
|
|
@@ -1,61 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONALLY } from "../../constants";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
export default class VariableDeclarationNode extends Node {
|
|
9
|
-
getTypeNode() {
|
|
10
|
-
let typeNode;
|
|
11
|
-
|
|
12
|
-
this.someChildNode((childNode) => {
|
|
13
|
-
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
14
|
-
|
|
15
|
-
if (childNodeTypeNode) {
|
|
16
|
-
typeNode = childNode; ///
|
|
17
|
-
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
return typeNode;
|
|
23
|
-
}
|
|
6
|
+
import { TYPE_RULE_NAME, VARIABLE_RULE_NAME } from "../../ruleNames";
|
|
24
7
|
|
|
8
|
+
export default class VariableDeclarationNode extends NonTerminalNode {
|
|
25
9
|
isProvisional() {
|
|
26
|
-
|
|
27
|
-
let provisional = false;
|
|
10
|
+
let provisional = false;
|
|
28
11
|
|
|
29
|
-
|
|
12
|
+
this.someChildNode((childNode) => {
|
|
13
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
30
14
|
|
|
31
|
-
if (
|
|
32
|
-
const terminalNode =
|
|
15
|
+
if (childNodeTerminalNode) {
|
|
16
|
+
const terminalNode = childNode, ///
|
|
33
17
|
content = terminalNode.getContent(),
|
|
34
18
|
contentProvisionally = (content === PROVISIONALLY);
|
|
35
19
|
|
|
36
20
|
if (contentProvisionally) {
|
|
37
21
|
provisional = true;
|
|
22
|
+
|
|
23
|
+
return true;
|
|
38
24
|
}
|
|
39
25
|
}
|
|
40
|
-
|
|
41
|
-
return provisional;
|
|
42
26
|
});
|
|
43
27
|
|
|
44
28
|
return provisional;
|
|
45
29
|
}
|
|
46
30
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.someChildNode((childNode) => {
|
|
51
|
-
const childNodeVariableNode = isNodeVariableNode(childNode);
|
|
31
|
+
getTypeNode() {
|
|
32
|
+
const ruleName = TYPE_RULE_NAME,
|
|
33
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
52
34
|
|
|
53
|
-
|
|
54
|
-
|
|
35
|
+
return typeNode;
|
|
36
|
+
}
|
|
55
37
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
38
|
+
getVariableNode() {
|
|
39
|
+
const ruleName = VARIABLE_RULE_NAME,
|
|
40
|
+
variableNode = this.getNodeByRuleName(ruleName);
|
|
59
41
|
|
|
60
42
|
return variableNode;
|
|
61
43
|
}
|
|
@@ -67,5 +49,5 @@ export default class VariableDeclarationNode extends Node {
|
|
|
67
49
|
return variableName;
|
|
68
50
|
}
|
|
69
51
|
|
|
70
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
52
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(VariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
71
53
|
}
|
package/src/node/declaration.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { STATEMENT_RULE_NAME, METAVARIABLE_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class DeclarationNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return statementNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getMetavariableNode() {
|
|
16
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
17
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return metavariableNode;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
23
|
}
|
package/src/node/deduction.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class DeductionNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return statementNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DeductionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
16
|
}
|
package/src/node/derivation.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { STEP_RULE_NAME, SUBPROOF_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class DerivationNode extends NonTerminalNode {
|
|
8
|
+
getStepOrSubproofNodes() {
|
|
9
|
+
const ruleNames = [
|
|
10
|
+
STEP_RULE_NAME,
|
|
11
|
+
SUBPROOF_RULE_NAME,
|
|
12
|
+
],
|
|
13
|
+
stepOrSubproofNodes = this.getNodesByRuleName(...ruleNames);
|
|
14
|
+
|
|
15
|
+
return stepOrSubproofNodes;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DerivationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
19
|
}
|