occam-verify-cli 1.0.192 → 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/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 +7 -7
- package/lib/dom/assertion/satisfies.js +6 -8
- package/lib/dom/declaration/complexType.js +3 -3
- package/lib/dom/declaration/constructor.js +6 -6
- package/lib/dom/declaration/variable.js +6 -6
- package/lib/dom/declaration.js +13 -13
- package/lib/dom/frame.js +7 -7
- package/lib/dom/judgement.js +7 -7
- package/lib/dom/propertyRelation.js +7 -7
- package/lib/dom/term.js +1 -3
- package/lib/dom/topLevelMetaAssertion.js +77 -131
- package/lib/dom/type.js +2 -2
- 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 +31 -23
- package/lib/node/assertion/defined.js +30 -17
- package/lib/node/assertion/property.js +14 -19
- package/lib/node/assertion/satisfies.js +20 -13
- package/lib/node/assertion/subproof.js +11 -11
- package/lib/node/assertion/type.js +12 -17
- package/lib/node/combinator.js +9 -4
- package/lib/node/conclusion.js +11 -11
- package/lib/node/constructor.js +9 -4
- package/lib/node/declaration/combinator.js +11 -11
- package/lib/node/declaration/complexType.js +38 -34
- package/lib/node/declaration/constructor.js +24 -29
- package/lib/node/declaration/metavariable.js +12 -17
- package/lib/node/declaration/property.js +19 -24
- package/lib/node/declaration/type.js +41 -28
- package/lib/node/declaration/variable.js +12 -17
- package/lib/node/declaration.js +12 -17
- package/lib/node/deduction.js +11 -11
- package/lib/node/derivation.js +39 -11
- package/lib/node/equality.js +21 -18
- package/lib/node/error.js +9 -4
- package/lib/node/frame.js +13 -30
- package/lib/node/judgement.js +15 -20
- package/lib/node/label.js +11 -11
- package/lib/node/labels.js +11 -11
- package/lib/node/metaArgument.js +116 -0
- package/lib/node/metaType.js +9 -8
- package/lib/node/metavariable.js +12 -17
- package/lib/node/nonTerminal.js +200 -0
- package/lib/node/parameter.js +9 -4
- package/lib/node/parenthesisedLabel.js +116 -0
- package/lib/node/parenthesisedLabels.js +11 -11
- package/lib/node/premise.js +12 -17
- package/lib/node/procedureCall.js +12 -17
- package/lib/node/proof.js +11 -11
- package/lib/node/property.js +9 -4
- package/lib/node/propertyRelation.js +12 -17
- package/lib/node/reference.js +11 -11
- package/lib/node/rule.js +44 -7
- package/lib/node/statement.js +92 -53
- package/lib/node/step.js +12 -17
- package/lib/node/subDerivation.js +46 -11
- package/lib/node/subproof.js +19 -17
- 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 +12 -17
- package/lib/node/term.js +22 -33
- package/lib/node/topLevelAssertion.js +14 -29
- package/lib/node/topLevelMetaAssertion.js +26 -41
- package/lib/node/type.js +9 -4
- package/lib/node/types.js +116 -0
- package/lib/node/variable.js +9 -4
- package/lib/nonTerminalNodeMap.js +11 -3
- package/lib/ruleNames.js +33 -1
- 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 -313
- package/lib/utilities/subproof.js +13 -4
- package/package.json +1 -1
- 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 +6 -8
- package/src/dom/assertion/satisfies.js +5 -10
- package/src/dom/declaration/complexType.js +2 -2
- package/src/dom/declaration/constructor.js +6 -7
- package/src/dom/declaration/variable.js +6 -7
- package/src/dom/declaration.js +11 -15
- package/src/dom/frame.js +4 -6
- package/src/dom/judgement.js +6 -8
- package/src/dom/propertyRelation.js +6 -8
- package/src/dom/term.js +0 -3
- package/src/dom/topLevelMetaAssertion.js +83 -39
- package/src/dom/type.js +2 -2
- 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 +30 -22
- package/src/node/assertion/defined.js +28 -15
- package/src/node/assertion/property.js +7 -17
- package/src/node/assertion/satisfies.js +11 -9
- package/src/node/assertion/subproof.js +4 -9
- package/src/node/assertion/type.js +6 -16
- package/src/node/combinator.js +1 -1
- package/src/node/conclusion.js +4 -9
- package/src/node/constructor.js +1 -1
- package/src/node/declaration/combinator.js +4 -9
- package/src/node/declaration/complexType.js +31 -35
- package/src/node/declaration/constructor.js +16 -26
- package/src/node/declaration/metavariable.js +6 -16
- package/src/node/declaration/property.js +13 -23
- package/src/node/declaration/type.js +35 -29
- package/src/node/declaration/variable.js +6 -16
- package/src/node/declaration.js +6 -16
- package/src/node/deduction.js +4 -9
- package/src/node/derivation.js +7 -10
- package/src/node/equality.js +19 -18
- package/src/node/error.js +1 -1
- package/src/node/frame.js +8 -35
- package/src/node/judgement.js +8 -18
- package/src/node/label.js +4 -9
- package/src/node/labels.js +4 -9
- package/src/node/metaArgument.js +16 -0
- package/src/node/metaType.js +1 -5
- package/src/node/metavariable.js +6 -16
- package/src/node/nonTerminal.js +112 -0
- package/src/node/parameter.js +1 -1
- package/src/node/parenthesisedLabel.js +16 -0
- package/src/node/parenthesisedLabels.js +5 -10
- package/src/node/premise.js +6 -16
- package/src/node/procedureCall.js +6 -16
- package/src/node/proof.js +4 -9
- package/src/node/property.js +1 -1
- package/src/node/propertyRelation.js +7 -16
- package/src/node/reference.js +4 -9
- package/src/node/rule.js +40 -3
- package/src/node/statement.js +109 -66
- package/src/node/step.js +6 -16
- package/src/node/subDerivation.js +14 -10
- package/src/node/subproof.js +13 -16
- 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 +6 -16
- package/src/node/term.js +15 -39
- package/src/node/topLevelAssertion.js +13 -33
- package/src/node/topLevelMetaAssertion.js +20 -39
- package/src/node/type.js +1 -1
- package/src/node/types.js +16 -0
- package/src/node/variable.js +1 -1
- package/src/nonTerminalNodeMap.js +60 -36
- package/src/ruleNames.js +8 -0
- 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 -168
- package/src/utilities/subproof.js +22 -6
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import dom from "../../dom";
|
|
4
4
|
|
|
5
|
-
import { nodeQuery } from "../../utilities/query";
|
|
6
|
-
|
|
7
|
-
const variableNodeQuery = nodeQuery("/term/variable!");
|
|
8
|
-
|
|
9
5
|
function unifyWithBracketedConstructor(term, context, verifyAhead) {
|
|
10
6
|
let unifiedWithBracketedConstructor;
|
|
11
7
|
|
|
@@ -39,14 +35,12 @@ function verifyTermAsVariable(term, localContext, verifyAhead) {
|
|
|
39
35
|
const { Variable } = dom,
|
|
40
36
|
context = localContext, ///
|
|
41
37
|
termNode = term.getNode(),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
let variable;
|
|
45
|
-
|
|
46
|
-
variable = Variable.fromVariableNode(variableNode, context);
|
|
38
|
+
singularVariableNode = termNode.getSingularVariableNode();
|
|
47
39
|
|
|
48
|
-
if (
|
|
49
|
-
const
|
|
40
|
+
if (singularVariableNode !== null) {
|
|
41
|
+
const variableNode = singularVariableNode,
|
|
42
|
+
variable = Variable.fromVariableNode(variableNode, context),
|
|
43
|
+
termString = term.getString();
|
|
50
44
|
|
|
51
45
|
localContext.trace(`Verifying the '${termString}' term as a variable...`);
|
|
52
46
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { TERM_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ArgumentNode extends NonTerminalNode {
|
|
8
|
+
getSingularTermNode() {
|
|
9
|
+
const ruleName = TERM_RULE_NAME,
|
|
10
|
+
singularTermNode = this.getSingularTNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return singularTermNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ArgumentNode, ruleName, childNodes, opacity, precedence); }
|
|
16
|
+
}
|
|
@@ -1,42 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { MISSING } from "../../constants";
|
|
6
|
+
import { TERM_RULE_NAME, FRAME_RULE_NAME, STATEMENT_RULE_NAME } from "../../ruleNames";
|
|
6
7
|
|
|
7
8
|
export default class ContainedAssertionNode extends NonTerminalNode {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
isNegated() {
|
|
10
|
+
let negated = false;
|
|
11
|
+
|
|
12
|
+
this.someChildNode((childNode) => {
|
|
13
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
14
|
+
|
|
15
|
+
if (childNodeTerminalNode) {
|
|
16
|
+
const terminalNode = childNode, ///
|
|
17
|
+
content = terminalNode.getContent(),
|
|
18
|
+
contentMessing = (content === MISSING);
|
|
11
19
|
|
|
12
|
-
|
|
13
|
-
|
|
20
|
+
if (contentMessing) {
|
|
21
|
+
negated = true;
|
|
22
|
+
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
14
25
|
}
|
|
15
|
-
})
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return negated;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
getTermNode() {
|
|
32
|
+
const ruleName = TERM_RULE_NAME,
|
|
33
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
16
34
|
|
|
17
35
|
return termNode;
|
|
18
36
|
}
|
|
19
37
|
|
|
20
38
|
getFrameNode() {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (childNodeFrameNode) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}) || null;
|
|
39
|
+
const ruleName = FRAME_RULE_NAME,
|
|
40
|
+
frameNode = this.getNodeByRuleName(ruleName);
|
|
28
41
|
|
|
29
42
|
return frameNode;
|
|
30
43
|
}
|
|
31
44
|
|
|
32
45
|
getStatementNode() {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (childNodeStatementNode) {
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
}) || null;
|
|
46
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
47
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
40
48
|
|
|
41
49
|
return statementNode;
|
|
42
50
|
}
|
|
@@ -1,30 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { UNDEFINED } from "../../constants";
|
|
6
|
+
import { FRAME_RULE_NAME, TERM_RULE_NAME } from "../../ruleNames";
|
|
6
7
|
|
|
7
8
|
export default class DefinedAssertionNode extends NonTerminalNode {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
isNegated() {
|
|
10
|
+
let negated = false;
|
|
11
|
+
|
|
12
|
+
this.someChildNode((childNode) => {
|
|
13
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
14
|
+
|
|
15
|
+
if (childNodeTerminalNode) {
|
|
16
|
+
const terminalNode = childNode, ///
|
|
17
|
+
content = terminalNode.getContent(),
|
|
18
|
+
contentUndefined = (content === UNDEFINED);
|
|
11
19
|
|
|
12
|
-
|
|
13
|
-
|
|
20
|
+
if (contentUndefined) {
|
|
21
|
+
negated = true;
|
|
22
|
+
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
14
25
|
}
|
|
15
|
-
})
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return negated;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
getTermNode() {
|
|
32
|
+
const ruleName = TERM_RULE_NAME,
|
|
33
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
16
34
|
|
|
17
35
|
return termNode;
|
|
18
36
|
}
|
|
19
37
|
|
|
20
38
|
getFrameNode() {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (childNodeFrameNode) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}) || null;
|
|
39
|
+
const ruleName = FRAME_RULE_NAME,
|
|
40
|
+
frameNode = this.getNodeByRuleName(ruleName);
|
|
28
41
|
|
|
29
42
|
return frameNode;
|
|
30
43
|
}
|
|
@@ -1,30 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { TERM_RULE_NAME, PROPERTY_RELATION_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class PropertyAssertionNode extends NonTerminalNode {
|
|
8
8
|
getTermNode() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeTermNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}) || null;
|
|
9
|
+
const ruleName = TERM_RULE_NAME,
|
|
10
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return termNode;
|
|
18
13
|
}
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (childNodePropertyRelationNode) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}) || null;
|
|
15
|
+
getFrameNode() {
|
|
16
|
+
const ruleName = PROPERTY_RELATION_RULE_NAME,
|
|
17
|
+
propertyRelationNode = this.getNodeByRuleName(ruleName);
|
|
28
18
|
|
|
29
19
|
return propertyRelationNode;
|
|
30
20
|
}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { TERM_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class SatisfiesAssertionNode extends NonTerminalNode {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const ruleName = TERM_RULE_NAME,
|
|
10
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
return termNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getFrameNode() {
|
|
16
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
17
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
16
18
|
|
|
17
19
|
return metavariableNode;
|
|
18
20
|
}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class SubproofAssertionNode extends NonTerminalNode {
|
|
8
8
|
getStatementNodes() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeStatementNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNodes = this.getNodesByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return statementNodes;
|
|
18
13
|
}
|
|
@@ -1,30 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class TypeAssertionNode extends NonTerminalNode {
|
|
8
8
|
getTermNode() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeTermNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}) || null;
|
|
9
|
+
const ruleName = TERM_RULE_NAME,
|
|
10
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return termNode;
|
|
18
13
|
}
|
|
19
14
|
|
|
20
15
|
getTypeNode() {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (childNodeTypeNode) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}) || null;
|
|
16
|
+
const ruleName = TYPE_RULE_NAME,
|
|
17
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
28
18
|
|
|
29
19
|
return typeNode;
|
|
30
20
|
}
|
package/src/node/combinator.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
export default class CombinatorNode extends NonTerminalNode {
|
|
6
6
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(CombinatorNode, ruleName, childNodes, opacity, precedence); }
|
package/src/node/conclusion.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class ConclusionNode extends NonTerminalNode {
|
|
8
8
|
getStatementNode() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeStatementNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}) || null;
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return statementNode;
|
|
18
13
|
}
|
package/src/node/constructor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
export default class ConstructorNode extends NonTerminalNode {
|
|
6
6
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorNode, ruleName, childNodes, opacity, precedence); }
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class ContainedDeclarationNode extends NonTerminalNode {
|
|
8
8
|
getStatementNode() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeStatementNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}) || null;
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return statementNode;
|
|
18
13
|
}
|
|
@@ -1,29 +1,11 @@
|
|
|
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
8
|
export default class ComplexTypeDeclarationNode extends NonTerminalNode {
|
|
9
|
-
getTypeName() {
|
|
10
|
-
let typeName = null;
|
|
11
|
-
|
|
12
|
-
this.someChildNode((childNode) => {
|
|
13
|
-
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
14
|
-
|
|
15
|
-
if (childNodeTypeNode) {
|
|
16
|
-
const typeNode = childNode; ///
|
|
17
|
-
|
|
18
|
-
typeName = typeNode.getTypeName();
|
|
19
|
-
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
return typeName;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
9
|
isProvisional() {
|
|
28
10
|
let provisional = false;
|
|
29
11
|
|
|
@@ -46,30 +28,44 @@ export default class ComplexTypeDeclarationNode extends NonTerminalNode {
|
|
|
46
28
|
return provisional;
|
|
47
29
|
}
|
|
48
30
|
|
|
31
|
+
getTypeName() {
|
|
32
|
+
const typeNode = this.getTypeNode(),
|
|
33
|
+
typeName = typeNode.getTypeName();
|
|
34
|
+
|
|
35
|
+
return typeName;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
getTypeNode() {
|
|
39
|
+
const ruleName = TYPE_RULE_NAME,
|
|
40
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
41
|
+
|
|
42
|
+
return typeNode;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
getTypesNode() {
|
|
46
|
+
const ruleName = TYPES_RULE_NAME,
|
|
47
|
+
typesNode = this.getNodeByRuleName(ruleName);
|
|
48
|
+
|
|
49
|
+
return typesNode;
|
|
50
|
+
}
|
|
51
|
+
|
|
49
52
|
getSuperTypeNodes() {
|
|
50
|
-
|
|
51
|
-
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
53
|
+
let superTypeNodes = [];
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
});
|
|
55
|
+
const typesNode = this.getTypesNode();
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
if (typesNode !== null) {
|
|
58
|
+
const typeNodes = typesNode.getTypeNodes();
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
superTypeNodes = typeNodes; ///
|
|
61
|
+
}
|
|
61
62
|
|
|
62
63
|
return superTypeNodes;
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
getPropertyDeclarationNodes() {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (childNodePropertyDeclarationNode) {
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
});
|
|
67
|
+
const ruleName = PROPERTY_DECLARATION_RULE_NAME,
|
|
68
|
+
propertyDeclarationNodes = this.getNodesByRuleName(ruleName);
|
|
73
69
|
|
|
74
70
|
return propertyDeclarationNodes;
|
|
75
71
|
}
|
|
@@ -1,35 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONALLY } from "../../constants";
|
|
6
|
-
import {
|
|
6
|
+
import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../../ruleNames";
|
|
7
7
|
|
|
8
8
|
export default class ConstructorDeclarationNode extends NonTerminalNode {
|
|
9
|
-
getTermNode() {
|
|
10
|
-
const termNode = this.findChildNode((childNode) => {
|
|
11
|
-
const childNodeTermNode = isNodeTermNode(childNode);
|
|
12
|
-
|
|
13
|
-
if (childNodeTermNode) {
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
}) || null;
|
|
17
|
-
|
|
18
|
-
return termNode;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
getTypeNode() {
|
|
22
|
-
const typeNode = this.findChildNode((childNode) => {
|
|
23
|
-
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
24
|
-
|
|
25
|
-
if (childNodeTypeNode) {
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
}) || null;
|
|
29
|
-
|
|
30
|
-
return typeNode;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
9
|
isProvisional() {
|
|
34
10
|
let provisional = false;
|
|
35
11
|
|
|
@@ -52,5 +28,19 @@ export default class ConstructorDeclarationNode extends NonTerminalNode {
|
|
|
52
28
|
return provisional;
|
|
53
29
|
}
|
|
54
30
|
|
|
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
|
+
|
|
55
45
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
56
46
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { META_TYPE_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class MetavariableDeclarationNode extends NonTerminalNode {
|
|
8
8
|
getTypeNode() {
|
|
@@ -13,25 +13,15 @@ export default class MetavariableDeclarationNode extends NonTerminalNode {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
getMetaTypeNode() {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (childNodeMetaTypeNode) {
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
}) || null;
|
|
16
|
+
const ruleName = META_TYPE_RULE_NAME,
|
|
17
|
+
metaTypeNode = this.getNodeByRuleName(ruleName);
|
|
23
18
|
|
|
24
19
|
return metaTypeNode
|
|
25
20
|
}
|
|
26
21
|
|
|
27
22
|
getMetavariableNode() {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (childNodeMetavariableNode) {
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
}) || null;
|
|
23
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
24
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
35
25
|
|
|
36
26
|
return metavariableNode;
|
|
37
27
|
}
|
|
@@ -1,40 +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
7
|
export default class PropertyDeclarationNode extends NonTerminalNode {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
8
|
+
getPropertyName() {
|
|
9
|
+
const propertyNode = this.getPropertyNode(),
|
|
10
|
+
propertyName = propertyNode.getPropertyName();
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
return propertyName;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getTypeNode() {
|
|
16
|
+
const ruleName = TYPE_RULE_NAME,
|
|
17
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
16
18
|
|
|
17
19
|
return typeNode;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
getPropertyNode() {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (childNodePropertyNode) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}) || null;
|
|
23
|
+
const ruleName = PROPERTY_RULE_NAME,
|
|
24
|
+
propertyNode = this.getNodeByRuleName(ruleName);
|
|
28
25
|
|
|
29
26
|
return propertyNode;
|
|
30
27
|
}
|
|
31
28
|
|
|
32
|
-
getPropertyName() {
|
|
33
|
-
const propertyNode = this.getPropertyNode(),
|
|
34
|
-
propertyName = propertyNode.getPropertyName();
|
|
35
|
-
|
|
36
|
-
return propertyName;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
29
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
40
30
|
}
|