occam-verify-cli 1.0.192 → 1.0.199

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.
Files changed (165) hide show
  1. package/lib/context/file.js +3 -3
  2. package/lib/dom/assertion/contained.js +12 -24
  3. package/lib/dom/assertion/defined.js +9 -21
  4. package/lib/dom/assertion/property.js +7 -7
  5. package/lib/dom/assertion/satisfies.js +6 -8
  6. package/lib/dom/declaration/complexType.js +3 -3
  7. package/lib/dom/declaration/constructor.js +6 -6
  8. package/lib/dom/declaration/variable.js +6 -6
  9. package/lib/dom/declaration.js +13 -13
  10. package/lib/dom/frame.js +7 -7
  11. package/lib/dom/judgement.js +7 -7
  12. package/lib/dom/propertyRelation.js +7 -7
  13. package/lib/dom/term.js +1 -3
  14. package/lib/dom/topLevelMetaAssertion.js +77 -131
  15. package/lib/dom/type.js +2 -2
  16. package/lib/equivalence.js +4 -6
  17. package/lib/mixins/term/verify.js +4 -8
  18. package/lib/node/argument.js +116 -0
  19. package/lib/node/assertion/contained.js +31 -23
  20. package/lib/node/assertion/defined.js +30 -17
  21. package/lib/node/assertion/property.js +14 -19
  22. package/lib/node/assertion/satisfies.js +20 -13
  23. package/lib/node/assertion/subproof.js +11 -11
  24. package/lib/node/assertion/type.js +12 -17
  25. package/lib/node/combinator.js +9 -4
  26. package/lib/node/conclusion.js +11 -11
  27. package/lib/node/constructor.js +9 -4
  28. package/lib/node/declaration/combinator.js +11 -11
  29. package/lib/node/declaration/complexType.js +38 -34
  30. package/lib/node/declaration/constructor.js +24 -29
  31. package/lib/node/declaration/metavariable.js +12 -17
  32. package/lib/node/declaration/property.js +19 -24
  33. package/lib/node/declaration/type.js +41 -28
  34. package/lib/node/declaration/variable.js +12 -17
  35. package/lib/node/declaration.js +12 -17
  36. package/lib/node/deduction.js +11 -11
  37. package/lib/node/derivation.js +39 -11
  38. package/lib/node/equality.js +21 -18
  39. package/lib/node/error.js +9 -4
  40. package/lib/node/frame.js +13 -30
  41. package/lib/node/judgement.js +13 -18
  42. package/lib/node/label.js +11 -11
  43. package/lib/node/labels.js +11 -11
  44. package/lib/node/metaArgument.js +116 -0
  45. package/lib/node/metaType.js +9 -8
  46. package/lib/node/metavariable.js +12 -17
  47. package/lib/node/nonTerminal.js +218 -0
  48. package/lib/node/parameter.js +9 -4
  49. package/lib/node/parenthesisedLabel.js +116 -0
  50. package/lib/node/parenthesisedLabels.js +11 -11
  51. package/lib/node/premise.js +12 -17
  52. package/lib/node/procedureCall.js +12 -17
  53. package/lib/node/proof.js +11 -11
  54. package/lib/node/property.js +9 -4
  55. package/lib/node/propertyRelation.js +12 -17
  56. package/lib/node/reference.js +11 -11
  57. package/lib/node/rule.js +44 -7
  58. package/lib/node/statement.js +92 -53
  59. package/lib/node/step.js +12 -17
  60. package/lib/node/subDerivation.js +46 -11
  61. package/lib/node/subproof.js +19 -17
  62. package/lib/node/substitution/frame.js +123 -0
  63. package/lib/node/substitution/reference.js +123 -0
  64. package/lib/node/substitution/statement.js +123 -0
  65. package/lib/node/substitution/term.js +123 -0
  66. package/lib/node/supposition.js +12 -17
  67. package/lib/node/term.js +22 -33
  68. package/lib/node/topLevelAssertion.js +14 -29
  69. package/lib/node/topLevelMetaAssertion.js +26 -41
  70. package/lib/node/type.js +9 -4
  71. package/lib/node/types.js +116 -0
  72. package/lib/node/variable.js +9 -4
  73. package/lib/nonTerminalNodeMap.js +11 -3
  74. package/lib/ruleNames.js +33 -1
  75. package/lib/substitution/frame.js +5 -7
  76. package/lib/substitution/reference.js +5 -7
  77. package/lib/substitution/term.js +5 -7
  78. package/lib/unifier/metaLevel.js +4 -4
  79. package/lib/utilities/brackets.js +5 -5
  80. package/lib/utilities/json.js +18 -1
  81. package/lib/utilities/node.js +1 -313
  82. package/lib/utilities/subproof.js +13 -4
  83. package/package.json +1 -1
  84. package/src/context/file.js +2 -2
  85. package/src/dom/assertion/contained.js +12 -34
  86. package/src/dom/assertion/defined.js +9 -30
  87. package/src/dom/assertion/property.js +6 -8
  88. package/src/dom/assertion/satisfies.js +5 -10
  89. package/src/dom/declaration/complexType.js +2 -2
  90. package/src/dom/declaration/constructor.js +6 -7
  91. package/src/dom/declaration/variable.js +6 -7
  92. package/src/dom/declaration.js +11 -15
  93. package/src/dom/frame.js +4 -6
  94. package/src/dom/judgement.js +6 -8
  95. package/src/dom/propertyRelation.js +6 -8
  96. package/src/dom/term.js +0 -3
  97. package/src/dom/topLevelMetaAssertion.js +83 -39
  98. package/src/dom/type.js +2 -2
  99. package/src/equivalence.js +3 -6
  100. package/src/mixins/term/verify.js +5 -11
  101. package/src/node/argument.js +16 -0
  102. package/src/node/assertion/contained.js +30 -22
  103. package/src/node/assertion/defined.js +28 -15
  104. package/src/node/assertion/property.js +7 -17
  105. package/src/node/assertion/satisfies.js +11 -9
  106. package/src/node/assertion/subproof.js +4 -9
  107. package/src/node/assertion/type.js +6 -16
  108. package/src/node/combinator.js +1 -1
  109. package/src/node/conclusion.js +4 -9
  110. package/src/node/constructor.js +1 -1
  111. package/src/node/declaration/combinator.js +4 -9
  112. package/src/node/declaration/complexType.js +31 -35
  113. package/src/node/declaration/constructor.js +16 -26
  114. package/src/node/declaration/metavariable.js +6 -16
  115. package/src/node/declaration/property.js +13 -23
  116. package/src/node/declaration/type.js +35 -29
  117. package/src/node/declaration/variable.js +6 -16
  118. package/src/node/declaration.js +6 -16
  119. package/src/node/deduction.js +4 -9
  120. package/src/node/derivation.js +7 -10
  121. package/src/node/equality.js +19 -18
  122. package/src/node/error.js +1 -1
  123. package/src/node/frame.js +8 -35
  124. package/src/node/judgement.js +7 -17
  125. package/src/node/label.js +4 -9
  126. package/src/node/labels.js +4 -9
  127. package/src/node/metaArgument.js +16 -0
  128. package/src/node/metaType.js +1 -5
  129. package/src/node/metavariable.js +6 -16
  130. package/src/node/nonTerminal.js +130 -0
  131. package/src/node/parameter.js +1 -1
  132. package/src/node/parenthesisedLabel.js +16 -0
  133. package/src/node/parenthesisedLabels.js +5 -10
  134. package/src/node/premise.js +6 -16
  135. package/src/node/procedureCall.js +6 -16
  136. package/src/node/proof.js +4 -9
  137. package/src/node/property.js +1 -1
  138. package/src/node/propertyRelation.js +7 -16
  139. package/src/node/reference.js +4 -9
  140. package/src/node/rule.js +40 -3
  141. package/src/node/statement.js +109 -66
  142. package/src/node/step.js +6 -16
  143. package/src/node/subDerivation.js +14 -10
  144. package/src/node/subproof.js +13 -16
  145. package/src/node/substitution/frame.js +23 -0
  146. package/src/node/substitution/reference.js +23 -0
  147. package/src/node/substitution/statement.js +23 -0
  148. package/src/node/substitution/term.js +23 -0
  149. package/src/node/supposition.js +6 -16
  150. package/src/node/term.js +15 -39
  151. package/src/node/topLevelAssertion.js +13 -33
  152. package/src/node/topLevelMetaAssertion.js +20 -39
  153. package/src/node/type.js +1 -1
  154. package/src/node/types.js +16 -0
  155. package/src/node/variable.js +1 -1
  156. package/src/nonTerminalNodeMap.js +60 -36
  157. package/src/ruleNames.js +8 -0
  158. package/src/substitution/frame.js +7 -10
  159. package/src/substitution/reference.js +7 -10
  160. package/src/substitution/term.js +7 -9
  161. package/src/unifier/metaLevel.js +2 -3
  162. package/src/utilities/brackets.js +8 -8
  163. package/src/utilities/json.js +19 -0
  164. package/src/utilities/node.js +0 -168
  165. package/src/utilities/subproof.js +22 -6
@@ -1,25 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeLabelsNode } from "../utilities/node";
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
- labelNodes = labelsNode.getLabelNodes();
10
+ labelNodes = labelsNode.getLabelNodes();
11
11
 
12
12
  return labelNodes;
13
13
  }
14
14
 
15
15
  getLabelsNode() {
16
- const labelsNode = this.findChildNode((childNode) => {
17
- const childNodeLabelsNode = isNodeLabelsNode(childNode);
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
  }
@@ -1,30 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeStatementNode, isNodeProcedureCallNode } from "../utilities/node";
5
+ import { STATEMENT_RULE_NAME, PROCEDURE_CALL_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class PremiseNode extends NonTerminalNode {
8
8
  getStatementNode() {
9
- const statementNode = this.findChildNode((childNode) => {
10
- const childNodeStatementNode = isNodeStatementNode(childNode);
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
  getProcedureCallNode() {
21
- const procedureCallNode = this.findChildNode((childNode) => {
22
- const childNodeProcedureCallNode = isNodeProcedureCallNode(childNode);
23
-
24
- if (childNodeProcedureCallNode) {
25
- return true;
26
- }
27
- }) || null;
16
+ const ruleName = PROCEDURE_CALL_RULE_NAME,
17
+ procedureCallNode = this.getNodeByRuleName(ruleName);
28
18
 
29
19
  return procedureCallNode;
30
20
  }
@@ -1,30 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeParameterNode, isNodeReferenceNode } from "../utilities/node";
5
+ import { REFERENCE_RULE_NAME, PARAMETER_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class ProcedureCallNode extends NonTerminalNode {
8
8
  getReferenceNode() {
9
- const referenceNode = this.findChildNode((childNode) => {
10
- const childNodeReferenceNode = isNodeReferenceNode(childNode);
11
-
12
- if (childNodeReferenceNode) {
13
- return true;
14
- }
15
- }) || null;
9
+ const ruleName = REFERENCE_RULE_NAME,
10
+ referenceNode = this.getNodeByRuleName(ruleName);
16
11
 
17
12
  return referenceNode;
18
13
  }
19
14
 
20
15
  getParameterNodes() {
21
- const parameterNodes = this.filterChildNode((childNode) => {
22
- const childNodeParameterNode = isNodeParameterNode(childNode);
23
-
24
- if (childNodeParameterNode) {
25
- return true;
26
- }
27
- });
16
+ const ruleName = PARAMETER_RULE_NAME,
17
+ parameterNodes = this.getNodesByRuleName(ruleName);
28
18
 
29
19
  return parameterNodes;
30
20
  }
package/src/node/proof.js CHANGED
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeDerivationNode } from "../utilities/node";
5
+ import { DERIVATION_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class ProofNode extends NonTerminalNode {
8
8
  getDerivationNode() {
9
- const derivationNode = this.findChildNode((childNode) => {
10
- const childNodeDerivationNode = isNodeDerivationNode(childNode);
11
-
12
- if (childNodeDerivationNode) {
13
- return true;
14
- }
15
- });
9
+ const ruleName = DERIVATION_RULE_NAME,
10
+ derivationNode = this.getNodeByRuleName(ruleName);
16
11
 
17
12
  return derivationNode;
18
13
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
5
  import { SINGLE_SPACE } from "../constants";
6
6
 
@@ -1,29 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
4
- import { isNodeTermNode, isNodePropertyNode } from "../utilities/node";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
+
5
+ import { TERM_RULE_NAME, PROPERTY_RULE_NAME } from "../ruleNames";
5
6
 
6
7
  export default class PropertyRelationNode extends NonTerminalNode {
7
8
  getTermNode() {
8
- const termNode = this.findChildNode((childNode) => {
9
- const childNodeTermNode = isNodeTermNode(childNode);
10
-
11
- if (childNodeTermNode) {
12
- return true;
13
- }
14
- }) || null;
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNode = this.getNodeByRuleName(ruleName);
15
11
 
16
12
  return termNode;
17
13
  }
18
14
 
19
15
  getPropertyNode() {
20
- const propertyNode = this.findChildNode((childNode) => {
21
- const childNodePropertyNode = isNodePropertyNode(childNode);
22
-
23
- if (childNodePropertyNode) {
24
- return true;
25
- }
26
- }) || null;
16
+ const ruleName = PROPERTY_RULE_NAME,
17
+ propertyNode = this.getNodeByRuleName(ruleName);
27
18
 
28
19
  return propertyNode;
29
20
  }
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeMetavariableNode } from "../utilities/node";
5
+ import { METAVARIABLE_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class ReferenceNode extends NonTerminalNode {
8
8
  getMetavariableNode() {
9
- const metavariableNode = this.findChildNode((childNode) => {
10
- const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
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/rule.js CHANGED
@@ -1,7 +1,44 @@
1
1
  "use strict";
2
2
 
3
- import TopLevelMetaAssertionNode from "../node/topLevelMetaAssertion";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- export default class RuleNode extends TopLevelMetaAssertionNode {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(RuleNode, ruleName, childNodes, opacity, precedence); }
5
+ import { PROOF_RULE_NAME, PREMISE_RULE_NAME, CONCLUSION_RULE_NAME, PARENTHESISED_LABELS_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class RuleNode extends NonTerminalNode {
8
+ getLabelNodes() {
9
+ const parenthesisedLabelsNode = this.getParenthesisedLabelsNode(),
10
+ labelNodes = parenthesisedLabelsNode.getLabelNodes();
11
+
12
+ return labelNodes;
13
+ }
14
+
15
+ getProofNode() {
16
+ const ruleName = PROOF_RULE_NAME,
17
+ proofNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return proofNode;
20
+ }
21
+
22
+ getPremiseNodes() {
23
+ const ruleName = PREMISE_RULE_NAME,
24
+ premiseNodes = this.getNodesByRuleName(ruleName);
25
+
26
+ return premiseNodes;
27
+ }
28
+
29
+ getConclusionNode() {
30
+ const ruleName = CONCLUSION_RULE_NAME,
31
+ conclusionNode = this.getNodeByRuleName(ruleName);
32
+
33
+ return conclusionNode;
34
+ }
35
+
36
+ getParenthesisedLabelsNode() {
37
+ const ruleName = PARENTHESISED_LABELS_RULE_NAME,
38
+ parenthesisedLabelsNode = this.getNodeByRuleName(ruleName);
39
+
40
+ return parenthesisedLabelsNode;
41
+ }
42
+
43
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(RuleNode, ruleName, childNodes, opacity, precedence); }
7
44
  }
@@ -1,112 +1,155 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
4
-
5
- import { isNodeTermNode,
6
- isNodeFrameNode,
7
- isNodeEqualityNode,
8
- isNodeJudgementNode,
9
- isNodeMetavariableNode,
10
- isNodeTypeAssertionNode,
11
- isNodeSubproofAssertionNode,
12
- isNodePropertyAssertionNode } from "../utilities/node";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
+
5
+ import { TERM_RULE_NAME,
6
+ FRAME_RULE_NAME,
7
+ EQUALITY_RULE_NAME,
8
+ JUDGEMENT_RULE_NAME,
9
+ METAVARIABLE_RULE_NAME,
10
+ META_ARGUMENT_RULE_NAME,
11
+ TYPE_ASSERTION_RULE_NAME,
12
+ DEFINED_ASSERTION_RULE_NAME,
13
+ TERM_SUBSTITUTION_RULE_NAME,
14
+ PROPERTY_ASSERTION_RULE_NAME,
15
+ SUBPROOF_ASSERTION_RULE_NAME,
16
+ FRAME_SUBSTITUTION_RULE_NAME,
17
+ SATISFIES_ASSERTION_RULE_NAME,
18
+ CONTAINED_ASSERTION_RULE_NAME,
19
+ REFERENCE_SUBSTITUTION_RULE_NAME,
20
+ STATEMENT_SUBSTITUTION_RULE_NAME } from "../ruleNames";
13
21
 
14
22
  export default class StatementNode extends NonTerminalNode {
15
23
  getTermNodes() {
16
- const termNodes = this.filterDescendantNode((descendantNode) => {
17
- const descendantNodeTermNode = isNodeTermNode(descendantNode);
18
-
19
- if (descendantNodeTermNode) {
20
- return true;
21
- }
22
- });
24
+ const ruleName = TERM_RULE_NAME,
25
+ termNodes = this.getDescendantNodesByRuleName(ruleName);
23
26
 
24
27
  return termNodes;
25
28
  }
26
29
 
27
30
  getFrameNodes() {
28
- const frameNodes = this.filterDescendantNode((descendantNode) => {
29
- const descendantNodeFrameNode = isNodeFrameNode(descendantNode);
30
-
31
- if (descendantNodeFrameNode) {
32
- return true;
33
- }
34
- });
31
+ const ruleName = FRAME_RULE_NAME,
32
+ frameNodes = this.getDescendantNodesByRuleName(ruleName);
35
33
 
36
34
  return frameNodes;
37
35
  }
38
36
 
39
37
  getEqualityNode() {
40
- const equalityNode = this.findChildNode((childNode) => {
41
- const childNodeEqualityNode = isNodeEqualityNode(childNode);
42
-
43
- if (childNodeEqualityNode) {
44
- return true;
45
- }
46
- }) || null;
38
+ const ruleName = EQUALITY_RULE_NAME,
39
+ equalityNode = this.getNodeByRuleName(ruleName);
47
40
 
48
41
  return equalityNode;
49
42
  }
50
43
 
51
44
  getJudgementNode() {
52
- const judgementNode = this.findChildNode((childNode) => {
53
- const childNodeJudgementNode = isNodeJudgementNode(childNode);
54
-
55
- if (childNodeJudgementNode) {
56
- return true;
57
- }
58
- }) || null;
45
+ const ruleName = JUDGEMENT_RULE_NAME,
46
+ judgementNode = this.getNodeByRuleName(ruleName);
59
47
 
60
48
  return judgementNode;
61
49
  }
62
50
 
63
51
  getMetavariableNode() {
64
- const metavariableNode = this.findChildNode((childNode) => {
65
- const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
66
-
67
- if (childNodeMetavariableNode) {
68
- return true;
69
- }
70
- }) || null;
52
+ const ruleName = METAVARIABLE_RULE_NAME,
53
+ metavariableNode = this.getNodeByRuleName(ruleName);
71
54
 
72
55
  return metavariableNode;
73
56
  }
74
57
 
75
58
  getTypeAssertionNode() {
76
- const typeAssertionNode = this.findChildNode((childNode) => {
77
- const childNodeTypeAssertionNode = isNodeTypeAssertionNode(childNode);
78
-
79
- if (childNodeTypeAssertionNode) {
80
- return true;
81
- }
82
- }) || null;
59
+ const ruleName = TYPE_ASSERTION_RULE_NAME,
60
+ typeAssertionNode = this.getNodeByRuleName(ruleName);
83
61
 
84
62
  return typeAssertionNode;
85
63
  }
86
64
 
87
- getSubproofAssertionNode() {
88
- const subproofAssertionNode = this.findChildNode((childNode) => {
89
- const childNodeSubproofAssertionNode = isNodeSubproofAssertionNode(childNode);
65
+ getDefinedAssertionNode() {
66
+ const ruleName = DEFINED_ASSERTION_RULE_NAME,
67
+ definedAssertionNode = this.getNodeByRuleName(ruleName);
90
68
 
91
- if (childNodeSubproofAssertionNode) {
92
- return true;
93
- }
94
- }) || null;
69
+ return definedAssertionNode;
70
+ }
71
+
72
+ getTermSubstitutionNode() {
73
+ const ruleName = TERM_SUBSTITUTION_RULE_NAME,
74
+ termSubstitutionNode = this.getNodeByRuleName(ruleName);
75
+
76
+ return termSubstitutionNode;
77
+ }
78
+
79
+ getFrameSubstitutionNode() {
80
+ const ruleName = FRAME_SUBSTITUTION_RULE_NAME,
81
+ frameSubstitutionNode = this.getNodeByRuleName(ruleName);
82
+
83
+ return frameSubstitutionNode;
84
+ }
85
+
86
+ getSubproofAssertionNode() {
87
+ const ruleName = SUBPROOF_ASSERTION_RULE_NAME,
88
+ subproofAssertionNode = this.getNodeByRuleName(ruleName);
95
89
 
96
90
  return subproofAssertionNode;
97
91
  }
98
92
 
99
93
  getPropertyAssertionNode() {
100
- const propertyAssertionNode = this.findChildNode((childNode) => {
101
- const childNodePropertyAssertionNode = isNodePropertyAssertionNode(childNode);
102
-
103
- if (childNodePropertyAssertionNode) {
104
- return true;
105
- }
106
- }) || null;
94
+ const ruleName = PROPERTY_ASSERTION_RULE_NAME,
95
+ propertyAssertionNode = this.getNodeByRuleName(ruleName);
107
96
 
108
97
  return propertyAssertionNode;
109
98
  }
110
99
 
100
+ getSingularStatementNode() {
101
+ let singularStatementNode = null;
102
+
103
+ const singularMetaArgumentNode = this.getSingularMetaArgumentNode();
104
+
105
+ if (singularMetaArgumentNode !== null) {
106
+ singularStatementNode = singularMetaArgumentNode.getSingularStatementNode();
107
+ }
108
+
109
+ return singularStatementNode;
110
+ }
111
+
112
+ getContainedAssertionNode() {
113
+ const ruleName = CONTAINED_ASSERTION_RULE_NAME,
114
+ containedAssertionNode = this.getNodeByRuleName(ruleName);
115
+
116
+ return containedAssertionNode;
117
+ }
118
+
119
+ getSatisfiedAssertionNode() {
120
+ const ruleName = SATISFIES_ASSERTION_RULE_NAME,
121
+ satisfiedAssertionNode = this.getNodeByRuleName(ruleName);
122
+
123
+ return satisfiedAssertionNode;
124
+ }
125
+
126
+ getSingularMetavariableNode() {
127
+ const ruleName = METAVARIABLE_RULE_NAME,
128
+ singularMetavariableNode = this.getSingularTNodeByRuleName(ruleName);
129
+
130
+ return singularMetavariableNode;
131
+ }
132
+
133
+ getSingularMetaArgumentNode() {
134
+ const ruleName = META_ARGUMENT_RULE_NAME,
135
+ singularMetaArgumentNode = this.getNodeByRuleName(ruleName);
136
+
137
+ return singularMetaArgumentNode;
138
+ }
139
+
140
+ getReferenceSubstitutionNode() {
141
+ const ruleName = REFERENCE_SUBSTITUTION_RULE_NAME,
142
+ referenceSubstitutionNode = this.getNodeByRuleName(ruleName);
143
+
144
+ return referenceSubstitutionNode;
145
+ }
146
+
147
+ getStatementSubstitutionNode() {
148
+ const ruleName = STATEMENT_SUBSTITUTION_RULE_NAME,
149
+ statementSubstitutionNode = this.getNodeByRuleName(ruleName);
150
+
151
+ return statementSubstitutionNode;
152
+ }
153
+
111
154
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementNode, ruleName, childNodes, opacity, precedence); }
112
155
  }
package/src/node/step.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeStatementNode, isNodeReferenceNode } from "../utilities/node";
5
+ import { REFERENCE_RULE_NAME, STATEMENT_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class StepNode extends NonTerminalNode {
8
8
  isStepNode() {
@@ -18,25 +18,15 @@ export default class StepNode extends NonTerminalNode {
18
18
  }
19
19
 
20
20
  getStatementNode() {
21
- const statementNode = this.findChildNode((childNode) => {
22
- const childNodeStatementNode = isNodeStatementNode(childNode);
23
-
24
- if (childNodeStatementNode) {
25
- return true;
26
- }
27
- }) || null;
21
+ const ruleName = STATEMENT_RULE_NAME,
22
+ statementNode = this.getNodeByRuleName(ruleName);
28
23
 
29
24
  return statementNode;
30
25
  }
31
26
 
32
27
  getReferenceNode() {
33
- const referenceNode = this.findChildNode((childNode) => {
34
- const childNodeReferenceNode = isNodeReferenceNode(childNode);
35
-
36
- if (childNodeReferenceNode) {
37
- return true;
38
- }
39
- }) || null;
28
+ const ruleName = REFERENCE_RULE_NAME,
29
+ referenceNode = this.getNodeByRuleName(ruleName);
40
30
 
41
31
  return referenceNode;
42
32
  }
@@ -1,19 +1,23 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeStepNode, isNodeSubproofNode } from "../utilities/node";
5
+ import { STEP_RULE_NAME, SUBPROOF_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class SubDerivationNode extends NonTerminalNode {
8
- getStepOrSubproofNodes() {
9
- const stepOrSubproofNodes = this.filterChildNode((childNode) => {
10
- const childNodeStepNode = isNodeStepNode(childNode),
11
- childNodeSubproofNode = isNodeSubproofNode(childNode);
8
+ getLastStepNode() {
9
+ const ruleName = STEP_RULE_NAME,
10
+ lastStepNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastStepNode;
13
+ }
12
14
 
13
- if (childNodeStepNode || childNodeSubproofNode) {
14
- return true;
15
- }
16
- });
15
+ getStepOrSubproofNodes() {
16
+ const ruleNames = [
17
+ STEP_RULE_NAME,
18
+ SUBPROOF_RULE_NAME,
19
+ ],
20
+ stepOrSubproofNodes = this.getNodesByRuleName(...ruleNames);
17
21
 
18
22
  return stepOrSubproofNodes;
19
23
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { isNodeSuppositionNode, isNodeSubDerivationNode } from "../utilities/node";
5
+ import { SUPPOSITION_RULE_NAME, SUB_DERIVATION_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class SubproofNode extends NonTerminalNode {
8
8
  isStepNode() {
@@ -17,26 +17,23 @@ export default class SubproofNode extends NonTerminalNode {
17
17
  return subproofNode;
18
18
  }
19
19
 
20
- getSubDerivationNode() {
21
- const subDerivationNode = this.findChildNode((childNode) => {
22
- const childNodeSubDerivationNode = isNodeSubDerivationNode(childNode);
20
+ getLastStepNode() {
21
+ const subDerivationNode = this.getSubDerivationNode(),
22
+ lastStepNode = subDerivationNode.getLastStepNode();
23
23
 
24
- if (childNodeSubDerivationNode) {
25
- return true;
26
- }
27
- }) || null;
24
+ return lastStepNode;
25
+ }
26
+
27
+ getSubDerivationNode() {
28
+ const ruleName = SUB_DERIVATION_RULE_NAME,
29
+ subDerivationNode = this.getNodeByRuleName(ruleName);
28
30
 
29
31
  return subDerivationNode;
30
32
  }
31
33
 
32
34
  getSuppositionNodes() {
33
- const suppositionNodes = this.filterChildNode((childNode) => {
34
- const childNodeSuppositionNode = isNodeSuppositionNode(childNode);
35
-
36
- if (childNodeSuppositionNode) {
37
- return true;
38
- }
39
- });
35
+ const ruleName = SUPPOSITION_RULE_NAME,
36
+ suppositionNodes = this.getNodesByRuleName(ruleName);
40
37
 
41
38
  return suppositionNodes;
42
39
  }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ import { FRAME_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class FrameSubstitutionNode extends NonTerminalNode {
8
+ getLastFrameNode() {
9
+ const ruleName = FRAME_RULE_NAME,
10
+ lastFrameNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastFrameNode;
13
+ }
14
+
15
+ getFirstFrameNode() {
16
+ const ruleName = FRAME_RULE_NAME,
17
+ firstFrameNode = this.getFirstNodeByRuleName(ruleName);
18
+
19
+ return firstFrameNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ import { REFERENCE_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class ReferenceSubstitutionNode extends NonTerminalNode {
8
+ getLastReferenceNode() {
9
+ const ruleName = REFERENCE_RULE_NAME,
10
+ lastReferenceNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastReferenceNode;
13
+ }
14
+
15
+ getFirstReferenceNode() {
16
+ const ruleName = REFERENCE_RULE_NAME,
17
+ firstReferenceNode = this.getFirstNodeByRuleName(ruleName);
18
+
19
+ return firstReferenceNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ReferenceSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ import { STATEMENT_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class StatementSubstitutionNode extends NonTerminalNode {
8
+ getLastStatementNode() {
9
+ const ruleName = STATEMENT_RULE_NAME,
10
+ lastStatementNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastStatementNode;
13
+ }
14
+
15
+ getFirstStatementNode() {
16
+ const ruleName = STATEMENT_RULE_NAME,
17
+ firstStatementNode = this.getFirstNodeByRuleName(ruleName);
18
+
19
+ return firstStatementNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
+ }