occam-verify-cli 1.0.184 → 1.0.192

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 (196) hide show
  1. package/lib/constants.js +5 -1
  2. package/lib/dom/assertion/property.js +2 -4
  3. package/lib/dom/assertion/subproof.js +3 -5
  4. package/lib/dom/assertion/type.js +6 -8
  5. package/lib/dom/axiom.js +15 -100
  6. package/lib/dom/conjecture.js +5 -4
  7. package/lib/dom/constructor/bracketed.js +6 -7
  8. package/lib/dom/declaration/complexType.js +6 -6
  9. package/lib/dom/declaration/metavariable.js +3 -5
  10. package/lib/dom/declaration/type.js +2 -2
  11. package/lib/dom/declaration.js +2 -4
  12. package/lib/dom/derivation.js +2 -4
  13. package/lib/dom/equality.js +9 -11
  14. package/lib/dom/frame.js +8 -12
  15. package/lib/dom/judgement.js +2 -4
  16. package/lib/dom/lemma.js +5 -4
  17. package/lib/dom/metaLemma.js +5 -4
  18. package/lib/dom/metaType.js +2 -4
  19. package/lib/dom/metatheorem.js +5 -4
  20. package/lib/dom/metavariable.js +12 -15
  21. package/lib/dom/parameter.js +2 -4
  22. package/lib/dom/procedureCall.js +6 -10
  23. package/lib/dom/proof.js +2 -4
  24. package/lib/dom/property.js +16 -51
  25. package/lib/dom/propertyRelation.js +8 -10
  26. package/lib/dom/reference.js +7 -11
  27. package/lib/dom/rule.js +6 -8
  28. package/lib/dom/statement.js +27 -31
  29. package/lib/dom/step.js +4 -6
  30. package/lib/dom/subDerivation.js +2 -4
  31. package/lib/dom/subproof.js +6 -8
  32. package/lib/dom/term.js +14 -20
  33. package/lib/dom/theorem.js +5 -4
  34. package/lib/dom/topLevelAssertion.js +30 -24
  35. package/lib/dom/topLevelMetaAssertion.js +5 -15
  36. package/lib/dom/type.js +8 -25
  37. package/lib/dom/variable.js +5 -11
  38. package/lib/node/assertion/contained.js +45 -58
  39. package/lib/node/assertion/defined.js +33 -58
  40. package/lib/node/assertion/property.js +33 -58
  41. package/lib/node/assertion/satisfies.js +21 -58
  42. package/lib/node/assertion/subproof.js +21 -58
  43. package/lib/node/assertion/type.js +33 -58
  44. package/lib/node/axiom.js +6 -52
  45. package/lib/node/combinator.js +6 -57
  46. package/lib/node/conclusion.js +21 -58
  47. package/lib/node/conjecture.js +6 -52
  48. package/lib/node/constructor.js +6 -57
  49. package/lib/node/declaration/combinator.js +13 -61
  50. package/lib/node/declaration/complexType.js +27 -75
  51. package/lib/node/declaration/constructor.js +24 -70
  52. package/lib/node/declaration/metavariable.js +40 -58
  53. package/lib/node/declaration/property.js +27 -72
  54. package/lib/node/declaration/type.js +23 -69
  55. package/lib/node/declaration/variable.js +28 -83
  56. package/lib/node/declaration.js +33 -58
  57. package/lib/node/deduction.js +21 -58
  58. package/lib/node/derivation.js +21 -58
  59. package/lib/node/equality.js +34 -58
  60. package/lib/node/error.js +6 -57
  61. package/lib/node/frame.js +52 -58
  62. package/lib/node/judgement.js +33 -58
  63. package/lib/node/label.js +21 -58
  64. package/lib/{node.js → node/labels.js} +25 -27
  65. package/lib/node/lemma.js +6 -52
  66. package/lib/node/metaLemma.js +6 -52
  67. package/lib/node/metaType.js +18 -60
  68. package/lib/node/metatheorem.js +6 -52
  69. package/lib/node/metavariable.js +40 -61
  70. package/lib/node/parameter.js +22 -58
  71. package/lib/node/parenthesisedLabels.js +123 -0
  72. package/lib/node/premise.js +33 -58
  73. package/lib/node/procedureCall.js +33 -58
  74. package/lib/node/proof.js +21 -58
  75. package/lib/node/property.js +18 -62
  76. package/lib/node/propertyRelation.js +40 -58
  77. package/lib/node/reference.js +21 -58
  78. package/lib/node/rule.js +6 -52
  79. package/lib/node/statement.js +105 -58
  80. package/lib/node/step.js +47 -58
  81. package/lib/node/subDerivation.js +21 -58
  82. package/lib/node/subproof.js +47 -58
  83. package/lib/node/supposition.js +33 -58
  84. package/lib/node/term.js +57 -58
  85. package/lib/node/theorem.js +6 -52
  86. package/lib/node/topLevelAssertion.js +86 -59
  87. package/lib/node/topLevelMetaAssertion.js +65 -59
  88. package/lib/node/type.js +14 -60
  89. package/lib/node/variable.js +14 -60
  90. package/lib/nominal/parser.js +3 -3
  91. package/lib/nonTerminalNodeMap.js +5 -3
  92. package/lib/ruleNames.js +10 -2
  93. package/lib/utilities/node.js +283 -7
  94. package/lib/utilities/type.js +16 -4
  95. package/lib/verifier/topLevel.js +6 -6
  96. package/package.json +8 -8
  97. package/src/constants.js +1 -0
  98. package/src/dom/assertion/property.js +1 -4
  99. package/src/dom/assertion/subproof.js +2 -6
  100. package/src/dom/assertion/type.js +7 -10
  101. package/src/dom/axiom.js +7 -77
  102. package/src/dom/conjecture.js +6 -1
  103. package/src/dom/constructor/bracketed.js +6 -8
  104. package/src/dom/declaration/complexType.js +7 -6
  105. package/src/dom/declaration/metavariable.js +2 -6
  106. package/src/dom/declaration/type.js +4 -2
  107. package/src/dom/declaration.js +1 -5
  108. package/src/dom/derivation.js +1 -4
  109. package/src/dom/equality.js +13 -17
  110. package/src/dom/frame.js +7 -19
  111. package/src/dom/judgement.js +1 -4
  112. package/src/dom/lemma.js +6 -1
  113. package/src/dom/metaLemma.js +6 -1
  114. package/src/dom/metaType.js +1 -5
  115. package/src/dom/metatheorem.js +6 -1
  116. package/src/dom/metavariable.js +11 -25
  117. package/src/dom/parameter.js +2 -6
  118. package/src/dom/procedureCall.js +5 -14
  119. package/src/dom/proof.js +1 -4
  120. package/src/dom/property.js +21 -78
  121. package/src/dom/propertyRelation.js +10 -14
  122. package/src/dom/reference.js +6 -18
  123. package/src/dom/rule.js +6 -12
  124. package/src/dom/statement.js +26 -46
  125. package/src/dom/step.js +3 -5
  126. package/src/dom/subDerivation.js +1 -4
  127. package/src/dom/subproof.js +8 -12
  128. package/src/dom/term.js +16 -32
  129. package/src/dom/theorem.js +6 -1
  130. package/src/dom/topLevelAssertion.js +30 -25
  131. package/src/dom/topLevelMetaAssertion.js +16 -28
  132. package/src/dom/type.js +9 -35
  133. package/src/dom/variable.js +4 -12
  134. package/src/node/assertion/contained.js +41 -3
  135. package/src/node/assertion/defined.js +29 -3
  136. package/src/node/assertion/property.js +29 -3
  137. package/src/node/assertion/satisfies.js +17 -3
  138. package/src/node/assertion/subproof.js +17 -3
  139. package/src/node/assertion/type.js +29 -3
  140. package/src/node/axiom.js +3 -3
  141. package/src/node/combinator.js +3 -3
  142. package/src/node/conclusion.js +17 -3
  143. package/src/node/conjecture.js +3 -3
  144. package/src/node/constructor.js +3 -3
  145. package/src/node/declaration/combinator.js +11 -7
  146. package/src/node/declaration/complexType.js +25 -24
  147. package/src/node/declaration/constructor.js +22 -17
  148. package/src/node/declaration/metavariable.js +36 -3
  149. package/src/node/declaration/property.js +21 -17
  150. package/src/node/declaration/type.js +22 -17
  151. package/src/node/declaration/variable.js +24 -32
  152. package/src/node/declaration.js +29 -3
  153. package/src/node/deduction.js +17 -3
  154. package/src/node/derivation.js +18 -3
  155. package/src/node/equality.js +31 -3
  156. package/src/node/error.js +3 -3
  157. package/src/node/frame.js +53 -3
  158. package/src/node/judgement.js +29 -3
  159. package/src/node/label.js +17 -3
  160. package/src/node/labels.js +21 -0
  161. package/src/node/lemma.js +3 -3
  162. package/src/node/metaLemma.js +3 -3
  163. package/src/node/metaType.js +19 -8
  164. package/src/node/metatheorem.js +3 -3
  165. package/src/node/metavariable.js +42 -9
  166. package/src/node/parameter.js +20 -3
  167. package/src/node/parenthesisedLabels.js +28 -0
  168. package/src/node/premise.js +29 -3
  169. package/src/node/procedureCall.js +29 -3
  170. package/src/node/proof.js +17 -3
  171. package/src/node/property.js +18 -12
  172. package/src/node/propertyRelation.js +35 -3
  173. package/src/node/reference.js +17 -3
  174. package/src/node/rule.js +3 -3
  175. package/src/node/statement.js +108 -3
  176. package/src/node/step.js +41 -3
  177. package/src/node/subDerivation.js +18 -3
  178. package/src/node/subproof.js +41 -3
  179. package/src/node/supposition.js +29 -3
  180. package/src/node/term.js +62 -3
  181. package/src/node/theorem.js +3 -3
  182. package/src/node/topLevelAssertion.js +89 -3
  183. package/src/node/topLevelMetaAssertion.js +59 -3
  184. package/src/node/type.js +15 -8
  185. package/src/node/variable.js +15 -8
  186. package/src/nominal/parser.js +1 -1
  187. package/src/nonTerminalNodeMap.js +9 -3
  188. package/src/ruleNames.js +3 -1
  189. package/src/utilities/node.js +147 -6
  190. package/src/utilities/type.js +9 -0
  191. package/src/verifier/topLevel.js +5 -10
  192. package/lib/defaultTerminalNode.js +0 -20
  193. package/lib/mixins/node.js +0 -145
  194. package/src/defaultTerminalNode.js +0 -7
  195. package/src/mixins/node.js +0 -201
  196. package/src/node.js +0 -29
package/src/dom/type.js CHANGED
@@ -4,17 +4,14 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import dom from "../dom";
6
6
 
7
- import { nodeQuery } from "../utilities/query";
8
7
  import { domAssigned } from "../dom";
9
8
  import { OBJECT_TYPE_NAME } from "../typeNames";
10
9
  import { typeFromTypeNode } from "../utilities/node";
11
- import { superTypesStringFromSuperTypes } from "../utilities/type";
10
+ import { stringFromTypeNameNameAndSuperTypes } from "../utilities/type";
12
11
  import { superTypesFromJSON, propertiesFromJSON, superTypesToSuperTypesJSON, propertiesToPropertiesJSON } from "../utilities/json";
13
12
 
14
13
  const { push, first } = arrayUtilities;
15
14
 
16
- const typeAssertionTypeNodeQuery = nodeQuery("/typeAssertion/type");
17
-
18
15
  class Type {
19
16
  constructor(string, name, superTypes, properties, provisional) {
20
17
  this.string = string;
@@ -108,15 +105,7 @@ class Type {
108
105
  }
109
106
 
110
107
  isEqualTo(type) {
111
- let equalTo = false;
112
-
113
- if (this.type === type) {
114
- equalTo = true;
115
- } else {
116
- if (type.name === null) {
117
-
118
- }
119
- }
108
+ const equalTo = (this === type);
120
109
 
121
110
  return equalTo;
122
111
  }
@@ -224,7 +213,8 @@ class Type {
224
213
  const { name, provisional } = json,
225
214
  properties = propertiesFromJSON(json, fileContext),
226
215
  superTypes = superTypesFromJSON(json, fileContext),
227
- string = stringFromNameAndSuperTypes(name, superTypes),
216
+ typeName = name, ///
217
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
228
218
  type = new Type(string, name, superTypes, properties, provisional);
229
219
 
230
220
  return type;
@@ -237,8 +227,7 @@ class Type {
237
227
  }
238
228
 
239
229
  static fromTypeAssertionNode(typeAssertionNode, fileContext) {
240
- const typeAssertionTypeNode = typeAssertionTypeNodeQuery(typeAssertionNode),
241
- typeNode = typeAssertionTypeNode, ///
230
+ const typeNode = typeAssertionNode.getTypeNode(),
242
231
  type = typeFromTypeNode(typeNode, fileContext);
243
232
 
244
233
  return type;
@@ -247,10 +236,11 @@ class Type {
247
236
  static fromTypeAndProvisional(type, provisional) {
248
237
  const name = type.getName(),
249
238
  superType = type, ///
239
+ typeName = name, ///
250
240
  superTypes = [
251
241
  superType
252
242
  ],
253
- string = stringFromNameAndSuperTypes(name, superTypes),
243
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
254
244
  properties = type.getProperties();
255
245
 
256
246
  type = new Type(string, name, superTypes, properties, provisional); ///
@@ -264,7 +254,7 @@ class Type {
264
254
  typeName = typeDeclarationNode.getTypeName(),
265
255
  name = typeName, ///
266
256
  superTypes = superTypesFromTypeDeclarationNode(typeDeclarationNode, fileContext),
267
- string = stringFromNameAndSuperTypes(name, superTypes),
257
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
268
258
  type = new Type(string, name, superTypes, properties, provisional);
269
259
 
270
260
  return type;
@@ -301,7 +291,7 @@ class Type {
301
291
  typeName = complexTypeDeclarationNode.getTypeName(),
302
292
  name = typeName,
303
293
  superTypes = superTypesFromComplexTypeDeclarationNode(complexTypeDeclarationNode, fileContext),
304
- string = stringFromNameAndSuperTypes(name, superTypes),
294
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
305
295
  type = new Type(string, name, superTypes, properties, provisional);
306
296
 
307
297
  return type;
@@ -310,22 +300,6 @@ class Type {
310
300
 
311
301
  export default domAssigned(Type);
312
302
 
313
- function stringFromNameAndSuperTypes(name, superTypes) {
314
- let string;
315
-
316
- if (name === null) {
317
- string = OBJECT_TYPE_NAME; ///
318
- } else {
319
- const superTypesString = superTypesStringFromSuperTypes(superTypes);
320
-
321
- string = (superTypesString !== null) ?
322
- `${name}:${superTypesString}` :
323
- name; ///
324
- }
325
-
326
- return string;
327
- }
328
-
329
303
  function superTypesFromTypeDeclarationNode(typeDeclarationNode, fileContext) {
330
304
  const superTypeNodes = typeDeclarationNode.getSuperTypeNodes(),
331
305
  superTypes = superTypeNodes.map((superTypeNode) => {
@@ -4,16 +4,12 @@ import dom from "../dom";
4
4
  import LocalContext from "../context/local";
5
5
  import TermSubstitution from "../substitution/term";
6
6
 
7
- import { nodeQuery } from "../utilities/query";
8
- import { ObjectType } from "./type";
9
7
  import { domAssigned } from "../dom";
10
8
  import { EMPTY_STRING } from "../constants";
11
9
  import { typeFromTypeNode } from "../utilities/node";
12
10
  import { typeFromJSON, typeToTypeJSON } from "../utilities/json";
13
11
  import { variableNodeFromVariableString } from "../context/partial/variable";
14
12
 
15
- const termVariableNodeQuery = nodeQuery("/term/variable!");
16
-
17
13
  export default domAssigned(class Variable {
18
14
  constructor(string, node, name, type, propertyRelations) {
19
15
  this.string = string;
@@ -209,10 +205,10 @@ export default domAssigned(class Variable {
209
205
  static fromTermNode(termNode, context) {
210
206
  let variable = null;
211
207
 
212
- const termVariableNode = termVariableNodeQuery(termNode);
208
+ const singularVariableNode = termNode.getSingularVariableNode();
213
209
 
214
- if (termVariableNode !== null) {
215
- const variableNode = termVariableNode, ///
210
+ if (singularVariableNode !== null) {
211
+ const variableNode = singularVariableNode, ///
216
212
  type = null;
217
213
 
218
214
  variable = variableFromVariableNodeAndType(variableNode, type, context);
@@ -234,11 +230,7 @@ export default domAssigned(class Variable {
234
230
  }
235
231
 
236
232
  static fromVariableNodeAndType(variableNode, type, context) {
237
- let variable = null;
238
-
239
- if (variableNode !== null) {
240
- variable = variableFromVariableNodeAndType(variableNode, type, context);
241
- }
233
+ const variable = variableFromVariableNodeAndType(variableNode, type, context);
242
234
 
243
235
  return variable;
244
236
  }
@@ -1,7 +1,45 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class ContainedAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ContainedAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeTermNode, isNodeFrameNode, isNodeStatementNode } from "../../utilities/node";
6
+
7
+ export default class ContainedAssertionNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const termNode = this.findChildNode((childNode) => {
10
+ const childNodeTermNode = isNodeTermNode(childNode);
11
+
12
+ if (childNodeTermNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return termNode;
18
+ }
19
+
20
+ getFrameNode() {
21
+ const frameNode = this.findChildNode((childNode) => {
22
+ const childNodeFrameNode = isNodeFrameNode(childNode);
23
+
24
+ if (childNodeFrameNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return frameNode;
30
+ }
31
+
32
+ getStatementNode() {
33
+ const statementNode = this.findChildNode((childNode) => {
34
+ const childNodeStatementNode = isNodeStatementNode(childNode);
35
+
36
+ if (childNodeStatementNode) {
37
+ return true;
38
+ }
39
+ }) || null;
40
+
41
+ return statementNode;
42
+ }
43
+
44
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ContainedAssertionNode, ruleName, childNodes, opacity, precedence); }
7
45
  }
@@ -1,7 +1,33 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class DefinedAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(DefinedAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeTermNode, isNodeFrameNode } from "../../utilities/node";
6
+
7
+ export default class DefinedAssertionNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const termNode = this.findChildNode((childNode) => {
10
+ const childNodeTermNode = isNodeTermNode(childNode);
11
+
12
+ if (childNodeTermNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return termNode;
18
+ }
19
+
20
+ getFrameNode() {
21
+ const frameNode = this.findChildNode((childNode) => {
22
+ const childNodeFrameNode = isNodeFrameNode(childNode);
23
+
24
+ if (childNodeFrameNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return frameNode;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DefinedAssertionNode, ruleName, childNodes, opacity, precedence); }
7
33
  }
@@ -1,7 +1,33 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class PropertyAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(PropertyAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeTermNode, isNodePropertyRelationNode } from "../../utilities/node";
6
+
7
+ export default class PropertyAssertionNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const termNode = this.findChildNode((childNode) => {
10
+ const childNodeTermNode = isNodeTermNode(childNode);
11
+
12
+ if (childNodeTermNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return termNode;
18
+ }
19
+
20
+ getPropertyRelationNode() {
21
+ const propertyRelationNode = this.findChildNode((childNode) => {
22
+ const childNodePropertyRelationNode = isNodePropertyRelationNode(childNode);
23
+
24
+ if (childNodePropertyRelationNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return propertyRelationNode;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyAssertionNode, ruleName, childNodes, opacity, precedence); }
7
33
  }
@@ -1,7 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class SatisfiesAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(SatisfiesAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeMetavariableNode } from "../../utilities/node";
6
+
7
+ export default class SatisfiesAssertionNode extends NonTerminalNode {
8
+ getMetavariableNode() {
9
+ const metavariableNode = this.findChildNode((childNode) => {
10
+ const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
11
+
12
+ if (childNodeMetavariableNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return metavariableNode;
18
+ }
19
+
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SatisfiesAssertionNode, ruleName, childNodes, opacity, precedence); }
7
21
  }
@@ -1,7 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class SubproofAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(SubproofAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStatementNode } from "../../utilities/node";
6
+
7
+ export default class SubproofAssertionNode extends NonTerminalNode {
8
+ getStatementNodes() {
9
+ const statementNodes = this.filterChildNode((childNode) => {
10
+ const childNodeStatementNode = isNodeStatementNode(childNode);
11
+
12
+ if (childNodeStatementNode) {
13
+ return true;
14
+ }
15
+ });
16
+
17
+ return statementNodes;
18
+ }
19
+
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubproofAssertionNode, ruleName, childNodes, opacity, precedence); }
7
21
  }
@@ -1,7 +1,33 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class TypeAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TypeAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeTermNode, isNodeTypeNode } from "../../utilities/node";
6
+
7
+ export default class TypeAssertionNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const termNode = this.findChildNode((childNode) => {
10
+ const childNodeTermNode = isNodeTermNode(childNode);
11
+
12
+ if (childNodeTermNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return termNode;
18
+ }
19
+
20
+ getTypeNode() {
21
+ const typeNode = this.findChildNode((childNode) => {
22
+ const childNodeTypeNode = isNodeTypeNode(childNode);
23
+
24
+ if (childNodeTypeNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return typeNode;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeAssertionNode, ruleName, childNodes, opacity, precedence); }
7
33
  }
package/src/node/axiom.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import TopLevelAssertionNode from "../node/topLevelAssertion";
4
4
 
5
- export default class AxiomNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(AxiomNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class AxiomNode extends TopLevelAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(AxiomNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class CombinatorNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(CombinatorNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class CombinatorNode extends NonTerminalNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(CombinatorNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,7 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class ConclusionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ConclusionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStatementNode } from "../utilities/node";
6
+
7
+ export default class ConclusionNode extends NonTerminalNode {
8
+ getStatementNode() {
9
+ const statementNode = this.findChildNode((childNode) => {
10
+ const childNodeStatementNode = isNodeStatementNode(childNode);
11
+
12
+ if (childNodeStatementNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return statementNode;
18
+ }
19
+
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConclusionNode, ruleName, childNodes, opacity, precedence); }
7
21
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import TopLevelAssertionNode from "../node/topLevelAssertion";
4
4
 
5
- export default class ConjectureNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ConjectureNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class ConjectureNode extends TopLevelAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(ConjectureNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class ConstructorNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class ConstructorNode extends NonTerminalNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,17 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class ContainedDeclarationNode extends Node {
5
+ import { isNodeStatementNode } from "../../utilities/node";
6
+
7
+ export default class ContainedDeclarationNode extends NonTerminalNode {
6
8
  getStatementNode() {
7
- const statementNode = this.fromSecondChildNode((secondChildNode) => {
8
- const statementNode = secondChildNode; ///
9
+ const statementNode = this.findChildNode((childNode) => {
10
+ const childNodeStatementNode = isNodeStatementNode(childNode);
9
11
 
10
- return statementNode;
11
- });
12
+ if (childNodeStatementNode) {
13
+ return true;
14
+ }
15
+ }) || null;
12
16
 
13
17
  return statementNode;
14
18
  }
15
19
 
16
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ContainedDeclarationNode, ruleName, childNodes, opacity, precedence); }
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ContainedDeclarationNode, ruleName, childNodes, opacity, precedence); }
17
21
  }
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
5
  import { PROVISIONAL } from "../../constants";
6
6
  import { isNodeTypeNode, isNodePropertyDeclarationNode } from "../../utilities/node";
7
7
 
8
- export default class ComplexTypeDeclarationNode extends Node {
8
+ export default class ComplexTypeDeclarationNode extends NonTerminalNode {
9
9
  getTypeName() {
10
- let typeName;
10
+ let typeName = null;
11
11
 
12
12
  this.someChildNode((childNode) => {
13
13
  const childNodeTypeNode = isNodeTypeNode(childNode);
@@ -25,30 +25,35 @@ export default class ComplexTypeDeclarationNode extends Node {
25
25
  }
26
26
 
27
27
  isProvisional() {
28
- const provisional = this.fromFirstChildNode((firstChildNode) => {
29
- const terminalNode = firstChildNode, ///
30
- content = terminalNode.getContent(),
31
- contentProvisional = (content === PROVISIONAL),
32
- provisional = contentProvisional; ///
28
+ let provisional = false;
33
29
 
34
- return provisional;
30
+ this.someChildNode((childNode) => {
31
+ const childNodeTerminalNode = childNode.isTerminalNode();
32
+
33
+ if (childNodeTerminalNode) {
34
+ const terminalNode = childNode,
35
+ content = terminalNode.getContent(),
36
+ contentProvisional = (content === PROVISIONAL);
37
+
38
+ if (contentProvisional) {
39
+ provisional = true;
40
+
41
+ return true;
42
+ }
43
+ }
35
44
  });
36
45
 
37
46
  return provisional;
38
47
  }
39
48
 
40
49
  getSuperTypeNodes() {
41
- const typeNodes = this.reduceChildNode((typeNodes, childNode) => {
50
+ const typeNodes = this.filterChildNode((childNode) => {
42
51
  const childNodeTypeNode = isNodeTypeNode(childNode);
43
52
 
44
53
  if (childNodeTypeNode) {
45
- const typeNode = childNode; ///
46
-
47
- typeNodes.push(typeNode);
54
+ return true;
48
55
  }
49
-
50
- return typeNodes;
51
- }, []);
56
+ });
52
57
 
53
58
  typeNodes.pop();
54
59
 
@@ -58,20 +63,16 @@ export default class ComplexTypeDeclarationNode extends Node {
58
63
  }
59
64
 
60
65
  getPropertyDeclarationNodes() {
61
- const propertyDeclarationNodes = this.reduceChildNode((propertyDeclarationNodes, childNode) => {
66
+ const propertyDeclarationNodes = this.filterChildNode((childNode) => {
62
67
  const childNodePropertyDeclarationNode = isNodePropertyDeclarationNode(childNode);
63
68
 
64
69
  if (childNodePropertyDeclarationNode) {
65
- const propertyDeclarationNode = childNode; ///
66
-
67
- propertyDeclarationNodes.push(propertyDeclarationNode);
70
+ return true;
68
71
  }
69
-
70
- return propertyDeclarationNodes;
71
- }, []);
72
+ });
72
73
 
73
74
  return propertyDeclarationNodes;
74
75
  }
75
76
 
76
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ComplexTypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
77
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ComplexTypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
77
78
  }
@@ -1,51 +1,56 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
5
  import { PROVISIONALLY } from "../../constants";
6
+ import { isNodeTermNode, isNodeTypeNode } from "../../utilities/node";
6
7
 
7
- export default class ConstructorDeclarationNode extends Node {
8
+ export default class ConstructorDeclarationNode extends NonTerminalNode {
8
9
  getTermNode() {
9
- const termNode = this.fromSecondChildNode((secondChildNode) => {
10
- const termNode = secondChildNode; ///
10
+ const termNode = this.findChildNode((childNode) => {
11
+ const childNodeTermNode = isNodeTermNode(childNode);
11
12
 
12
- return termNode;
13
- });
13
+ if (childNodeTermNode) {
14
+ return true;
15
+ }
16
+ }) || null;
14
17
 
15
18
  return termNode;
16
19
  }
17
20
 
18
21
  getTypeNode() {
19
- const typeNode = this.fromFourthChildNode((fourthChildNode) => {
20
- const typeNode = fourthChildNode; ///
22
+ const typeNode = this.findChildNode((childNode) => {
23
+ const childNodeTypeNode = isNodeTypeNode(childNode);
21
24
 
22
- return typeNode;
25
+ if (childNodeTypeNode) {
26
+ return true;
27
+ }
23
28
  }) || null;
24
29
 
25
30
  return typeNode;
26
31
  }
27
32
 
28
33
  isProvisional() {
29
- const provisional = this.fromSecondLastChildNode((secondLastChildNode) => {
30
- let provisional = false;
34
+ let provisional = false;
31
35
 
32
- const secondLastChildNodeTerminalNode = secondLastChildNode.isTerminalNode();
36
+ this.someChildNode((childNode) => {
37
+ const childNodeTerminalNode = childNode.isTerminalNode();
33
38
 
34
- if (secondLastChildNodeTerminalNode) {
35
- const terminalNode = secondLastChildNode, ///
39
+ if (childNodeTerminalNode) {
40
+ const terminalNode = childNode,
36
41
  content = terminalNode.getContent(),
37
42
  contentProvisionally = (content === PROVISIONALLY);
38
43
 
39
44
  if (contentProvisionally) {
40
45
  provisional = true;
46
+
47
+ return true;
41
48
  }
42
49
  }
43
-
44
- return provisional;
45
50
  });
46
51
 
47
52
  return provisional;
48
53
  }
49
54
 
50
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorDeclarationNode, ruleName, childNodes, opacity, precedence); }
55
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorDeclarationNode, ruleName, childNodes, opacity, precedence); }
51
56
  }