occam-verify-cli 1.0.448 → 1.0.472
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 +13 -5
- package/lib/context/ephemeral.js +270 -0
- package/lib/context/file.js +136 -128
- package/lib/context/liminal.js +120 -0
- package/lib/context/literal.js +92 -0
- package/lib/context/nominal.js +15 -1
- package/lib/context/release.js +68 -9
- package/lib/context/scoped.js +322 -0
- package/lib/context/synthetic.js +133 -0
- package/lib/element/assertion/contained.js +66 -66
- package/lib/element/assertion/defined.js +32 -32
- package/lib/element/assertion/property.js +39 -39
- package/lib/element/assertion/satisfies.js +22 -22
- package/lib/element/assumption.js +71 -87
- package/lib/element/combinator/bracketed.js +1 -10
- package/lib/element/conclusion.js +19 -15
- package/lib/element/constructor/bracketed.js +1 -10
- package/lib/element/constructor.js +2 -2
- package/lib/element/declaration/combinator.js +1 -2
- package/lib/element/declaration/metavariable.js +3 -3
- package/lib/element/declaration/variable.js +3 -3
- package/lib/element/deduction.js +26 -20
- package/lib/element/derivation.js +3 -3
- package/lib/element/equality.js +5 -5
- package/lib/element/equivalence.js +112 -107
- package/lib/element/equivalences.js +24 -10
- package/lib/element/error.js +3 -3
- package/lib/element/frame.js +73 -62
- package/lib/element/hypothesis.js +2 -2
- package/lib/element/judgement.js +40 -60
- package/lib/element/metaType.js +4 -4
- package/lib/element/metavariable.js +49 -38
- package/lib/element/parameter.js +13 -5
- package/lib/element/procedureCall.js +16 -16
- package/lib/element/proof.js +14 -13
- package/lib/element/proofAssertion/premise.js +319 -0
- package/lib/element/proofAssertion/step.js +309 -0
- package/lib/element/proofAssertion/supposition.js +333 -0
- package/lib/element/proofAssertion.js +20 -10
- package/lib/element/propertyRelation.js +2 -2
- package/lib/element/reference.js +72 -30
- package/lib/element/rule.js +26 -28
- package/lib/element/section.js +5 -5
- package/lib/element/signature.js +9 -6
- package/lib/element/statement.js +44 -36
- package/lib/element/subproof.js +18 -17
- package/lib/element/substitution/frame.js +86 -49
- package/lib/element/substitution/reference.js +101 -19
- package/lib/element/substitution/statement.js +128 -105
- package/lib/element/substitution/term.js +93 -57
- package/lib/element/substitution.js +20 -69
- package/lib/element/substitutions.js +49 -34
- package/lib/element/term.js +41 -30
- package/lib/element/topLevelAssertion/axiom.js +331 -0
- package/lib/element/{conjecture.js → topLevelAssertion/conjecture.js} +10 -10
- package/lib/element/{lemma.js → topLevelAssertion/lemma.js} +9 -9
- package/lib/element/{theorem.js → topLevelAssertion/theorem.js} +8 -8
- package/lib/element/topLevelAssertion.js +434 -0
- package/lib/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +8 -8
- package/lib/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +8 -8
- package/lib/element/topLevelMetaAssertion.js +293 -0
- package/lib/element/type.js +4 -4
- package/lib/element/variable.js +48 -40
- package/lib/index.js +3 -3
- package/lib/main.js +3 -3
- package/lib/metaTypes.js +18 -15
- package/lib/node/frame.js +2 -2
- package/lib/node/metavariable.js +4 -4
- package/lib/node/parameter.js +28 -7
- package/lib/node/proofAssertion/premise.js +116 -0
- package/lib/node/proofAssertion/step.js +152 -0
- package/lib/node/proofAssertion/supposition.js +116 -0
- package/lib/node/{premise.js → proofAssertion.js} +11 -18
- package/lib/node/statement.js +2 -2
- package/lib/node/substitution/frame.js +9 -31
- package/lib/node/substitution/reference.js +137 -0
- package/lib/node/substitution/statement.js +9 -31
- package/lib/node/substitution/term.js +9 -23
- package/lib/node/{axiom.js → topLevelAssertion/axiom.js} +7 -7
- package/lib/node/{conjecture.js → topLevelAssertion/conjecture.js} +7 -7
- package/lib/node/{lemma.js → topLevelAssertion/lemma.js} +7 -7
- package/lib/node/{theorem.js → topLevelAssertion/theorem.js} +7 -7
- package/lib/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +9 -9
- package/lib/node/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +7 -7
- package/lib/node/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +7 -7
- package/lib/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +9 -9
- package/lib/nonTerminalNodeMap.js +15 -14
- package/lib/preamble.js +10 -10
- package/lib/process/instantiate.js +6 -21
- package/lib/process/unify.js +11 -10
- package/lib/tokenTypes.js +22 -0
- package/lib/types.js +3 -3
- package/lib/utilities/bnf.js +5 -5
- package/lib/utilities/context.js +63 -0
- package/lib/utilities/element.js +235 -408
- package/lib/utilities/instance.js +12 -34
- package/lib/utilities/json.js +3 -2
- package/lib/utilities/string.js +56 -21
- package/lib/utilities/unification.js +38 -32
- package/lib/utilities/validation.js +47 -50
- package/package.json +2 -2
- package/src/constants.js +12 -1
- package/src/context/ephemeral.js +257 -0
- package/src/context/file.js +108 -116
- package/src/context/liminal.js +67 -0
- package/src/context/literal.js +51 -0
- package/src/context/nominal.js +12 -0
- package/src/context/release.js +48 -8
- package/src/context/{local.js → scoped.js} +43 -125
- package/src/context/synthetic.js +60 -0
- package/src/element/assertion/contained.js +49 -47
- package/src/element/assertion/defined.js +29 -27
- package/src/element/assertion/property.js +35 -35
- package/src/element/assertion/satisfies.js +19 -18
- package/src/element/assumption.js +71 -93
- package/src/element/combinator/bracketed.js +0 -7
- package/src/element/conclusion.js +25 -24
- package/src/element/constructor/bracketed.js +0 -7
- package/src/element/constructor.js +1 -1
- package/src/element/declaration/combinator.js +0 -1
- package/src/element/declaration/metavariable.js +2 -2
- package/src/element/declaration/variable.js +5 -5
- package/src/element/deduction.js +33 -31
- package/src/element/derivation.js +2 -2
- package/src/element/equality.js +4 -4
- package/src/element/equivalence.js +115 -135
- package/src/element/equivalences.js +9 -7
- package/src/element/error.js +4 -2
- package/src/element/frame.js +80 -65
- package/src/element/hypothesis.js +1 -1
- package/src/element/judgement.js +42 -62
- package/src/element/metaType.js +3 -4
- package/src/element/metavariable.js +59 -56
- package/src/element/parameter.js +10 -5
- package/src/element/procedureCall.js +20 -18
- package/src/element/proof.js +14 -16
- package/src/element/{premise.js → proofAssertion/premise.js} +57 -53
- package/src/element/{step.js → proofAssertion/step.js} +59 -62
- package/src/element/{supposition.js → proofAssertion/supposition.js} +67 -56
- package/src/element/proofAssertion.js +24 -13
- package/src/element/propertyRelation.js +1 -1
- package/src/element/reference.js +87 -37
- package/src/element/rule.js +31 -37
- package/src/element/section.js +5 -5
- package/src/element/signature.js +8 -8
- package/src/element/statement.js +52 -48
- package/src/element/subproof.js +16 -18
- package/src/element/substitution/frame.js +104 -50
- package/src/element/substitution/reference.js +120 -20
- package/src/element/substitution/statement.js +169 -130
- package/src/element/substitution/term.js +104 -63
- package/src/element/substitution.js +16 -58
- package/src/element/substitutions.js +43 -41
- package/src/element/term.js +47 -41
- package/src/element/{axiom.js → topLevelAssertion/axiom.js} +22 -20
- package/src/element/{conjecture.js → topLevelAssertion/conjecture.js} +5 -6
- package/src/element/{lemma.js → topLevelAssertion/lemma.js} +5 -6
- package/src/element/{theorem.js → topLevelAssertion/theorem.js} +5 -5
- package/src/element/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +37 -33
- package/src/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +5 -6
- package/src/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +5 -6
- package/src/element/{metaLemmaMetatheorem.js → topLevelMetaAssertion.js} +19 -17
- package/src/element/type.js +2 -4
- package/src/element/variable.js +47 -48
- package/src/index.js +2 -1
- package/src/main.js +2 -1
- package/src/metaTypes.js +25 -9
- package/src/node/frame.js +1 -1
- package/src/node/metavariable.js +3 -3
- package/src/node/parameter.js +32 -5
- package/src/node/proofAssertion/premise.js +16 -0
- package/src/node/{step.js → proofAssertion/step.js} +4 -18
- package/src/node/proofAssertion/supposition.js +16 -0
- package/src/node/proofAssertion.js +23 -0
- package/src/node/statement.js +1 -1
- package/src/node/substitution/frame.js +6 -32
- package/src/node/substitution/reference.js +38 -0
- package/src/node/substitution/statement.js +6 -32
- package/src/node/substitution/term.js +6 -22
- package/src/node/topLevelAssertion/axiom.js +13 -0
- package/src/node/topLevelAssertion/conjecture.js +13 -0
- package/src/node/topLevelAssertion/lemma.js +13 -0
- package/src/node/topLevelAssertion/theorem.js +13 -0
- package/src/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +1 -1
- package/src/node/topLevelMetaAssertion/metaLemma.js +13 -0
- package/src/node/topLevelMetaAssertion/metatheorem.js +13 -0
- package/src/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +1 -1
- package/src/nonTerminalNodeMap.js +15 -12
- package/src/preamble.js +9 -9
- package/src/process/instantiate.js +27 -36
- package/src/process/unify.js +10 -9
- package/src/tokenTypes.js +4 -0
- package/src/types.js +4 -2
- package/src/utilities/bnf.js +3 -2
- package/src/utilities/context.js +46 -0
- package/src/utilities/element.js +302 -509
- package/src/utilities/instance.js +19 -42
- package/src/utilities/json.js +3 -1
- package/src/utilities/string.js +69 -28
- package/src/utilities/unification.js +41 -38
- package/src/utilities/validation.js +66 -75
- package/lib/context/local.js +0 -605
- package/lib/context/temporary.js +0 -752
- package/lib/element/axiom.js +0 -329
- package/lib/element/axiomLemmaTheoremConjecture.js +0 -427
- package/lib/element/metaLemmaMetatheorem.js +0 -289
- package/lib/element/premise.js +0 -307
- package/lib/element/step.js +0 -311
- package/lib/element/supposition.js +0 -320
- package/lib/log.js +0 -150
- package/lib/node/step.js +0 -166
- package/lib/node/supposition.js +0 -130
- package/src/context/temporary.js +0 -476
- package/src/log.js +0 -118
- package/src/node/axiom.js +0 -13
- package/src/node/conjecture.js +0 -13
- package/src/node/lemma.js +0 -13
- package/src/node/metaLemma.js +0 -13
- package/src/node/metatheorem.js +0 -13
- package/src/node/premise.js +0 -30
- package/src/node/supposition.js +0 -30
- package/src/node/theorem.js +0 -13
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import ProofAssertionNode from "../../node/proofAssertion";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { QUALIFICATION_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
|
-
export default class StepNode extends
|
|
7
|
+
export default class StepNode extends ProofAssertionNode {
|
|
8
8
|
isStepNode() {
|
|
9
9
|
const stepNode = true;
|
|
10
10
|
|
|
@@ -41,20 +41,6 @@ export default class StepNode extends NonTerminalNode {
|
|
|
41
41
|
return satisfiedAssertionNode;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
getNonsenseNode() {
|
|
45
|
-
const ruleName = NONSENSE_RULE_NAME,
|
|
46
|
-
nonsenseNode = this.getNodeByRuleName(ruleName);
|
|
47
|
-
|
|
48
|
-
return nonsenseNode;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
getStatementNode() {
|
|
52
|
-
const ruleName = STATEMENT_RULE_NAME,
|
|
53
|
-
statementNode = this.getNodeByRuleName(ruleName);
|
|
54
|
-
|
|
55
|
-
return statementNode;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
44
|
getQualificationNode() {
|
|
59
45
|
const ruleName = QUALIFICATION_RULE_NAME,
|
|
60
46
|
qualificationNode = this.getNodeByRuleName(ruleName);
|
|
@@ -62,5 +48,5 @@ export default class StepNode extends NonTerminalNode {
|
|
|
62
48
|
return qualificationNode;
|
|
63
49
|
}
|
|
64
50
|
|
|
65
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
51
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return ProofAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
|
|
66
52
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import ProofAssertionNode from "../../node/proofAssertion";
|
|
4
|
+
|
|
5
|
+
import { PROCEDURE_CALL_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class SuppositionNode extends ProofAssertionNode {
|
|
8
|
+
getProcedureCallNode() {
|
|
9
|
+
const ruleName = PROCEDURE_CALL_RULE_NAME,
|
|
10
|
+
procedureCallNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return procedureCallNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return ProofAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(SuppositionNode, ruleName, childNodes, opacity, precedence); }
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../nonTerminalNode";
|
|
4
|
+
|
|
5
|
+
import { NONSENSE_RULE_NAME, STATEMENT_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ProofAssertionNode extends NonTerminalNode {
|
|
8
|
+
getNonsenseNode() {
|
|
9
|
+
const ruleName = NONSENSE_RULE_NAME,
|
|
10
|
+
nonsenseNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return nonsenseNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getStatementNode() {
|
|
16
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
17
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return statementNode;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
|
|
23
|
+
}
|
package/src/node/statement.js
CHANGED
|
@@ -36,7 +36,7 @@ export default class StatementNode extends NonTerminalNode {
|
|
|
36
36
|
|
|
37
37
|
const metavariableNode = this.getMetavariableNode();
|
|
38
38
|
|
|
39
|
-
if (
|
|
39
|
+
if (metavariableNode !== null) {
|
|
40
40
|
metavariableName = metavariableNode.getMetavariableName();
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -5,44 +5,18 @@ import SubstitutionNode from "../../node/substitution";
|
|
|
5
5
|
import { FRAME_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class FrameSubstitutionNode extends SubstitutionNode {
|
|
8
|
-
|
|
9
|
-
const firstFrameNode = this.getFirstFrameNode(),
|
|
10
|
-
frameNode = firstFrameNode; ///
|
|
11
|
-
|
|
12
|
-
return frameNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getMetavariableNode() {
|
|
16
|
-
const lastMetavariableNode = this.getLastMetavariableNode(),
|
|
17
|
-
metavariableNode = lastMetavariableNode; ///
|
|
18
|
-
|
|
19
|
-
return metavariableNode;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getLastMetavariableNode() {
|
|
23
|
-
let lastMetavariableNode = null;
|
|
24
|
-
|
|
8
|
+
getTargetFrameNode() {
|
|
25
9
|
const lastFrameNode = this.getLastFrameNode(),
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (singularMetavariableNode !== null) {
|
|
29
|
-
lastMetavariableNode = singularMetavariableNode; ///
|
|
30
|
-
}
|
|
10
|
+
targetFrameNode = lastFrameNode; ///
|
|
31
11
|
|
|
32
|
-
return
|
|
12
|
+
return targetFrameNode;
|
|
33
13
|
}
|
|
34
14
|
|
|
35
|
-
|
|
36
|
-
let firstMetavariableNode = null;
|
|
37
|
-
|
|
15
|
+
getReplacementFrameNode() {
|
|
38
16
|
const firstFrameNode = this.getFirstFrameNode(),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (singularMetavariableNode !== null) {
|
|
42
|
-
firstMetavariableNode = singularMetavariableNode; ///
|
|
43
|
-
}
|
|
17
|
+
replacementFrameNode = firstFrameNode; ///
|
|
44
18
|
|
|
45
|
-
return
|
|
19
|
+
return replacementFrameNode;
|
|
46
20
|
}
|
|
47
21
|
|
|
48
22
|
getLastFrameNode() {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import SubstitutionNode from "../../node/substitution";
|
|
4
|
+
|
|
5
|
+
import { REFERENCE_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ReferenceSubstitutionNode extends SubstitutionNode {
|
|
8
|
+
getTargetReferenceNode() {
|
|
9
|
+
const lastReferenceNode = this.getLastReferenceNode(),
|
|
10
|
+
targetReferenceNode = lastReferenceNode; ///
|
|
11
|
+
|
|
12
|
+
return targetReferenceNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getReplacementReferenceNode() {
|
|
16
|
+
const firstReferenceNode = this.getFirstReferenceNode(),
|
|
17
|
+
replacementReferenceNode = firstReferenceNode; ///
|
|
18
|
+
|
|
19
|
+
return replacementReferenceNode;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getLastReferenceNode() {
|
|
23
|
+
const ruleName = REFERENCE_RULE_NAME,
|
|
24
|
+
lastReferenceNode = this.getLastNodeByRuleName(ruleName);
|
|
25
|
+
|
|
26
|
+
return lastReferenceNode;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
getFirstReferenceNode() {
|
|
30
|
+
const ruleName = REFERENCE_RULE_NAME,
|
|
31
|
+
firstReferenceNode = this.getFirstNodeByRuleName(ruleName);
|
|
32
|
+
|
|
33
|
+
return firstReferenceNode;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(ReferenceSubstitutionNode, ruleName, childNodes, opacity, precedence); }
|
|
37
|
+
}
|
|
38
|
+
|
|
@@ -5,44 +5,18 @@ import SubstitutionNode from "../../node/substitution";
|
|
|
5
5
|
import { STATEMENT_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class StatementSubstitutionNode extends SubstitutionNode {
|
|
8
|
-
|
|
9
|
-
const firstStatementNode = this.getFirstStatementNode(),
|
|
10
|
-
statementNode = firstStatementNode; ///
|
|
11
|
-
|
|
12
|
-
return statementNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getMetavariableNode() {
|
|
16
|
-
const lastMetavariableNode = this.getLastVariableNode(),
|
|
17
|
-
metavariableNode = lastMetavariableNode; ///
|
|
18
|
-
|
|
19
|
-
return metavariableNode;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getLastMetavariableNode() {
|
|
23
|
-
let lastMetavariableNode = null;
|
|
24
|
-
|
|
8
|
+
getTargetStatementNode() {
|
|
25
9
|
const lastStatementNode = this.getLastStatementNode(),
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (singularMetavariableNode !== null) {
|
|
29
|
-
lastMetavariableNode = singularMetavariableNode; ///
|
|
30
|
-
}
|
|
10
|
+
targetStatementNode = lastStatementNode; ///
|
|
31
11
|
|
|
32
|
-
return
|
|
12
|
+
return targetStatementNode;
|
|
33
13
|
}
|
|
34
14
|
|
|
35
|
-
|
|
36
|
-
let firstMetavariableNode = null;
|
|
37
|
-
|
|
15
|
+
getReplacementStatementNode() {
|
|
38
16
|
const firstStatementNode = this.getFirstStatementNode(),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (singularMetavariableNode !== null) {
|
|
42
|
-
firstMetavariableNode = singularMetavariableNode; ///
|
|
43
|
-
}
|
|
17
|
+
replacementStatementNode = firstStatementNode; ///
|
|
44
18
|
|
|
45
|
-
return
|
|
19
|
+
return replacementStatementNode;
|
|
46
20
|
}
|
|
47
21
|
|
|
48
22
|
getLastStatementNode() {
|
|
@@ -5,34 +5,18 @@ import SubstitutionNode from "../../node/substitution";
|
|
|
5
5
|
import { TERM_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class TermSubstitutionNode extends SubstitutionNode {
|
|
8
|
-
|
|
9
|
-
const firstTermNode = this.getFirstTermNode(),
|
|
10
|
-
termNode = firstTermNode; ///
|
|
11
|
-
|
|
12
|
-
return termNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getVariableNode() {
|
|
16
|
-
const lastVariableNode = this.getLastVariableNode(),
|
|
17
|
-
variableNode = lastVariableNode; ///
|
|
18
|
-
|
|
19
|
-
return variableNode;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getLastVariableNode() {
|
|
8
|
+
getTargetTermNode() {
|
|
23
9
|
const lastTermNode = this.getLastTermNode(),
|
|
24
|
-
|
|
25
|
-
lastVariableNode = singularVariableNode; ///
|
|
10
|
+
targetTermNode = lastTermNode; ///
|
|
26
11
|
|
|
27
|
-
return
|
|
12
|
+
return targetTermNode;
|
|
28
13
|
}
|
|
29
14
|
|
|
30
|
-
|
|
15
|
+
getReplacementTermNode() {
|
|
31
16
|
const firstTermNode = this.getFirstTermNode(),
|
|
32
|
-
|
|
33
|
-
firstVariableNode = singularVariableNode; ///
|
|
17
|
+
replacementTermNode = firstTermNode; ///
|
|
34
18
|
|
|
35
|
-
return
|
|
19
|
+
return replacementTermNode;
|
|
36
20
|
}
|
|
37
21
|
|
|
38
22
|
getLastTermNode() {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import TopLevelAssertionNode from "../../node/topLevelAssertion";
|
|
4
|
+
|
|
5
|
+
import { AXIOM_BODY_RULE_NAME, AXIOM_HEADER_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class AxiomNode extends TopLevelAssertionNode {
|
|
8
|
+
static bodyRuleName = AXIOM_BODY_RULE_NAME;
|
|
9
|
+
|
|
10
|
+
static headerRuleName = AXIOM_HEADER_RULE_NAME;
|
|
11
|
+
|
|
12
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(AxiomNode, ruleName, childNodes, opacity, precedence); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import TopLevelAssertionNode from "../../node/topLevelAssertion";
|
|
4
|
+
|
|
5
|
+
import { CONJECTURE_BODY_RULE_NAME, CONJECTURE_HEADER_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ConjectureNode extends TopLevelAssertionNode {
|
|
8
|
+
static bodyRuleName = CONJECTURE_BODY_RULE_NAME;
|
|
9
|
+
|
|
10
|
+
static headerRuleName = CONJECTURE_HEADER_RULE_NAME;
|
|
11
|
+
|
|
12
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(ConjectureNode, ruleName, childNodes, opacity, precedence); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import TopLevelAssertionNode from "../../node/topLevelAssertion";
|
|
4
|
+
|
|
5
|
+
import { LEMMA_BODY_RULE_NAME, LEMMA_HEADER_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class LemmaNode extends TopLevelAssertionNode {
|
|
8
|
+
static bodyRuleName = LEMMA_BODY_RULE_NAME;
|
|
9
|
+
|
|
10
|
+
static headerRuleName = LEMMA_HEADER_RULE_NAME;
|
|
11
|
+
|
|
12
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(LemmaNode, ruleName, childNodes, opacity, precedence); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import TopLevelAssertionNode from "../../node/topLevelAssertion";
|
|
4
|
+
|
|
5
|
+
import { THEOREM_BODY_RULE_NAME, THEOREM_HEADER_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class TheoremNode extends TopLevelAssertionNode {
|
|
8
|
+
static bodyRuleName = THEOREM_BODY_RULE_NAME;
|
|
9
|
+
|
|
10
|
+
static headerRuleName = THEOREM_HEADER_RULE_NAME;
|
|
11
|
+
|
|
12
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(TheoremNode, ruleName, childNodes, opacity, precedence); }
|
|
13
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import NonTerminalNode from "../nonTerminalNode";
|
|
4
4
|
|
|
5
|
-
export default class
|
|
5
|
+
export default class TopLevelAssertionNode extends NonTerminalNode {
|
|
6
6
|
getBodyNode() {
|
|
7
7
|
const { bodyRuleName } = this.constructor,
|
|
8
8
|
ruleName = bodyRuleName, ///
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import TopLevelMetaAssertionNode from "../../node/topLevelMetaAssertion";
|
|
4
|
+
|
|
5
|
+
import { META_LEMMA_BODY_RULE_NAME, META_LEMMA_HEADER_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class MetaLemmaNode extends TopLevelMetaAssertionNode {
|
|
8
|
+
static bodyRuleName = META_LEMMA_BODY_RULE_NAME;
|
|
9
|
+
|
|
10
|
+
static headerRuleName = META_LEMMA_HEADER_RULE_NAME;
|
|
11
|
+
|
|
12
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaNode, ruleName, childNodes, opacity, precedence); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import TopLevelMetaAssertionNode from "../../node/topLevelMetaAssertion";
|
|
4
|
+
|
|
5
|
+
import { METATHEOREM_BODY_RULE_NAME, METATHEOREM_HEADER_RULE_NAME } from "../../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class MetatheoremNode extends TopLevelMetaAssertionNode {
|
|
8
|
+
static bodyRuleName = METATHEOREM_BODY_RULE_NAME;
|
|
9
|
+
|
|
10
|
+
static headerRuleName = METATHEOREM_HEADER_RULE_NAME;
|
|
11
|
+
|
|
12
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremNode, ruleName, childNodes, opacity, precedence); }
|
|
13
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import NonTerminalNode from "../nonTerminalNode";
|
|
4
4
|
|
|
5
|
-
export default class
|
|
5
|
+
export default class TopLevelMetaAssertionNode extends NonTerminalNode {
|
|
6
6
|
getBodyNode() {
|
|
7
7
|
const { bodyRuleName } = this.constructor,
|
|
8
8
|
ruleName = bodyRuleName, ///
|
|
@@ -2,32 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
import TermNode from "./node/term";
|
|
4
4
|
import RuleNode from "./node/rule";
|
|
5
|
-
import StepNode from "./node/step";
|
|
5
|
+
import StepNode from "./node/proofAssertion/step";
|
|
6
6
|
import TypeNode from "./node/type";
|
|
7
7
|
import TypesNode from "./node/types";
|
|
8
8
|
import ErrorNode from "./node/error";
|
|
9
9
|
import FrameNode from "./node/frame";
|
|
10
|
-
import AxiomNode from "./node/axiom";
|
|
11
|
-
import LemmaNode from "./node/lemma";
|
|
10
|
+
import AxiomNode from "./node/topLevelAssertion/axiom";
|
|
11
|
+
import LemmaNode from "./node/topLevelAssertion/lemma";
|
|
12
12
|
import ProofNode from "./node/proof";
|
|
13
13
|
import LabelNode from "./node/label";
|
|
14
14
|
import LabelsNode from "./node/labels";
|
|
15
15
|
import SectionNode from "./node/section";
|
|
16
|
-
import PremiseNode from "./node/premise";
|
|
17
|
-
import TheoremNode from "./node/theorem";
|
|
16
|
+
import PremiseNode from "./node/proofAssertion/premise";
|
|
17
|
+
import TheoremNode from "./node/topLevelAssertion/theorem";
|
|
18
18
|
import ArgumentNode from "./node/argument";
|
|
19
19
|
import SubproofNode from "./node/subproof";
|
|
20
20
|
import PropertyNode from "./node/property";
|
|
21
21
|
import MetaTypeNode from "./node/metaType";
|
|
22
22
|
import EqualityNode from "./node/equality";
|
|
23
23
|
import VariableNode from "./node/variable";
|
|
24
|
-
import RuleBodyNode from "./node/body/rule";
|
|
25
24
|
import DocumentNode from "./node/document";
|
|
25
|
+
import RuleBodyNode from "./node/body/rule";
|
|
26
26
|
import StatementNode from "./node/statement";
|
|
27
27
|
import ReferenceNode from "./node/reference";
|
|
28
28
|
import DeductionNode from "./node/deduction";
|
|
29
29
|
import JudgementNode from "./node/judgement";
|
|
30
|
-
import MetaLemmaNode from "./node/metaLemma";
|
|
30
|
+
import MetaLemmaNode from "./node/topLevelMetaAssertion/metaLemma";
|
|
31
31
|
import ParameterNode from "./node/parameter";
|
|
32
32
|
import SignatureNode from "./node/signature";
|
|
33
33
|
import AxiomBodyNode from "./node/body/axiom";
|
|
@@ -35,19 +35,19 @@ import LemmaBodyNode from "./node/body/lemma";
|
|
|
35
35
|
import DerivationNode from "./node/derivation";
|
|
36
36
|
import CombinatorNode from "./node/combinator";
|
|
37
37
|
import ConclusionNode from "./node/conclusion";
|
|
38
|
-
import ConjectureNode from "./node/conjecture";
|
|
38
|
+
import ConjectureNode from "./node/topLevelAssertion/conjecture";
|
|
39
39
|
import HypothesisNode from "./node/hypothesis";
|
|
40
40
|
import TypePrefixNode from "./node/typePrefix";
|
|
41
41
|
import AssumptionNode from "./node/assumption";
|
|
42
42
|
import RuleHeaderNode from "./node/header/rule";
|
|
43
|
-
import SuppositionNode from "./node/supposition";
|
|
43
|
+
import SuppositionNode from "./node/proofAssertion/supposition";
|
|
44
44
|
import PlaceholderNode from "./node/placeholder";
|
|
45
45
|
import ConstructorNode from "./node/constructor";
|
|
46
|
+
import MetatheoremNode from "./node/topLevelMetaAssertion/metatheorem";
|
|
47
|
+
import EquivalenceNode from "./node/equivalence";
|
|
46
48
|
import TheoremBodyNode from "./node/body/theorem";
|
|
47
49
|
import AxiomHeaderNode from "./node/header/axiom";
|
|
48
50
|
import LemmaHeaderNode from "./node/header/lemma";
|
|
49
|
-
import MetatheoremNode from "./node/metatheorem";
|
|
50
|
-
import EquivalenceNode from "./node/equivalence";
|
|
51
51
|
import EquivalencesNode from "./node/equivalences";
|
|
52
52
|
import MetaArgumentNode from "./node/metaArgument";
|
|
53
53
|
import MetavariableNode from "./node/metavariable";
|
|
@@ -68,13 +68,14 @@ import MetatheoremHeaderNode from "./node/header/metatheorem";
|
|
|
68
68
|
import PropertyAssertionNode from "./node/assertion/property";
|
|
69
69
|
import SubproofAssertionNode from "./node/assertion/subproof";
|
|
70
70
|
import FrameSubstitutionNode from "./node/substitution/frame";
|
|
71
|
-
import ProcedureReferenceNode from "./node/procedureReference";
|
|
72
71
|
import ParenthesisedLabelNode from "./node/parenthesisedLabel";
|
|
72
|
+
import ProcedureReferenceNode from "./node/procedureReference";
|
|
73
73
|
import ContainedAssertionNode from "./node/assertion/contained";
|
|
74
74
|
import SatisfiesAssertionNode from "./node/assertion/satisfies";
|
|
75
75
|
import ParenthesisedLabelsNode from "./node/parenthesisedLabels"
|
|
76
76
|
import PropertyDeclarationNode from "./node/declaration/property";
|
|
77
77
|
import VariableDeclarationNode from "./node/declaration/variable";
|
|
78
|
+
import ReferenceSubstitutionNode from "./node/substitution/reference";
|
|
78
79
|
import StatementSubstitutionNode from "./node/substitution/statement";
|
|
79
80
|
import SimpleTypeDeclarationNode from "./node/declaration/simpleType";
|
|
80
81
|
import CombinatorDeclarationNode from "./node/declaration/combinator";
|
|
@@ -159,6 +160,7 @@ import {
|
|
|
159
160
|
PARENTHESISED_LABELS_RULE_NAME,
|
|
160
161
|
PROPERTY_DECLARATION_RULE_NAME,
|
|
161
162
|
VARIABLE_DECLARATION_RULE_NAME,
|
|
163
|
+
REFERENCE_SUBSTITUTION_RULE_NAME,
|
|
162
164
|
STATEMENT_SUBSTITUTION_RULE_NAME,
|
|
163
165
|
COMBINATOR_DECLARATION_RULE_NAME,
|
|
164
166
|
SIMPLE_TYPE_DECLARATION_RULE_NAME,
|
|
@@ -244,6 +246,7 @@ const NonTerminalNodeMap = {
|
|
|
244
246
|
[VARIABLE_DECLARATION_RULE_NAME]: VariableDeclarationNode,
|
|
245
247
|
[PROPERTY_DECLARATION_RULE_NAME]: PropertyDeclarationNode,
|
|
246
248
|
[STATEMENT_SUBSTITUTION_RULE_NAME]: StatementSubstitutionNode,
|
|
249
|
+
[REFERENCE_SUBSTITUTION_RULE_NAME]: ReferenceSubstitutionNode,
|
|
247
250
|
[COMBINATOR_DECLARATION_RULE_NAME]: CombinatorDeclarationNode,
|
|
248
251
|
[SIMPLE_TYPE_DECLARATION_RULE_NAME]: SimpleTypeDeclarationNode,
|
|
249
252
|
[TYPE_PREFIX_DECLARATION_RULE_NAME]: TypePrefixDeclarationNode,
|
package/src/preamble.js
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
import Type from "./element/type";
|
|
4
4
|
import Term from "./element/term";
|
|
5
5
|
import Rule from "./element/rule";
|
|
6
|
-
import Step from "./element/step";
|
|
6
|
+
import Step from "./element/proofAssertion/step";
|
|
7
7
|
import Label from "./element/label";
|
|
8
|
-
import Axiom from "./element/axiom";
|
|
9
|
-
import Lemma from "./element/lemma";
|
|
8
|
+
import Axiom from "./element/topLevelAssertion/axiom";
|
|
9
|
+
import Lemma from "./element/topLevelAssertion/lemma";
|
|
10
10
|
import Frame from "./element/frame";
|
|
11
11
|
import Proof from "./element/proof";
|
|
12
12
|
import Error from "./element/error";
|
|
13
|
-
import Premise from "./element/premise";
|
|
14
|
-
import Theorem from "./element/theorem";
|
|
13
|
+
import Premise from "./element/proofAssertion/premise";
|
|
14
|
+
import Theorem from "./element/topLevelAssertion/theorem";
|
|
15
15
|
import Section from "./element/section";
|
|
16
16
|
import Equality from "./element/equality";
|
|
17
17
|
import MetaType from "./element/metaType";
|
|
@@ -22,19 +22,19 @@ import Parameter from "./element/parameter";
|
|
|
22
22
|
import Reference from "./element/reference";
|
|
23
23
|
import Statement from "./element/statement";
|
|
24
24
|
import Judgement from "./element/judgement";
|
|
25
|
-
import MetaLemma from "./element/metaLemma";
|
|
25
|
+
import MetaLemma from "./element/topLevelMetaAssertion/metaLemma";
|
|
26
26
|
import Deduction from "./element/deduction";
|
|
27
27
|
import Signature from "./element/signature";
|
|
28
28
|
import TypePrefix from "./element/typePrefix";
|
|
29
|
-
import Conjecture from "./element/conjecture";
|
|
29
|
+
import Conjecture from "./element/topLevelAssertion/conjecture";
|
|
30
30
|
import Conclusion from "./element/conclusion";
|
|
31
31
|
import Derivation from "./element/derivation";
|
|
32
32
|
import Hypothesis from "./element/hypothesis";
|
|
33
33
|
import Assumption from "./element/assumption";
|
|
34
34
|
import Combinator from "./element/combinator";
|
|
35
35
|
import Constructor from "./element/constructor";
|
|
36
|
-
import Supposition from "./element/supposition";
|
|
37
|
-
import Metatheorem from "./element/metatheorem";
|
|
36
|
+
import Supposition from "./element/proofAssertion/supposition";
|
|
37
|
+
import Metatheorem from "./element/topLevelMetaAssertion/metatheorem";
|
|
38
38
|
import Equivalence from "./element/equivalence";
|
|
39
39
|
import Equivalences from "./element/equivalences";
|
|
40
40
|
import Metavariable from "./element/metavariable";
|
|
@@ -1,40 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
equivalencePlaceholderRule = ruleFromBNF(equivalencePlaceholderBNF),
|
|
26
|
-
metavariablePlaceholderRule = ruleFromBNF(metavariablePlaceholderBNF),
|
|
27
|
-
termSubstitutionPlaceholderRule = ruleFromBNF(termSubstitutionPlaceholderBNF),
|
|
28
|
-
frameSubstitutionPlaceholderRule = ruleFromBNF(frameSubstitutionPlaceholderBNF),
|
|
29
|
-
statementSubstitutionPlaceholderRule = ruleFromBNF(statementSubstitutionPlaceholderBNF),
|
|
30
|
-
referenceSubstitutionPlaceholderRule = ruleFromBNF(referenceSubstitutionPlaceholderBNF);
|
|
3
|
+
import { ruleFromRuleName } from "../utilities/bnf";
|
|
4
|
+
import { TERM_RULE_NAME,
|
|
5
|
+
REFERENCE_RULE_NAME,
|
|
6
|
+
STATEMENT_RULE_NAME,
|
|
7
|
+
COMBINATOR_RULE_NAME,
|
|
8
|
+
CONSTRUCTOR_RULE_NAME,
|
|
9
|
+
EQUIVALENCE_RULE_NAME,
|
|
10
|
+
TERM_SUBSTITUTION_RULE_NAME,
|
|
11
|
+
FRAME_SUBSTITUTION_RULE_NAME,
|
|
12
|
+
STATEMENT_SUBSTITUTION_RULE_NAME,
|
|
13
|
+
REFERENCE_SUBSTITUTION_RULE_NAME } from "../ruleNames";
|
|
14
|
+
|
|
15
|
+
const termPlaceholderRule = ruleFromRuleName(TERM_RULE_NAME),
|
|
16
|
+
referencePlaceholderRule = ruleFromRuleName(REFERENCE_RULE_NAME),
|
|
17
|
+
statementPlaceholderRule = ruleFromRuleName(STATEMENT_RULE_NAME),
|
|
18
|
+
combinatorPlaceholderRule = ruleFromRuleName(COMBINATOR_RULE_NAME),
|
|
19
|
+
constructorPlaceholderRule = ruleFromRuleName(CONSTRUCTOR_RULE_NAME),
|
|
20
|
+
equivalencePlaceholderRule = ruleFromRuleName(EQUIVALENCE_RULE_NAME),
|
|
21
|
+
termSubstitutionPlaceholderRule = ruleFromRuleName(TERM_SUBSTITUTION_RULE_NAME),
|
|
22
|
+
frameSubstitutionPlaceholderRule = ruleFromRuleName(FRAME_SUBSTITUTION_RULE_NAME),
|
|
23
|
+
statementSubstitutionPlaceholderRule = ruleFromRuleName(STATEMENT_SUBSTITUTION_RULE_NAME),
|
|
24
|
+
referenceSubstitutionPlaceholderRule = ruleFromRuleName(REFERENCE_SUBSTITUTION_RULE_NAME);
|
|
31
25
|
|
|
32
26
|
export function instantiateTerm(string, context) { return instantiate(termPlaceholderRule, string, context); }
|
|
33
27
|
|
|
34
|
-
export function instantiateStep(string, context) { return instantiate(stepPlaceholderRule, string, context); }
|
|
35
|
-
|
|
36
|
-
export function instantiateVariable(string, context) { return instantiate(variablePlaceholderRule, string, context); }
|
|
37
|
-
|
|
38
28
|
export function instantiateReference(string, context) { return instantiate(referencePlaceholderRule, string, context); }
|
|
39
29
|
|
|
40
30
|
export function instantiateStatement(string, context) { return instantiate(statementPlaceholderRule, string, context); }
|
|
@@ -45,8 +35,6 @@ export function instantiateConstructor(string, context) { return instantiate(con
|
|
|
45
35
|
|
|
46
36
|
export function instantiateEquivalence(string, context) { return instantiate(equivalencePlaceholderRule, string, context); }
|
|
47
37
|
|
|
48
|
-
export function instantiateMetavariable(string, context) { return instantiate(metavariablePlaceholderRule, string, context); }
|
|
49
|
-
|
|
50
38
|
export function instantiateTermSubstitution(string, context) { return instantiate(termSubstitutionPlaceholderRule, string, context); }
|
|
51
39
|
|
|
52
40
|
export function instantiateFrameSubstitution(string, context) { return instantiate(frameSubstitutionPlaceholderRule, string, context); }
|
|
@@ -62,8 +50,11 @@ function instantiate(placeholderRule, string, context) {
|
|
|
62
50
|
parser = context.getParser(),
|
|
63
51
|
content = `${string}
|
|
64
52
|
`,
|
|
65
|
-
tokens = lexer.tokenise(content)
|
|
66
|
-
|
|
53
|
+
tokens = lexer.tokenise(content);
|
|
54
|
+
|
|
55
|
+
context.setTokens(tokens);
|
|
56
|
+
|
|
57
|
+
const startRule = placeholderRule; ///
|
|
67
58
|
|
|
68
59
|
node = parser.parse(tokens, startRule);
|
|
69
60
|
|