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.
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 +15 -20
  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 +200 -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 +8 -18
  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 +112 -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
@@ -2,10 +2,6 @@
2
2
 
3
3
  import dom from "../../dom";
4
4
 
5
- import { nodeQuery } from "../../utilities/query";
6
-
7
- const variableNodeQuery = nodeQuery("/term/variable!");
8
-
9
5
  function unifyWithBracketedConstructor(term, context, verifyAhead) {
10
6
  let unifiedWithBracketedConstructor;
11
7
 
@@ -39,14 +35,12 @@ function verifyTermAsVariable(term, localContext, verifyAhead) {
39
35
  const { Variable } = dom,
40
36
  context = localContext, ///
41
37
  termNode = term.getNode(),
42
- variableNode = variableNodeQuery(termNode);
43
-
44
- let variable;
45
-
46
- variable = Variable.fromVariableNode(variableNode, context);
38
+ singularVariableNode = termNode.getSingularVariableNode();
47
39
 
48
- if (variable !== null) {
49
- const termString = term.getString();
40
+ if (singularVariableNode !== null) {
41
+ const variableNode = singularVariableNode,
42
+ variable = Variable.fromVariableNode(variableNode, context),
43
+ termString = term.getString();
50
44
 
51
45
  localContext.trace(`Verifying the '${termString}' term as a variable...`);
52
46
 
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../node/nonTerminal";
4
+
5
+ import { TERM_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class ArgumentNode extends NonTerminalNode {
8
+ getSingularTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ singularTermNode = this.getSingularTNodeByRuleName(ruleName);
11
+
12
+ return singularTermNode;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ArgumentNode, ruleName, childNodes, opacity, precedence); }
16
+ }
@@ -1,42 +1,50 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeTermNode, isNodeFrameNode, isNodeStatementNode } from "../../utilities/node";
5
+ import { MISSING } from "../../constants";
6
+ import { TERM_RULE_NAME, FRAME_RULE_NAME, STATEMENT_RULE_NAME } from "../../ruleNames";
6
7
 
7
8
  export default class ContainedAssertionNode extends NonTerminalNode {
8
- getTermNode() {
9
- const termNode = this.findChildNode((childNode) => {
10
- const childNodeTermNode = isNodeTermNode(childNode);
9
+ isNegated() {
10
+ let negated = false;
11
+
12
+ this.someChildNode((childNode) => {
13
+ const childNodeTerminalNode = childNode.isTerminalNode();
14
+
15
+ if (childNodeTerminalNode) {
16
+ const terminalNode = childNode, ///
17
+ content = terminalNode.getContent(),
18
+ contentMessing = (content === MISSING);
11
19
 
12
- if (childNodeTermNode) {
13
- return true;
20
+ if (contentMessing) {
21
+ negated = true;
22
+
23
+ return true;
24
+ }
14
25
  }
15
- }) || null;
26
+ });
27
+
28
+ return negated;
29
+ }
30
+
31
+ getTermNode() {
32
+ const ruleName = TERM_RULE_NAME,
33
+ termNode = this.getNodeByRuleName(ruleName);
16
34
 
17
35
  return termNode;
18
36
  }
19
37
 
20
38
  getFrameNode() {
21
- const frameNode = this.findChildNode((childNode) => {
22
- const childNodeFrameNode = isNodeFrameNode(childNode);
23
-
24
- if (childNodeFrameNode) {
25
- return true;
26
- }
27
- }) || null;
39
+ const ruleName = FRAME_RULE_NAME,
40
+ frameNode = this.getNodeByRuleName(ruleName);
28
41
 
29
42
  return frameNode;
30
43
  }
31
44
 
32
45
  getStatementNode() {
33
- const statementNode = this.findChildNode((childNode) => {
34
- const childNodeStatementNode = isNodeStatementNode(childNode);
35
-
36
- if (childNodeStatementNode) {
37
- return true;
38
- }
39
- }) || null;
46
+ const ruleName = STATEMENT_RULE_NAME,
47
+ statementNode = this.getNodeByRuleName(ruleName);
40
48
 
41
49
  return statementNode;
42
50
  }
@@ -1,30 +1,43 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeTermNode, isNodeFrameNode } from "../../utilities/node";
5
+ import { UNDEFINED } from "../../constants";
6
+ import { FRAME_RULE_NAME, TERM_RULE_NAME } from "../../ruleNames";
6
7
 
7
8
  export default class DefinedAssertionNode extends NonTerminalNode {
8
- getTermNode() {
9
- const termNode = this.findChildNode((childNode) => {
10
- const childNodeTermNode = isNodeTermNode(childNode);
9
+ isNegated() {
10
+ let negated = false;
11
+
12
+ this.someChildNode((childNode) => {
13
+ const childNodeTerminalNode = childNode.isTerminalNode();
14
+
15
+ if (childNodeTerminalNode) {
16
+ const terminalNode = childNode, ///
17
+ content = terminalNode.getContent(),
18
+ contentUndefined = (content === UNDEFINED);
11
19
 
12
- if (childNodeTermNode) {
13
- return true;
20
+ if (contentUndefined) {
21
+ negated = true;
22
+
23
+ return true;
24
+ }
14
25
  }
15
- }) || null;
26
+ });
27
+
28
+ return negated;
29
+ }
30
+
31
+ getTermNode() {
32
+ const ruleName = TERM_RULE_NAME,
33
+ termNode = this.getNodeByRuleName(ruleName);
16
34
 
17
35
  return termNode;
18
36
  }
19
37
 
20
38
  getFrameNode() {
21
- const frameNode = this.findChildNode((childNode) => {
22
- const childNodeFrameNode = isNodeFrameNode(childNode);
23
-
24
- if (childNodeFrameNode) {
25
- return true;
26
- }
27
- }) || null;
39
+ const ruleName = FRAME_RULE_NAME,
40
+ frameNode = this.getNodeByRuleName(ruleName);
28
41
 
29
42
  return frameNode;
30
43
  }
@@ -1,30 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeTermNode, isNodePropertyRelationNode } from "../../utilities/node";
5
+ import { TERM_RULE_NAME, PROPERTY_RELATION_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class PropertyAssertionNode extends NonTerminalNode {
8
8
  getTermNode() {
9
- const termNode = this.findChildNode((childNode) => {
10
- const childNodeTermNode = isNodeTermNode(childNode);
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
- getPropertyRelationNode() {
21
- const propertyRelationNode = this.findChildNode((childNode) => {
22
- const childNodePropertyRelationNode = isNodePropertyRelationNode(childNode);
23
-
24
- if (childNodePropertyRelationNode) {
25
- return true;
26
- }
27
- }) || null;
15
+ getFrameNode() {
16
+ const ruleName = PROPERTY_RELATION_RULE_NAME,
17
+ propertyRelationNode = this.getNodeByRuleName(ruleName);
28
18
 
29
19
  return propertyRelationNode;
30
20
  }
@@ -1,18 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeMetavariableNode } from "../../utilities/node";
5
+ import { TERM_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class SatisfiesAssertionNode extends NonTerminalNode {
8
- getMetavariableNode() {
9
- const metavariableNode = this.findChildNode((childNode) => {
10
- const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
8
+ getTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNode = this.getNodeByRuleName(ruleName);
11
11
 
12
- if (childNodeMetavariableNode) {
13
- return true;
14
- }
15
- }) || null;
12
+ return termNode;
13
+ }
14
+
15
+ getFrameNode() {
16
+ const ruleName = METAVARIABLE_RULE_NAME,
17
+ metavariableNode = this.getNodeByRuleName(ruleName);
16
18
 
17
19
  return metavariableNode;
18
20
  }
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeStatementNode } from "../../utilities/node";
5
+ import { STATEMENT_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class SubproofAssertionNode extends NonTerminalNode {
8
8
  getStatementNodes() {
9
- const statementNodes = this.filterChildNode((childNode) => {
10
- const childNodeStatementNode = isNodeStatementNode(childNode);
11
-
12
- if (childNodeStatementNode) {
13
- return true;
14
- }
15
- });
9
+ const ruleName = STATEMENT_RULE_NAME,
10
+ statementNodes = this.getNodesByRuleName(ruleName);
16
11
 
17
12
  return statementNodes;
18
13
  }
@@ -1,30 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeTermNode, isNodeTypeNode } from "../../utilities/node";
5
+ import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class TypeAssertionNode extends NonTerminalNode {
8
8
  getTermNode() {
9
- const termNode = this.findChildNode((childNode) => {
10
- const childNodeTermNode = isNodeTermNode(childNode);
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 typeNode = this.findChildNode((childNode) => {
22
- const childNodeTypeNode = isNodeTypeNode(childNode);
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
  }
@@ -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
  export default class CombinatorNode extends NonTerminalNode {
6
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(CombinatorNode, ruleName, childNodes, opacity, precedence); }
@@ -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 { isNodeStatementNode } from "../utilities/node";
5
+ import { STATEMENT_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class ConclusionNode 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
  }
@@ -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
  export default class ConstructorNode extends NonTerminalNode {
6
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorNode, ruleName, childNodes, opacity, precedence); }
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeStatementNode } from "../../utilities/node";
5
+ import { STATEMENT_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class ContainedDeclarationNode 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
  }
@@ -1,29 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
5
  import { PROVISIONAL } from "../../constants";
6
- import { isNodeTypeNode, isNodePropertyDeclarationNode } from "../../utilities/node";
6
+ import { TYPE_RULE_NAME, TYPES_RULE_NAME, PROPERTY_DECLARATION_RULE_NAME } from "../../ruleNames";
7
7
 
8
8
  export default class ComplexTypeDeclarationNode extends NonTerminalNode {
9
- getTypeName() {
10
- let typeName = null;
11
-
12
- this.someChildNode((childNode) => {
13
- const childNodeTypeNode = isNodeTypeNode(childNode);
14
-
15
- if (childNodeTypeNode) {
16
- const typeNode = childNode; ///
17
-
18
- typeName = typeNode.getTypeName();
19
-
20
- return true;
21
- }
22
- });
23
-
24
- return typeName;
25
- }
26
-
27
9
  isProvisional() {
28
10
  let provisional = false;
29
11
 
@@ -46,30 +28,44 @@ export default class ComplexTypeDeclarationNode extends NonTerminalNode {
46
28
  return provisional;
47
29
  }
48
30
 
31
+ getTypeName() {
32
+ const typeNode = this.getTypeNode(),
33
+ typeName = typeNode.getTypeName();
34
+
35
+ return typeName;
36
+ }
37
+
38
+ getTypeNode() {
39
+ const ruleName = TYPE_RULE_NAME,
40
+ typeNode = this.getNodeByRuleName(ruleName);
41
+
42
+ return typeNode;
43
+ }
44
+
45
+ getTypesNode() {
46
+ const ruleName = TYPES_RULE_NAME,
47
+ typesNode = this.getNodeByRuleName(ruleName);
48
+
49
+ return typesNode;
50
+ }
51
+
49
52
  getSuperTypeNodes() {
50
- const typeNodes = this.filterChildNode((childNode) => {
51
- const childNodeTypeNode = isNodeTypeNode(childNode);
53
+ let superTypeNodes = [];
52
54
 
53
- if (childNodeTypeNode) {
54
- return true;
55
- }
56
- });
55
+ const typesNode = this.getTypesNode();
57
56
 
58
- typeNodes.pop();
57
+ if (typesNode !== null) {
58
+ const typeNodes = typesNode.getTypeNodes();
59
59
 
60
- const superTypeNodes = typeNodes; ///
60
+ superTypeNodes = typeNodes; ///
61
+ }
61
62
 
62
63
  return superTypeNodes;
63
64
  }
64
65
 
65
66
  getPropertyDeclarationNodes() {
66
- const propertyDeclarationNodes = this.filterChildNode((childNode) => {
67
- const childNodePropertyDeclarationNode = isNodePropertyDeclarationNode(childNode);
68
-
69
- if (childNodePropertyDeclarationNode) {
70
- return true;
71
- }
72
- });
67
+ const ruleName = PROPERTY_DECLARATION_RULE_NAME,
68
+ propertyDeclarationNodes = this.getNodesByRuleName(ruleName);
73
69
 
74
70
  return propertyDeclarationNodes;
75
71
  }
@@ -1,35 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
5
  import { PROVISIONALLY } from "../../constants";
6
- import { isNodeTermNode, isNodeTypeNode } from "../../utilities/node";
6
+ import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../../ruleNames";
7
7
 
8
8
  export default class ConstructorDeclarationNode extends NonTerminalNode {
9
- getTermNode() {
10
- const termNode = this.findChildNode((childNode) => {
11
- const childNodeTermNode = isNodeTermNode(childNode);
12
-
13
- if (childNodeTermNode) {
14
- return true;
15
- }
16
- }) || null;
17
-
18
- return termNode;
19
- }
20
-
21
- getTypeNode() {
22
- const typeNode = this.findChildNode((childNode) => {
23
- const childNodeTypeNode = isNodeTypeNode(childNode);
24
-
25
- if (childNodeTypeNode) {
26
- return true;
27
- }
28
- }) || null;
29
-
30
- return typeNode;
31
- }
32
-
33
9
  isProvisional() {
34
10
  let provisional = false;
35
11
 
@@ -52,5 +28,19 @@ export default class ConstructorDeclarationNode extends NonTerminalNode {
52
28
  return provisional;
53
29
  }
54
30
 
31
+ getTermNode() {
32
+ const ruleName = TERM_RULE_NAME,
33
+ termNode = this.getNodeByRuleName(ruleName);
34
+
35
+ return termNode;
36
+ }
37
+
38
+ getTypeNode() {
39
+ const ruleName = TYPE_RULE_NAME,
40
+ typeNode = this.getNodeByRuleName(ruleName);
41
+
42
+ return typeNode;
43
+ }
44
+
55
45
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorDeclarationNode, ruleName, childNodes, opacity, precedence); }
56
46
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeMetaTypeNode, isNodeMetavariableNode } from "../../utilities/node";
5
+ import { META_TYPE_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class MetavariableDeclarationNode extends NonTerminalNode {
8
8
  getTypeNode() {
@@ -13,25 +13,15 @@ export default class MetavariableDeclarationNode extends NonTerminalNode {
13
13
  }
14
14
 
15
15
  getMetaTypeNode() {
16
- const metaTypeNode = this.findChildNode((childNode) => {
17
- const childNodeMetaTypeNode = isNodeMetaTypeNode(childNode);
18
-
19
- if (childNodeMetaTypeNode) {
20
- return true;
21
- }
22
- }) || null;
16
+ const ruleName = META_TYPE_RULE_NAME,
17
+ metaTypeNode = this.getNodeByRuleName(ruleName);
23
18
 
24
19
  return metaTypeNode
25
20
  }
26
21
 
27
22
  getMetavariableNode() {
28
- const metavariableNode = this.findChildNode((childNode) => {
29
- const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
30
-
31
- if (childNodeMetavariableNode) {
32
- return true;
33
- }
34
- }) || null;
23
+ const ruleName = METAVARIABLE_RULE_NAME,
24
+ metavariableNode = this.getNodeByRuleName(ruleName);
35
25
 
36
26
  return metavariableNode;
37
27
  }
@@ -1,40 +1,30 @@
1
1
  "use strict";
2
2
 
3
- import { NonTerminalNode } from "occam-parsers";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { isNodeTypeNode, isNodePropertyNode } from "../../utilities/node";
5
+ import { TYPE_RULE_NAME, PROPERTY_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class PropertyDeclarationNode extends NonTerminalNode {
8
- getTypeNode() {
9
- const typeNode = this.findChildNode((childNode) => {
10
- const childNodeTypeNode = isNodeTypeNode(childNode);
8
+ getPropertyName() {
9
+ const propertyNode = this.getPropertyNode(),
10
+ propertyName = propertyNode.getPropertyName();
11
11
 
12
- if (childNodeTypeNode) {
13
- return true;
14
- }
15
- }) || null;
12
+ return propertyName;
13
+ }
14
+
15
+ getTypeNode() {
16
+ const ruleName = TYPE_RULE_NAME,
17
+ typeNode = this.getNodeByRuleName(ruleName);
16
18
 
17
19
  return typeNode;
18
20
  }
19
21
 
20
22
  getPropertyNode() {
21
- const propertyNode = this.findChildNode((childNode) => {
22
- const childNodePropertyNode = isNodePropertyNode(childNode);
23
-
24
- if (childNodePropertyNode) {
25
- return true;
26
- }
27
- }) || null;
23
+ const ruleName = PROPERTY_RULE_NAME,
24
+ propertyNode = this.getNodeByRuleName(ruleName);
28
25
 
29
26
  return propertyNode;
30
27
  }
31
28
 
32
- getPropertyName() {
33
- const propertyNode = this.getPropertyNode(),
34
- propertyName = propertyNode.getPropertyName();
35
-
36
- return propertyName;
37
- }
38
-
39
29
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyDeclarationNode, ruleName, childNodes, opacity, precedence); }
40
30
  }