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
|
@@ -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 } from "../../ruleNames";
|
|
7
7
|
|
|
8
8
|
export default class TypeDeclarationNode 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
|
|
|
@@ -31,7 +13,7 @@ export default class TypeDeclarationNode extends NonTerminalNode {
|
|
|
31
13
|
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
32
14
|
|
|
33
15
|
if (childNodeTerminalNode) {
|
|
34
|
-
const terminalNode = childNode,
|
|
16
|
+
const terminalNode = childNode,
|
|
35
17
|
content = terminalNode.getContent(),
|
|
36
18
|
contentProvisional = (content === PROVISIONAL);
|
|
37
19
|
|
|
@@ -46,18 +28,42 @@ export default class TypeDeclarationNode extends NonTerminalNode {
|
|
|
46
28
|
return provisional;
|
|
47
29
|
}
|
|
48
30
|
|
|
31
|
+
getTypeName() {
|
|
32
|
+
let typeName = null;
|
|
33
|
+
|
|
34
|
+
const typeNode = this.getTypeNode();
|
|
35
|
+
|
|
36
|
+
if (typeNode !== null) {
|
|
37
|
+
typeName = typeNode.getTypeName();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return typeName;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getTypeNode() {
|
|
44
|
+
const ruleName = TYPE_RULE_NAME,
|
|
45
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
46
|
+
|
|
47
|
+
return typeNode;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
getTypesNode() {
|
|
51
|
+
const ruleName = TYPES_RULE_NAME,
|
|
52
|
+
typesNode = this.getNodeByRuleName(ruleName);
|
|
53
|
+
|
|
54
|
+
return typesNode;
|
|
55
|
+
}
|
|
56
|
+
|
|
49
57
|
getSuperTypeNodes() {
|
|
50
|
-
|
|
51
|
-
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
58
|
+
let superTypeNodes = [];
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
});
|
|
60
|
+
const typesNode = this.getTypesNode();
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
if (typesNode !== null) {
|
|
63
|
+
const typeNodes = typesNode.getTypeNodes();
|
|
59
64
|
|
|
60
|
-
|
|
65
|
+
superTypeNodes = typeNodes; ///
|
|
66
|
+
}
|
|
61
67
|
|
|
62
68
|
return superTypeNodes;
|
|
63
69
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
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 { TYPE_RULE_NAME, VARIABLE_RULE_NAME } from "../../ruleNames";
|
|
7
7
|
|
|
8
8
|
export default class VariableDeclarationNode extends NonTerminalNode {
|
|
9
9
|
isProvisional() {
|
|
@@ -29,25 +29,15 @@ export default class VariableDeclarationNode extends NonTerminalNode {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
getTypeNode() {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (childNodeTypeNode) {
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
}) || null;
|
|
32
|
+
const ruleName = TYPE_RULE_NAME,
|
|
33
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
39
34
|
|
|
40
35
|
return typeNode;
|
|
41
36
|
}
|
|
42
37
|
|
|
43
38
|
getVariableNode() {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (childNodeVariableNode) {
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
}) || null;
|
|
39
|
+
const ruleName = VARIABLE_RULE_NAME,
|
|
40
|
+
variableNode = this.getNodeByRuleName(ruleName);
|
|
51
41
|
|
|
52
42
|
return variableNode;
|
|
53
43
|
}
|
package/src/node/declaration.js
CHANGED
|
@@ -1,30 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { STATEMENT_RULE_NAME, METAVARIABLE_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class DeclarationNode 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
|
}
|
|
19
14
|
|
|
20
15
|
getMetavariableNode() {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (childNodeMetavariableNode) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}) || null;
|
|
16
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
17
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
28
18
|
|
|
29
19
|
return metavariableNode;
|
|
30
20
|
}
|
package/src/node/deduction.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 DeductionNode 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/derivation.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { STEP_RULE_NAME, SUBPROOF_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class DerivationNode extends NonTerminalNode {
|
|
8
8
|
getStepOrSubproofNodes() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
9
|
+
const ruleNames = [
|
|
10
|
+
STEP_RULE_NAME,
|
|
11
|
+
SUBPROOF_RULE_NAME,
|
|
12
|
+
],
|
|
13
|
+
stepOrSubproofNodes = this.getNodesByRuleName(...ruleNames);
|
|
17
14
|
|
|
18
15
|
return stepOrSubproofNodes;
|
|
19
16
|
}
|
package/src/node/equality.js
CHANGED
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
6
|
+
|
|
7
|
+
import { TERM_RULE_NAME } from "../ruleNames";
|
|
8
|
+
|
|
9
|
+
const { first, last } = arrayUtilities;
|
|
4
10
|
|
|
5
11
|
export default class EqualityNode extends NonTerminalNode {
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
getTermNodes() {
|
|
13
|
+
const ruleName = TERM_RULE_NAME,
|
|
14
|
+
termNodes = this.getNodeByRuleName(ruleName);
|
|
8
15
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
leftTermNode = childNode; ///
|
|
16
|
+
return termNodes;
|
|
17
|
+
}
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
getLeftTermNode() {
|
|
20
|
+
const termNodes = this.getTermNodes(),
|
|
21
|
+
firstTermNode = first(termNodes),
|
|
22
|
+
leftTermNode = firstTermNode; ///
|
|
16
23
|
|
|
17
24
|
return leftTermNode;
|
|
18
25
|
}
|
|
19
26
|
|
|
20
27
|
getRightTermNode() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (index === 2) {
|
|
25
|
-
rightTermNode = childNode; ///
|
|
26
|
-
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
28
|
+
const termNodes = this.getTermNodes(),
|
|
29
|
+
firstTermNode = last(termNodes),
|
|
30
|
+
rightTermNode = firstTermNode; ///
|
|
30
31
|
|
|
31
32
|
return rightTermNode;
|
|
32
33
|
}
|
package/src/node/error.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 ErrorNode extends NonTerminalNode {
|
|
6
6
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ErrorNode, ruleName, childNodes, opacity, precedence); }
|
package/src/node/frame.js
CHANGED
|
@@ -1,54 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import { NonTerminalNode } from "occam-parsers";
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
5
4
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
const { first } = arrayUtilities;
|
|
5
|
+
import { DECLARATION_RULE_NAME, METAVARIABLE_RULE_NAME } from "../ruleNames";
|
|
9
6
|
|
|
10
7
|
export default class FrameNode extends NonTerminalNode {
|
|
11
8
|
getDeclarationNodes() {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (childNodeDeclarationNode) {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
9
|
+
const ruleName = DECLARATION_RULE_NAME,
|
|
10
|
+
declarationNodes = this.getNodesByRuleName(ruleName);
|
|
19
11
|
|
|
20
12
|
return declarationNodes;
|
|
21
13
|
}
|
|
22
14
|
|
|
23
15
|
getMetavariableNodes() {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (childNodeMetavariableNode) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
16
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
17
|
+
metavariableNodes = this.getNodesByRuleName(ruleName);
|
|
31
18
|
|
|
32
19
|
return metavariableNodes;
|
|
33
20
|
}
|
|
34
21
|
|
|
35
22
|
getSingularMetavariableNode() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const metavariableNodes = this.filterChildNode((childNode) => {
|
|
39
|
-
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
40
|
-
|
|
41
|
-
if (!childNodeMetavariableNode) {
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
}),
|
|
45
|
-
metavariableNodesLength = metavariableNodes.length;
|
|
46
|
-
|
|
47
|
-
if (metavariableNodesLength === 1) {
|
|
48
|
-
const firstMetavariableNode = first(metavariableNodes);
|
|
49
|
-
|
|
50
|
-
singularMetavariableNode = firstMetavariableNode; ///
|
|
51
|
-
}
|
|
23
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
24
|
+
singularMetavariableNode = this.getSingularTNodeByRuleName(ruleName);
|
|
52
25
|
|
|
53
26
|
return singularMetavariableNode;
|
|
54
27
|
}
|
package/src/node/judgement.js
CHANGED
|
@@ -1,32 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { FRAME_RULE_NAME, DECLARATION_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class JudgementNode extends NonTerminalNode {
|
|
8
8
|
getFrameNode() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeFrameNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}) || null;
|
|
9
|
+
const ruleName = FRAME_RULE_NAME,
|
|
10
|
+
frameNode = this.getNodesByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return frameNode;
|
|
18
13
|
}
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (childNodeDeclarationNode) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}) || null;
|
|
15
|
+
getDeclarationNodes() {
|
|
16
|
+
const ruleName = DECLARATION_RULE_NAME,
|
|
17
|
+
declarationNodes = this.getNodesByRuleName(ruleName);
|
|
28
18
|
|
|
29
|
-
return
|
|
19
|
+
return declarationNodes;
|
|
30
20
|
}
|
|
31
21
|
|
|
32
22
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(JudgementNode, ruleName, childNodes, opacity, precedence); }
|
package/src/node/label.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 { METAVARIABLE_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class LabelNode extends NonTerminalNode {
|
|
8
8
|
getMetavariableNode() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeMetavariableNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
}) || null;
|
|
9
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
10
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return metavariableNode;
|
|
18
13
|
}
|
package/src/node/labels.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 { LABEL_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class LabelsNode extends NonTerminalNode {
|
|
8
8
|
getLabelNodes() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (childNodeLabelNode) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
9
|
+
const ruleName = LABEL_RULE_NAME,
|
|
10
|
+
labelNodes = this.getNodesByRuleName(ruleName);
|
|
16
11
|
|
|
17
12
|
return labelNodes;
|
|
18
13
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class MetaArgumentNode extends NonTerminalNode {
|
|
8
|
+
getSingularStatementNode() {
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
singularStatementNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return singularStatementNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaArgumentNode, ruleName, childNodes, opacity, precedence); }
|
|
16
|
+
}
|
package/src/node/metaType.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
export default class MetaTypeNode extends NonTerminalNode {
|
|
6
|
-
getTypeNode() {
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
6
|
getMetaTypeName() {
|
|
11
7
|
let metaTypeName;
|
|
12
8
|
|
package/src/node/metavariable.js
CHANGED
|
@@ -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 MetavariableNode 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
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import { NonTerminalNode as NonTerminalNodeBase } from "occam-parsers";
|
|
6
|
+
|
|
7
|
+
const { first, forwardsFind, backwardsFind } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class NonTerminalNode extends NonTerminalNodeBase {
|
|
10
|
+
getNodeByRuleName(...ruleNames) {
|
|
11
|
+
const node = this.findChildNode((childNode) => {
|
|
12
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
13
|
+
|
|
14
|
+
if (childNodeNonTerminalNode) {
|
|
15
|
+
const nonTerminalNode = childNode, ///
|
|
16
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
17
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
18
|
+
|
|
19
|
+
if (ruleNamesIncludesRuleName) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}) || null;
|
|
24
|
+
|
|
25
|
+
return node;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getNodesByRuleName(...ruleNames) {
|
|
29
|
+
const nodes = this.filterChildNode((childNode) => {
|
|
30
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
31
|
+
|
|
32
|
+
if (childNodeNonTerminalNode) {
|
|
33
|
+
const nonTerminalNode = childNode, ///
|
|
34
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
35
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
36
|
+
|
|
37
|
+
if (ruleNamesIncludesRuleName) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
return nodes;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
getLastNodeByRuleName(...ruleNames) {
|
|
47
|
+
const childNodes = this.getChildNodes(),
|
|
48
|
+
lastNode = backwardsFind(childNodes, (childNode) => {
|
|
49
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
50
|
+
|
|
51
|
+
if (childNodeNonTerminalNode) {
|
|
52
|
+
const nonTerminalNode = childNode, ///
|
|
53
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
54
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
55
|
+
|
|
56
|
+
if (ruleNamesIncludesRuleName) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}) || null;
|
|
61
|
+
|
|
62
|
+
return lastNode;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
getFirstNodeByRuleName(...ruleNames) {
|
|
66
|
+
const childNodes = this.getChildNodes(),
|
|
67
|
+
firstNode = forwardsFind(childNodes, (childNode) => {
|
|
68
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
69
|
+
|
|
70
|
+
if (childNodeNonTerminalNode) {
|
|
71
|
+
const nonTerminalNode = childNode, ///
|
|
72
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
73
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
74
|
+
|
|
75
|
+
if (ruleNamesIncludesRuleName) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}) || null;
|
|
80
|
+
|
|
81
|
+
return firstNode;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
getSingularTNodeByRuleName(...ruleNames) {
|
|
85
|
+
let singularNode = null;
|
|
86
|
+
|
|
87
|
+
const nodes = this.filterChildNode((childNode) => {
|
|
88
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
89
|
+
|
|
90
|
+
if (childNodeNonTerminalNode) {
|
|
91
|
+
const nonTerminalNode = childNode, ///
|
|
92
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
93
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
94
|
+
|
|
95
|
+
if (ruleNamesIncludesRuleName) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}),
|
|
100
|
+
nodesLength = nodes.length;
|
|
101
|
+
|
|
102
|
+
if (nodesLength === 1) {
|
|
103
|
+
const firstNode = first(nodes);
|
|
104
|
+
|
|
105
|
+
singularNode = firstNode; ///
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return singularNode;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNodeBase.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
|
|
112
|
+
}
|
package/src/node/parameter.js
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { LABEL_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ParenthesisedLabelNode extends NonTerminalNode {
|
|
8
|
+
getLabelNode() {
|
|
9
|
+
const ruleName = LABEL_RULE_NAME,
|
|
10
|
+
labelNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return labelNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ParenthesisedLabelNode, ruleName, childNodes, opacity, precedence); }
|
|
16
|
+
}
|
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { LABELS_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class ParenthesisedLabelsNode extends NonTerminalNode {
|
|
8
8
|
getLabelNodes() {
|
|
9
9
|
const labelsNode = this.getLabelsNode(),
|
|
10
|
-
|
|
10
|
+
labelNodes = labelsNode.getLabelNodes();
|
|
11
11
|
|
|
12
12
|
return labelNodes;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
getLabelsNode() {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (childNodeLabelsNode) {
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
}) || null;
|
|
16
|
+
const ruleName = LABELS_RULE_NAME,
|
|
17
|
+
labelsNode = this.getNodeByRuleName(ruleName);
|
|
23
18
|
|
|
24
19
|
return labelsNode;
|
|
25
20
|
}
|