occam-verify-cli 0.0.526 → 0.0.529

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 (221) hide show
  1. package/README.md +4 -0
  2. package/bin/abbreviations.js +5 -1
  3. package/bin/action/help.js +4 -0
  4. package/bin/action/verify.js +35 -13
  5. package/bin/actions.js +11 -6
  6. package/bin/defaults.js +4 -0
  7. package/bin/options.js +4 -0
  8. package/bin/utilities/releaseContext.js +5 -7
  9. package/lib/assertion/type.js +10 -40
  10. package/lib/axiom.js +8 -8
  11. package/lib/axiomLemmaTheoremConjecture.js +190 -0
  12. package/lib/combinator.js +4 -3
  13. package/lib/conclusion.js +8 -7
  14. package/lib/conjecture.js +141 -0
  15. package/lib/consequence.js +6 -5
  16. package/lib/constants.js +11 -27
  17. package/lib/constructor.js +5 -4
  18. package/lib/context/file.js +88 -73
  19. package/lib/context/metaproof.js +51 -20
  20. package/lib/context/proof.js +48 -114
  21. package/lib/context/release/directory.js +25 -6
  22. package/lib/context/release/file.js +38 -25
  23. package/lib/context/release.js +32 -51
  24. package/lib/equality.js +79 -51
  25. package/lib/index.js +4 -16
  26. package/lib/kinds.js +5 -1
  27. package/lib/label.js +4 -3
  28. package/lib/lemma.js +8 -8
  29. package/lib/log.js +146 -0
  30. package/lib/matcher.js +25 -75
  31. package/lib/metaTypeNames.js +13 -0
  32. package/lib/mixins/file.js +62 -2
  33. package/lib/mixins/logging.js +13 -13
  34. package/lib/node/metastatement/bracketed.js +16 -0
  35. package/lib/node/statement/bracketed.js +16 -0
  36. package/lib/node/statement/combinator/bracketed.js +17 -0
  37. package/lib/node/statement/combinator/equality.js +17 -0
  38. package/lib/node/statement/equality.js +16 -0
  39. package/lib/ocmbinator/bracketed.js +3 -4
  40. package/lib/ocmbinator/equality.js +3 -4
  41. package/lib/premise.js +13 -12
  42. package/lib/rule.js +5 -5
  43. package/lib/ruleNames.js +1 -9
  44. package/lib/step/metaproof.js +28 -25
  45. package/lib/step/proof.js +23 -1
  46. package/lib/substitution/metastatementForMetavariable.js +16 -13
  47. package/lib/substitution/statementForMetavariable.js +16 -13
  48. package/lib/substitution/termForVariable.js +76 -0
  49. package/lib/supposition.js +7 -6
  50. package/lib/theorem.js +8 -8
  51. package/lib/type.js +12 -5
  52. package/lib/utilities/metaproof.js +60 -0
  53. package/lib/utilities/node.js +56 -0
  54. package/lib/utilities/proof.js +60 -0
  55. package/lib/utilities/releaseContext.js +24 -12
  56. package/lib/utilities/string.js +3 -38
  57. package/lib/variable.js +4 -38
  58. package/lib/{matcher → verifier}/metastatementForMetavariable/conclusion.js +12 -12
  59. package/lib/{matcher → verifier}/metastatementForMetavariable/premise.js +12 -12
  60. package/lib/verifier/metastatementForMetavariable.js +198 -0
  61. package/lib/{matcher → verifier}/statementForMetavariable/conclusion.js +12 -12
  62. package/lib/{matcher → verifier}/statementForMetavariable/premise.js +12 -12
  63. package/lib/verifier/statementForMetavariable.js +203 -0
  64. package/lib/{matcher/statementForVariable → verifier/termForVariable}/consequence.js +13 -13
  65. package/lib/{matcher/statementForVariable → verifier/termForVariable}/supposition.js +13 -13
  66. package/lib/verifier/termForVariable.js +198 -0
  67. package/lib/verifier.js +92 -0
  68. package/lib/verify/assertion/type.js +62 -41
  69. package/lib/verify/axiom.js +3 -6
  70. package/lib/verify/conclusion.js +2 -4
  71. package/lib/verify/conjecture.js +54 -0
  72. package/lib/verify/consequence.js +2 -4
  73. package/lib/verify/declaration/combinator.js +1 -3
  74. package/lib/verify/declaration/constructor.js +1 -3
  75. package/lib/verify/declaration/topLevel.js +7 -5
  76. package/lib/verify/declaration/type.js +1 -3
  77. package/lib/verify/declaration/variable.js +1 -3
  78. package/lib/verify/derivation.js +1 -5
  79. package/lib/verify/label.js +1 -3
  80. package/lib/verify/lemma.js +3 -6
  81. package/lib/verify/metastatement/qualified.js +2 -5
  82. package/lib/verify/metastatement/unqualified.js +2 -5
  83. package/lib/verify/metastatement.js +1 -3
  84. package/lib/verify/premise.js +2 -4
  85. package/lib/verify/proof.js +3 -5
  86. package/lib/verify/rule.js +3 -6
  87. package/lib/verify/ruleDerivation.js +1 -5
  88. package/lib/verify/ruleProof.js +3 -5
  89. package/lib/verify/statement/qualified.js +40 -13
  90. package/lib/verify/statement/unqualified.js +2 -5
  91. package/lib/verify/statement.js +56 -62
  92. package/lib/verify/statementAsCombinator.js +4 -6
  93. package/lib/verify/supposition.js +2 -4
  94. package/lib/verify/term.js +4 -10
  95. package/lib/verify/termAsConstructor.js +6 -9
  96. package/lib/verify/theorem.js +3 -6
  97. package/lib/verify/type.js +5 -9
  98. package/lib/verify/variable.js +5 -9
  99. package/package.json +1 -1
  100. package/src/assertion/type.js +7 -32
  101. package/src/axiom.js +4 -4
  102. package/src/{axiomLemmaTheorem.js → axiomLemmaTheoremConjecture.js} +9 -9
  103. package/src/combinator.js +3 -3
  104. package/src/conclusion.js +7 -7
  105. package/src/conjecture.js +13 -0
  106. package/src/consequence.js +5 -5
  107. package/src/constants.js +3 -7
  108. package/src/constructor.js +4 -4
  109. package/src/context/file.js +85 -65
  110. package/src/context/metaproof.js +55 -15
  111. package/src/context/proof.js +53 -50
  112. package/src/context/release/directory.js +31 -7
  113. package/src/context/release/file.js +47 -31
  114. package/src/context/release.js +23 -32
  115. package/src/equality.js +108 -61
  116. package/src/index.js +2 -4
  117. package/src/kinds.js +1 -0
  118. package/src/label.js +3 -3
  119. package/src/lemma.js +4 -4
  120. package/src/log.js +116 -0
  121. package/src/matcher.js +32 -24
  122. package/src/metaTypeNames.js +3 -0
  123. package/src/mixins/file.js +46 -1
  124. package/src/mixins/logging.js +6 -6
  125. package/src/node/metastatement/bracketed.js +9 -0
  126. package/src/node/statement/bracketed.js +9 -0
  127. package/src/node/statement/combinator/bracketed.js +10 -0
  128. package/src/node/statement/combinator/equality.js +11 -0
  129. package/src/node/statement/equality.js +10 -0
  130. package/src/ocmbinator/bracketed.js +2 -5
  131. package/src/ocmbinator/equality.js +2 -5
  132. package/src/premise.js +13 -13
  133. package/src/rule.js +4 -4
  134. package/src/ruleNames.js +0 -2
  135. package/src/step/metaproof.js +32 -29
  136. package/src/step/proof.js +28 -0
  137. package/src/substitution/metastatementForMetavariable.js +10 -15
  138. package/src/substitution/statementForMetavariable.js +11 -16
  139. package/src/substitution/termForVariable.js +36 -0
  140. package/src/supposition.js +6 -6
  141. package/src/theorem.js +4 -4
  142. package/src/type.js +17 -7
  143. package/src/utilities/metaproof.js +62 -0
  144. package/src/utilities/node.js +73 -0
  145. package/src/utilities/proof.js +62 -0
  146. package/src/utilities/releaseContext.js +30 -12
  147. package/src/utilities/string.js +4 -53
  148. package/src/variable.js +4 -37
  149. package/src/verifier/metastatementForMetavariable/conclusion.js +9 -0
  150. package/src/verifier/metastatementForMetavariable/premise.js +9 -0
  151. package/src/verifier/metastatementForMetavariable.js +89 -0
  152. package/src/verifier/statementForMetavariable/conclusion.js +9 -0
  153. package/src/verifier/statementForMetavariable/premise.js +9 -0
  154. package/src/verifier/statementForMetavariable.js +105 -0
  155. package/src/verifier/termForVariable/consequence.js +9 -0
  156. package/src/verifier/termForVariable/supposition.js +9 -0
  157. package/src/verifier/termForVariable.js +89 -0
  158. package/src/verifier.js +74 -0
  159. package/src/verify/assertion/type.js +74 -74
  160. package/src/verify/axiom.js +2 -9
  161. package/src/verify/conclusion.js +1 -7
  162. package/src/verify/conjecture.js +67 -0
  163. package/src/verify/consequence.js +1 -7
  164. package/src/verify/declaration/combinator.js +0 -6
  165. package/src/verify/declaration/constructor.js +0 -6
  166. package/src/verify/declaration/topLevel.js +7 -6
  167. package/src/verify/declaration/type.js +0 -6
  168. package/src/verify/declaration/variable.js +0 -6
  169. package/src/verify/derivation.js +0 -12
  170. package/src/verify/label.js +0 -6
  171. package/src/verify/lemma.js +4 -11
  172. package/src/verify/metastatement/qualified.js +1 -8
  173. package/src/verify/metastatement/unqualified.js +1 -8
  174. package/src/verify/metastatement.js +0 -6
  175. package/src/verify/premise.js +1 -7
  176. package/src/verify/proof.js +1 -7
  177. package/src/verify/rule.js +2 -9
  178. package/src/verify/ruleDerivation.js +0 -12
  179. package/src/verify/ruleProof.js +1 -7
  180. package/src/verify/statement/qualified.js +54 -20
  181. package/src/verify/statement/unqualified.js +1 -8
  182. package/src/verify/statement.js +65 -95
  183. package/src/verify/statementAsCombinator.js +3 -9
  184. package/src/verify/supposition.js +1 -7
  185. package/src/verify/term.js +3 -21
  186. package/src/verify/termAsConstructor.js +5 -13
  187. package/src/verify/theorem.js +2 -9
  188. package/src/verify/type.js +4 -13
  189. package/src/verify/variable.js +4 -13
  190. package/bin/callbacks.js +0 -48
  191. package/lib/axiomLemmaTheorem.js +0 -190
  192. package/lib/callbacks.js +0 -75
  193. package/lib/context/release/combinator.js +0 -64
  194. package/lib/jsonTypes.js +0 -30
  195. package/lib/matcher/metastatementForMetavariable.js +0 -201
  196. package/lib/matcher/statementForMetavariable.js +0 -201
  197. package/lib/matcher/statementForVariable.js +0 -201
  198. package/lib/mixins/callbacks.js +0 -27
  199. package/lib/substitution/statementForVariable.js +0 -86
  200. package/lib/utilities/json.js +0 -187
  201. package/lib/utilities/substitution.js +0 -61
  202. package/lib/utilities/version.js +0 -32
  203. package/lib/versionChanges.js +0 -34
  204. package/src/callbacks.js +0 -39
  205. package/src/context/release/combinator.js +0 -39
  206. package/src/jsonTypes.js +0 -6
  207. package/src/matcher/metastatementForMetavariable/conclusion.js +0 -9
  208. package/src/matcher/metastatementForMetavariable/premise.js +0 -9
  209. package/src/matcher/metastatementForMetavariable.js +0 -99
  210. package/src/matcher/statementForMetavariable/conclusion.js +0 -9
  211. package/src/matcher/statementForMetavariable/premise.js +0 -9
  212. package/src/matcher/statementForMetavariable.js +0 -99
  213. package/src/matcher/statementForVariable/consequence.js +0 -9
  214. package/src/matcher/statementForVariable/supposition.js +0 -9
  215. package/src/matcher/statementForVariable.js +0 -99
  216. package/src/mixins/callbacks.js +0 -15
  217. package/src/substitution/statementForVariable.js +0 -64
  218. package/src/utilities/json.js +0 -264
  219. package/src/utilities/substitution.js +0 -79
  220. package/src/utilities/version.js +0 -30
  221. package/src/versionChanges.js +0 -11
@@ -1,187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _necessary = require("necessary");
12
- var _constants = require("../constants");
13
- var _jsonTypes = require("../jsonTypes");
14
- var _versionChanges = require("../versionChanges");
15
- var _typeof = function(obj) {
16
- "@swc/helpers - typeof";
17
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
18
- };
19
- var first = _necessary.arrayUtilities.first;
20
- function compareJSON(jsonA, jsonB) {
21
- var result = _versionChanges.BREAKING_VERSION_CHANGE;
22
- var jsonAType = typeOf(jsonA), jsonBType = typeOf(jsonB);
23
- if (jsonAType === jsonBType) {
24
- var jsonType = jsonAType; ///
25
- switch(jsonType){
26
- case _jsonTypes.ARRAY_JSON_TYPE:
27
- {
28
- var arrayA = jsonA, arrayB = jsonB; ///
29
- result = compareArrays(arrayA, arrayB);
30
- break;
31
- }
32
- case _jsonTypes.OBJECT_JSON_TYPE:
33
- {
34
- var objectA = jsonA, objectB = jsonB; ///
35
- result = compareObjects(objectA, objectB);
36
- break;
37
- }
38
- case _jsonTypes.PRIMITIVE_JSON_TYPE:
39
- {
40
- var primitiveA = jsonA, primitiveB = jsonB; ///
41
- result = comparePrimitives(primitiveA, primitiveB);
42
- break;
43
- }
44
- }
45
- }
46
- return result;
47
- }
48
- var _default = {
49
- compareJSON: compareJSON
50
- };
51
- function compareArrays(arrayA, arrayB) {
52
- var result;
53
- var arrayALength = arrayA.length, arrayBLength = arrayB.length;
54
- if (arrayALength === 0) {
55
- if (arrayBLength === 0) {
56
- result = _versionChanges.COSMETIC_VERSION_CHANGE;
57
- } else {
58
- result = _versionChanges.ADDITIVE_VERSION_CHANGE;
59
- }
60
- } else {
61
- if (arrayBLength === 0) {
62
- result = _versionChanges.BREAKING_VERSION_CHANGE;
63
- } else {
64
- var firstElementA = first(arrayA), elementA = firstElementA, elementB = arrayB.find(function(elementB) {
65
- var jsonA = elementA, jsonB = elementB, result = compareJSON(jsonA, jsonB);
66
- if (result === _versionChanges.COSMETIC_VERSION_CHANGE) {
67
- return true;
68
- }
69
- }) || null;
70
- if (elementB !== null) {
71
- arrayA = deleteElement(arrayA, elementA);
72
- arrayB = deleteElement(arrayB, elementB);
73
- result = compareArrays(arrayA, arrayB);
74
- } else {
75
- result = _versionChanges.BREAKING_VERSION_CHANGE;
76
- }
77
- }
78
- }
79
- return result;
80
- }
81
- function compareObjects(objectA, objectB) {
82
- var result;
83
- var keysA = Object.keys(objectA), keysB = Object.keys(objectB), keysALength = keysA.length, keysBLength = keysB.length;
84
- if (keysALength === 0) {
85
- if (keysBLength === 0) {
86
- result = _versionChanges.COSMETIC_VERSION_CHANGE;
87
- } else {
88
- result = _versionChanges.ADDITIVE_VERSION_CHANGE;
89
- }
90
- } else {
91
- if (keysBLength === 0) {
92
- result = _versionChanges.BREAKING_VERSION_CHANGE;
93
- } else {
94
- var firstKeyA = first(keysA), keyA = firstKeyA, keyB = keysB.find(function(keyB, index) {
95
- if (keyA === keyB) {
96
- var valueA = objectA[keyA], valueB = objectB[keyB], jsonA = valueA, jsonB = valueB, result = compareJSON(jsonA, jsonB);
97
- if (result === _versionChanges.COSMETIC_VERSION_CHANGE) {
98
- return true;
99
- }
100
- }
101
- }) || null;
102
- if (keyB !== null) {
103
- objectA = deleteKey(objectA, keyA);
104
- objectB = deleteKey(objectB, keyB);
105
- result = compareObjects(objectA, objectB);
106
- } else {
107
- result = _versionChanges.BREAKING_VERSION_CHANGE;
108
- }
109
- }
110
- }
111
- return result;
112
- }
113
- function comparePrimitives(primitiveA, primitiveB) {
114
- var result = _versionChanges.BREAKING_VERSION_CHANGE;
115
- if (primitiveA === primitiveB) {
116
- result = _versionChanges.COSMETIC_VERSION_CHANGE;
117
- }
118
- return result;
119
- }
120
- function typeOf(json) {
121
- var type;
122
- var _null = isNull(json), array = isArray(json), object = isObject(json), primitive = isPrimitive(json);
123
- if (_null) {
124
- type = _jsonTypes.NULL_JSON_TYPE;
125
- }
126
- if (array) {
127
- type = _jsonTypes.ARRAY_JSON_TYPE;
128
- }
129
- if (object) {
130
- type = _jsonTypes.OBJECT_JSON_TYPE;
131
- }
132
- if (primitive) {
133
- type = _jsonTypes.PRIMITIVE_JSON_TYPE;
134
- }
135
- return type;
136
- }
137
- function isNull(json) {
138
- var _null = json === null;
139
- return _null;
140
- }
141
- function isArray(json) {
142
- var array = Array.isArray(json);
143
- return array;
144
- }
145
- function isObject(json) {
146
- var array = isArray(json), primitive = isPrimitive(json), object = !array && !primitive;
147
- return object;
148
- }
149
- function isString(json) {
150
- var string = (typeof json === "undefined" ? "undefined" : _typeof(json)) === _constants.STRING;
151
- return string;
152
- }
153
- function isNumber(json) {
154
- var number = (typeof json === "undefined" ? "undefined" : _typeof(json)) === _constants.NUMBER;
155
- return number;
156
- }
157
- function isBoolean(json) {
158
- var boolean = (typeof json === "undefined" ? "undefined" : _typeof(json)) === _constants.BOOLEAN;
159
- return boolean;
160
- }
161
- function isPrimitive(json) {
162
- var _null = isNull(json), string = isString(json), number = isNumber(json), boolean = isBoolean(json), primitive = _null || string || number || boolean;
163
- return primitive;
164
- }
165
- function deleteElement(array, element) {
166
- var deletedElement = element; ///
167
- array = array.reduce(function(array, element) {
168
- if (element !== deletedElement) {
169
- array.push(element);
170
- }
171
- return array;
172
- }, []);
173
- return array;
174
- }
175
- function deleteKey(object, key) {
176
- var deletedKey = key, keys = Object.keys(object), values = Object.values(object);
177
- object = keys.reduce(function(object, key, index) {
178
- if (key !== deletedKey) {
179
- var value = values[index];
180
- object[key] = value;
181
- }
182
- return object;
183
- }, {});
184
- return object;
185
- }
186
-
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IFNUUklORywgTlVNQkVSLCBCT09MRUFOIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTlVMTF9KU09OX1RZUEUsIEFSUkFZX0pTT05fVFlQRSwgT0JKRUNUX0pTT05fVFlQRSwgUFJJTUlUSVZFX0pTT05fVFlQRSB9IGZyb20gXCIuLi9qc29uVHlwZXNcIjtcbmltcG9ydCB7IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFLCBBRERJVElWRV9WRVJTSU9OX0NIQU5HRSwgQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0UgfSBmcm9tIFwiLi4vdmVyc2lvbkNoYW5nZXNcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmZ1bmN0aW9uIGNvbXBhcmVKU09OKGpzb25BLCBqc29uQikge1xuICBsZXQgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG5cbiAgY29uc3QganNvbkFUeXBlID0gdHlwZU9mKGpzb25BKSxcbiAgICAgICAganNvbkJUeXBlID0gdHlwZU9mKGpzb25CKTtcblxuICBpZiAoanNvbkFUeXBlID09PSBqc29uQlR5cGUpIHtcbiAgICBjb25zdCBqc29uVHlwZSA9IGpzb25BVHlwZTsgLy8vXG5cbiAgICBzd2l0Y2ggKGpzb25UeXBlKSB7XG4gICAgICBjYXNlIEFSUkFZX0pTT05fVFlQRToge1xuICAgICAgICBjb25zdCBhcnJheUEgPSBqc29uQSwgLy8vXG4gICAgICAgICAgICAgIGFycmF5QiA9IGpzb25COyAvLy9cblxuICAgICAgICByZXN1bHQgPSBjb21wYXJlQXJyYXlzKGFycmF5QSwgYXJyYXlCKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBPQkpFQ1RfSlNPTl9UWVBFOiB7XG4gICAgICAgIGNvbnN0IG9iamVjdEEgPSBqc29uQSwgLy8vXG4gICAgICAgICAgICAgIG9iamVjdEIgPSBqc29uQjsgLy8vXG5cbiAgICAgICAgcmVzdWx0ID0gY29tcGFyZU9iamVjdHMob2JqZWN0QSwgb2JqZWN0Qik7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgUFJJTUlUSVZFX0pTT05fVFlQRToge1xuICAgICAgICBjb25zdCBwcmltaXRpdmVBID0ganNvbkEsIC8vL1xuICAgICAgICAgICAgICBwcmltaXRpdmVCID0ganNvbkI7IC8vL1xuXG4gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVQcmltaXRpdmVzKHByaW1pdGl2ZUEsIHByaW1pdGl2ZUIpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcGFyZUpTT05cbn07XG5cbmZ1bmN0aW9uIGNvbXBhcmVBcnJheXMoYXJyYXlBLCBhcnJheUIpIHtcbiAgbGV0IHJlc3VsdDtcblxuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggPT09IDApIHtcbiAgICBpZiAoYXJyYXlCTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQgPSBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gQURESVRJVkVfVkVSU0lPTl9DSEFOR0U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChhcnJheUJMZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaXJzdEVsZW1lbnRBID0gZmlyc3QoYXJyYXlBKSwgIC8vL1xuICAgICAgICAgICAgZWxlbWVudEEgPSBmaXJzdEVsZW1lbnRBLCAvLy9cbiAgICAgICAgICAgIGVsZW1lbnRCID0gYXJyYXlCLmZpbmQoKGVsZW1lbnRCKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGpzb25BID0gZWxlbWVudEEsIC8vL1xuICAgICAgICAgICAgICAgICAgICBqc29uQiA9IGVsZW1lbnRCLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUpTT04oanNvbkEsIGpzb25CKTtcblxuICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgICBpZiAoZWxlbWVudEIgIT09IG51bGwpIHtcbiAgICAgICAgYXJyYXlBID0gZGVsZXRlRWxlbWVudChhcnJheUEsIGVsZW1lbnRBKTtcblxuICAgICAgICBhcnJheUIgPSBkZWxldGVFbGVtZW50KGFycmF5QiwgZWxlbWVudEIpO1xuXG4gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVBcnJheXMoYXJyYXlBLCBhcnJheUIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29tcGFyZU9iamVjdHMob2JqZWN0QSwgb2JqZWN0Qikge1xuICBsZXQgcmVzdWx0O1xuXG4gIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMob2JqZWN0QSksXG4gICAgICAgIGtleXNCID0gT2JqZWN0LmtleXMob2JqZWN0QiksXG4gICAgICAgIGtleXNBTGVuZ3RoID0ga2V5c0EubGVuZ3RoLFxuICAgICAgICBrZXlzQkxlbmd0aCA9IGtleXNCLmxlbmd0aDtcblxuICBpZiAoa2V5c0FMZW5ndGggPT09IDApIHtcbiAgICBpZiAoa2V5c0JMZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBBRERJVElWRV9WRVJTSU9OX0NIQU5HRTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGtleXNCTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQgPSBCUkVBS0lOR19WRVJTSU9OX0NIQU5HRTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlyc3RLZXlBID0gZmlyc3Qoa2V5c0EpLCAgLy8vXG4gICAgICAgICAgICBrZXlBID0gZmlyc3RLZXlBLCAvLy9cbiAgICAgICAgICAgIGtleUIgPSBrZXlzQi5maW5kKChrZXlCLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoa2V5QSA9PT0ga2V5Qikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlQSA9IG9iamVjdEFba2V5QV0sXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVCID0gb2JqZWN0QltrZXlCXSxcbiAgICAgICAgICAgICAgICAgICAgICBqc29uQSA9IHZhbHVlQSwgLy8vXG4gICAgICAgICAgICAgICAgICAgICAganNvbkIgPSB2YWx1ZUIsIC8vL1xuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVKU09OKGpzb25BLCBqc29uQik7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRSkgeyAgLy8vXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICAgIGlmIChrZXlCICE9PSBudWxsKSB7XG4gICAgICAgIG9iamVjdEEgPSBkZWxldGVLZXkob2JqZWN0QSwga2V5QSk7XG5cbiAgICAgICAgb2JqZWN0QiA9IGRlbGV0ZUtleShvYmplY3RCLCBrZXlCKTtcblxuICAgICAgICByZXN1bHQgPSBjb21wYXJlT2JqZWN0cyhvYmplY3RBLCBvYmplY3RCKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVQcmltaXRpdmVzKHByaW1pdGl2ZUEsIHByaW1pdGl2ZUIpIHtcbiAgbGV0IHJlc3VsdCA9IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFO1xuXG4gIGlmIChwcmltaXRpdmVBID09PSBwcmltaXRpdmVCKSB7XG4gICAgcmVzdWx0ID0gQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0U7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB0eXBlT2YoanNvbikge1xuICBsZXQgdHlwZTtcblxuICBjb25zdCBfbnVsbCA9IGlzTnVsbChqc29uKSxcbiAgICAgICAgYXJyYXkgPSBpc0FycmF5KGpzb24pLFxuICAgICAgICBvYmplY3QgPSBpc09iamVjdChqc29uKSxcbiAgICAgICAgcHJpbWl0aXZlID0gaXNQcmltaXRpdmUoanNvbik7XG5cbiAgaWYgKF9udWxsKSB7XG4gICAgdHlwZSA9IE5VTExfSlNPTl9UWVBFO1xuICB9XG5cbiAgaWYgKGFycmF5KSB7XG4gICAgdHlwZSA9IEFSUkFZX0pTT05fVFlQRTtcbiAgfVxuXG4gIGlmIChvYmplY3QpIHtcbiAgICB0eXBlID0gT0JKRUNUX0pTT05fVFlQRTtcbiAgfVxuXG4gIGlmIChwcmltaXRpdmUpIHtcbiAgICB0eXBlID0gUFJJTUlUSVZFX0pTT05fVFlQRTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBpc051bGwoanNvbikge1xuICBjb25zdCBfbnVsbCA9IChqc29uID09PSBudWxsKTtcblxuICByZXR1cm4gX251bGw7XG59XG5cbmZ1bmN0aW9uIGlzQXJyYXkoanNvbikge1xuICBjb25zdCBhcnJheSA9IEFycmF5LmlzQXJyYXkoanNvbik7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChqc29uKSB7XG4gIGNvbnN0IGFycmF5ID0gaXNBcnJheShqc29uKSxcbiAgICAgICAgcHJpbWl0aXZlID0gaXNQcmltaXRpdmUoanNvbiksXG4gICAgICAgIG9iamVjdCA9ICghYXJyYXkgJiYgIXByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcoanNvbikge1xuICBjb25zdCBzdHJpbmcgPSAoKHR5cGVvZiBqc29uKSA9PT0gU1RSSU5HKTtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlcihqc29uKSB7XG4gIGNvbnN0IG51bWJlciA9ICgodHlwZW9mIGpzb24pID09PSBOVU1CRVIpO1xuXG4gIHJldHVybiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihqc29uKSB7XG4gIGNvbnN0IGJvb2xlYW4gPSAoKHR5cGVvZiBqc29uKSA9PT0gQk9PTEVBTik7XG5cbiAgcmV0dXJuIGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGpzb24pIHtcbiAgY29uc3QgX251bGwgPSBpc051bGwoanNvbiksXG4gICAgICAgIHN0cmluZyA9IGlzU3RyaW5nKGpzb24pLFxuICAgICAgICBudW1iZXIgPSBpc051bWJlcihqc29uKSxcbiAgICAgICAgYm9vbGVhbiA9IGlzQm9vbGVhbihqc29uKSxcbiAgICAgICAgcHJpbWl0aXZlID0gKF9udWxsIHx8IHN0cmluZyB8fCBudW1iZXIgfHwgYm9vbGVhbik7XG5cbiAgcmV0dXJuIHByaW1pdGl2ZTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlRWxlbWVudChhcnJheSwgZWxlbWVudCkge1xuICBjb25zdCBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gIGFycmF5ID0gYXJyYXkucmVkdWNlKChhcnJheSwgZWxlbWVudCkgPT4geyAgLy8vXG4gICAgaWYgKGVsZW1lbnQgIT09IGRlbGV0ZWRFbGVtZW50KSB7XG4gICAgICBhcnJheS5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnJheTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiBhcnJheTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlS2V5KG9iamVjdCwga2V5KSB7XG4gIGNvbnN0IGRlbGV0ZWRLZXkgPSBrZXksIC8vL1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgICAgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyhvYmplY3QpO1xuXG4gIG9iamVjdCA9IGtleXMucmVkdWNlKChvYmplY3QsIGtleSwgaW5kZXgpID0+IHsgIC8vL1xuICAgIGlmIChrZXkgIT09IGRlbGV0ZWRLZXkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW2luZGV4XTtcblxuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9LCB7fSk7XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cbiJdLCJuYW1lcyI6WyJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiY29tcGFyZUpTT04iLCJqc29uQSIsImpzb25CIiwicmVzdWx0IiwiQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0UiLCJqc29uQVR5cGUiLCJ0eXBlT2YiLCJqc29uQlR5cGUiLCJqc29uVHlwZSIsIkFSUkFZX0pTT05fVFlQRSIsImFycmF5QSIsImFycmF5QiIsImNvbXBhcmVBcnJheXMiLCJPQkpFQ1RfSlNPTl9UWVBFIiwib2JqZWN0QSIsIm9iamVjdEIiLCJjb21wYXJlT2JqZWN0cyIsIlBSSU1JVElWRV9KU09OX1RZUEUiLCJwcmltaXRpdmVBIiwicHJpbWl0aXZlQiIsImNvbXBhcmVQcmltaXRpdmVzIiwiYXJyYXlBTGVuZ3RoIiwibGVuZ3RoIiwiYXJyYXlCTGVuZ3RoIiwiQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0UiLCJBRERJVElWRV9WRVJTSU9OX0NIQU5HRSIsImZpcnN0RWxlbWVudEEiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiZmluZCIsImRlbGV0ZUVsZW1lbnQiLCJrZXlzQSIsIk9iamVjdCIsImtleXMiLCJrZXlzQiIsImtleXNBTGVuZ3RoIiwia2V5c0JMZW5ndGgiLCJmaXJzdEtleUEiLCJrZXlBIiwia2V5QiIsImluZGV4IiwidmFsdWVBIiwidmFsdWVCIiwiZGVsZXRlS2V5IiwianNvbiIsInR5cGUiLCJfbnVsbCIsImlzTnVsbCIsImFycmF5IiwiaXNBcnJheSIsIm9iamVjdCIsImlzT2JqZWN0IiwicHJpbWl0aXZlIiwiaXNQcmltaXRpdmUiLCJOVUxMX0pTT05fVFlQRSIsIkFycmF5IiwiaXNTdHJpbmciLCJzdHJpbmciLCJTVFJJTkciLCJpc051bWJlciIsIm51bWJlciIsIk5VTUJFUiIsImlzQm9vbGVhbiIsImJvb2xlYW4iLCJCT09MRUFOIiwiZWxlbWVudCIsImRlbGV0ZWRFbGVtZW50IiwicmVkdWNlIiwicHVzaCIsImtleSIsImRlbGV0ZWRLZXkiLCJ2YWx1ZXMiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBb0RBOzs7ZUFBQTs7O3lCQWxEK0I7eUJBRVM7eUJBQytDOzhCQUNHOzs7OztBQUUxRixJQUFNLEFBQUVBLFFBQVVDLHlCQUFjLENBQXhCRDtBQUVSLFNBQVNFLFlBQVlDLEtBQUssRUFBRUMsS0FBSyxFQUFFO0lBQ2pDLElBQUlDLFNBQVNDLHVDQUF1QjtJQUVwQyxJQUFNQyxZQUFZQyxPQUFPTCxRQUNuQk0sWUFBWUQsT0FBT0o7SUFFekIsSUFBSUcsY0FBY0UsV0FBVztRQUMzQixJQUFNQyxXQUFXSCxXQUFXLEdBQUc7UUFFL0IsT0FBUUc7WUFDTixLQUFLQywwQkFBZTtnQkFBRTtvQkFDcEIsSUFBTUMsU0FBU1QsT0FDVFUsU0FBU1QsT0FBTyxHQUFHO29CQUV6QkMsU0FBU1MsY0FBY0YsUUFBUUM7b0JBRS9CLEtBQU07Z0JBQ1I7WUFFQSxLQUFL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
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- matchBracketedNonTerminalNode: function() {
13
- return matchBracketedNonTerminalNode;
14
- },
15
- bracketedNonTerminalChildNodeFromChildNodes: function() {
16
- return bracketedNonTerminalChildNodeFromChildNodes;
17
- }
18
- });
19
- var _matcher = require("../matcher");
20
- var _array = require("../utilities/array");
21
- var _ruleNames = require("../ruleNames");
22
- var _constants = require("../constants");
23
- function matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB) {
24
- var bracketedNodeMatches = false;
25
- if (!bracketedNodeMatches) {
26
- var nonTerminalNodeMatches = _matcher.matcher.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
27
- bracketedNodeMatches = nonTerminalNodeMatches; ///
28
- }
29
- if (!bracketedNodeMatches) {
30
- var nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(), childNodesA = nonTerminalNodeAChildNodes, bracketedNonTerminalChildNodeA = bracketedNonTerminalChildNodeFromChildNodes(childNodesA);
31
- if (bracketedNonTerminalChildNodeA !== null) {
32
- var nodeA = bracketedNonTerminalChildNodeA, nodeB = nonTerminalNodeB, nodeMatches = _matcher.matcher.matchNode(nodeA, nodeB);
33
- bracketedNodeMatches = nodeMatches; ///
34
- }
35
- }
36
- if (!bracketedNodeMatches) {
37
- var nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(), childNodesB = nonTerminalNodeBChildNodes, bracketedNonTerminalChildNodeB = bracketedNonTerminalChildNodeFromChildNodes(childNodesB);
38
- if (bracketedNonTerminalChildNodeB !== null) {
39
- var nodeB1 = bracketedNonTerminalChildNodeB, nodeA1 = nonTerminalNodeA, nodeMatches1 = matchNode(nodeA1, nodeB1);
40
- bracketedNodeMatches = nodeMatches1; ///
41
- }
42
- }
43
- return bracketedNodeMatches;
44
- }
45
- function bracketedNonTerminalChildNodeFromChildNodes(childNodes) {
46
- var ruleName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : _ruleNames.METASTATEMENT_RULE_NAME;
47
- var bracketedNonTerminalChildNode = null;
48
- var childNodesLength = childNodes.length;
49
- if (childNodesLength === _constants.BRACKETED_CHILD_NODES_LENGTH) {
50
- var firstChildNode = (0, _array.first)(childNodes), thirdChildNode = (0, _array.third)(childNodes), secondChildNode = (0, _array.second)(childNodes), firstChildNodeTerminalNode = firstChildNode.isTerminalNode(), thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(), secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
51
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
52
- var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), nonTerminalNodeRuleNameRuleName = nonTerminalNodeRuleName === ruleName, firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET;
53
- if (nonTerminalNodeRuleNameRuleName && firstTerminalNodeContentLeftBracket && secondTerminalNodeContentRightBracket) {
54
- bracketedNonTerminalChildNode = nonTerminalNode; ///
55
- }
56
- }
57
- }
58
- return bracketedNonTerminalChildNode;
59
- }
60
-
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3Vic3RpdHV0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBtYXRjaGVyIH0gZnJvbSBcIi4uL21hdGNoZXJcIjtcbmltcG9ydCB7IGZpcnN0LCBzZWNvbmQsIHRoaXJkIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyBCUkFDS0VURURfQ0hJTERfTk9ERVNfTEVOR1RILCBMRUZUX0JSQUNLRVQsIFJJR0hUX0JSQUNLRVQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaEJyYWNrZXRlZE5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCKSB7XG4gIGxldCBicmFja2V0ZWROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGlmICghYnJhY2tldGVkTm9kZU1hdGNoZXMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlci5tYXRjaE5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCKTtcblxuICAgIGJyYWNrZXRlZE5vZGVNYXRjaGVzID0gbm9uVGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICB9XG5cbiAgaWYgKCFicmFja2V0ZWROb2RlTWF0Y2hlcykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUFDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlQS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGROb2Rlc0EgPSBub25UZXJtaW5hbE5vZGVBQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVBID0gYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzQSk7XG5cbiAgICBpZiAoYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVBICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlQSA9IGJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlQSwgIC8vL1xuICAgICAgICAgICAgbm9kZUIgPSBub25UZXJtaW5hbE5vZGVCLCAvLy9cbiAgICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hlci5tYXRjaE5vZGUobm9kZUEsIG5vZGVCKTtcblxuICAgICAgYnJhY2tldGVkTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgaWYgKCFicmFja2V0ZWROb2RlTWF0Y2hlcykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUJDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlQi5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGROb2Rlc0IgPSBub25UZXJtaW5hbE5vZGVCQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVCID0gYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzQik7XG5cbiAgICBpZiAoYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVCICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlQiA9IGJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlQiwgIC8vL1xuICAgICAgICAgICAgbm9kZUEgPSBub25UZXJtaW5hbE5vZGVBLCAvLy9cbiAgICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICAgIGJyYWNrZXRlZE5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWROb2RlTWF0Y2hlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2RlcywgcnVsZU5hbWUgPSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSkge1xuICBsZXQgYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gQlJBQ0tFVEVEX0NISUxEX05PREVTX0xFTkdUSCkge1xuICAgIGNvbnN0IGZpcnN0Q2hpbGROb2RlID0gZmlyc3QoY2hpbGROb2RlcyksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGUgPSB0aGlyZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBzZWNvbmRDaGlsZE5vZGUgPSBzZWNvbmQoY2hpbGROb2RlcyksXG4gICAgICAgICAgZmlyc3RDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSBmaXJzdENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHRoaXJkQ2hpbGROb2RlVGVybWluYWxOb2RlID0gdGhpcmRDaGlsZE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBzZWNvbmRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBzZWNvbmRDaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSAmJiBzZWNvbmRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGUgPSBmaXJzdENoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIGZpcnN0VGVybWluYWxOb2RlQ29udGVudCA9IGZpcnN0VGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPSBzZWNvbmRUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVSdWxlTmFtZSA9IChub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcnVsZU5hbWUpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50TGVmdEJyYWNrZXQgPSAoZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID09PSBMRUZUX0JSQUNLRVQpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudFJpZ2h0QnJhY2tldCA9IChzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50ID09PSBSSUdIVF9CUkFDS0VUKTtcblxuICAgICAgaWYgKG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lUnVsZU5hbWUgJiYgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50TGVmdEJyYWNrZXQgJiYgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudFJpZ2h0QnJhY2tldCkge1xuICAgICAgICBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJtYXRjaEJyYWNrZXRlZE5vblRlcm1pbmFsTm9kZSIsImJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsImJyYWNrZXRlZE5vZGVNYXRjaGVzIiwibm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoZXIiLCJtYXRjaE5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZUFDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNoaWxkTm9kZXNBIiwiYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVBIiwibm9kZUEiLCJub2RlQiIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwibm9uVGVybWluYWxOb2RlQkNoaWxkTm9kZXMiLCJjaGlsZE5vZGVzQiIsImJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlQiIsImNoaWxkTm9kZXMiLCJydWxlTmFtZSIsIk1FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwiYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGUiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiQlJBQ0tFVEVEX0NISUxEX05PREVTX0xFTkdUSCIsImZpcnN0Q2hpbGROb2RlIiwiZmlyc3QiLCJ0aGlyZENoaWxkTm9kZSIsInRoaXJkIiwic2Vjb25kQ2hpbGROb2RlIiwic2Vjb25kIiwiZmlyc3RDaGlsZE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRoaXJkQ2hpbGROb2RlVGVybWluYWxOb2RlIiwic2Vjb25kQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJmaXJzdFRlcm1pbmFsTm9kZSIsInNlY29uZFRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJnZXRDb250ZW50Iiwic2Vjb25kVGVybWluYWxOb2RlQ29udGVudCIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lUnVsZU5hbWUiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCIsIkxFRlRfQlJBQ0tFVCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQiLCJSSUdIVF9CUkFDS0VUIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFPZ0JBLDZCQUE2QjtlQUE3QkE7O0lBd0NBQywyQ0FBMkM7ZUFBM0NBOzs7dUJBN0NRO3FCQUNhO3lCQUNHO3lCQUNrQztBQUVuRSxTQUFTRCw4QkFBOEJFLGdCQUFnQixFQUFFQyxnQkFBZ0IsRUFBRTtJQUNoRixJQUFJQyx1QkFBdUIsS0FBSztJQUVoQyxJQUFJLENBQUNBLHNCQUFzQjtRQUN6QixJQUFNQyx5QkFBeUJDLGdCQUFPLENBQUNDLG9CQUFvQixDQUFDTCxrQkFBa0JDO1FBRTlFQyx1QkFBdUJDLHdCQUF5QixHQUFHO0lBQ3JELENBQUM7SUFFRCxJQUFJLENBQUNELHNCQUFzQjtRQUN6QixJQUFNSSw2QkFBNkJOLGlCQUFpQk8sYUFBYSxJQUMzREMsY0FBY0YsNEJBQ2RHLGlDQUFpQ1YsNENBQTRDUztRQUVuRixJQUFJQyxtQ0FBbUMsSUFBSSxFQUFFO1lBQzNDLElBQU1DLFFBQVFELGdDQUNSRSxRQUFRVixrQkFDUlcsY0FBY1IsZ0JBQU8sQ0FBQ1MsU0FBUyxDQUFDSCxPQUFPQztZQUU3Q1QsdUJBQXVCVSxhQUFhLEdBQUc7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUNWLHNCQUFzQjtRQUN6QixJQUFNWSw2QkFBNkJiLGlCQUFpQk0sYUFBYSxJQUMzRFEsY0FBY0QsNEJBQ2RFLGlDQUFpQ2pCLDRDQUE0Q2dCO1FBRW5GLElBQUlDLG1DQUFtQyxJQUFJLEVBQUU7WUFDM0MsSUFBTUwsU0FBUUssZ0NBQ1JOLFNBQVFWLGtCQUNSWSxlQUFjQyxVQUFVSCxRQUFPQztZQUVyQ1QsdUJBQXVCVSxjQUFhLEdBQUc7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPVjtBQUNUO0FBRU8sU0FBU0gsNENBQTRDa0IsVUFBVSxFQUFzQztRQUFwQ0MsV0FBQUEsaUVBQVdDLGtDQUF1QjtJQUN4RyxJQUFJQyxnQ0FBZ0MsSUFBSTtJQUV4QyxJQUFNQyxtQkFBbUJKLFdBQVdLLE1BQU07SUFFMUMsSUFBSUQscUJBQXFCRSx1Q0FBNEIsRUFBRTtRQUNyRCxJQUFNQyxpQkFBaUJDLElBQUFBLFlBQUssRUFBQ1IsYUFDdkJTLGlCQUFpQkMsSUFBQUEsWUFBSyxFQUFDVixhQUN2Qlcsa0JBQWtCQyxJQUFBQSxhQUFNLEVBQUNaLGFBQ3pCYSw2QkFBNkJOLGVBQWVPLGNBQWMsSUFDMURDLDZCQUE2Qk4sZUFBZUssY0FBYyxJQUMxREUsaUNBQWlDTCxnQkFBZ0JNLGlCQUFpQjtRQUV4RSxJQUFJSiw4QkFBOEJHLGtDQUFrQ0QsNEJBQTRCO1lBQzlGLElBQU1HLGtCQUFrQlAsaUJBQ2xCUSxvQkFBb0JaLGdCQUNwQmEscUJBQXFCWCxnQkFDckJZLDBCQUEwQkgsZ0JBQWdCSSxXQUFXLElBQ3JEQywyQkFBMkJKLGtCQUFrQkssVUFBVSxJQUN2REMsNEJBQTRCTCxtQkFBbUJJLFVBQVUsSUFDekRFLGtDQUFtQ0wsNEJBQTRCcEIsVUFDL0QwQixzQ0FBdUNKLDZCQUE2QkssdUJBQVksRUFDaEZDLHdDQUF5Q0osOEJBQThCSyx3QkFBYTtZQUUxRixJQUFJSixtQ0FBbUNDLHVDQUF1Q0UsdUNBQXVDO2dCQUNuSDFCLGdDQUFnQ2UsaUJBQWtCLEdBQUc7WUFDdkQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT2Y7QUFDVCJ9
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _versionChanges = require("../versionChanges");
12
- function updateVersion(version, versionChange) {
13
- switch(versionChange){
14
- case _versionChanges.BREAKING_VERSION_CHANGE:
15
- version.bumpMajorNumber();
16
- version.resetMinorNumber();
17
- version.resetPatchNumber();
18
- break;
19
- case _versionChanges.ADDITIVE_VERSION_CHANGE:
20
- version.bumpMinorNumber();
21
- version.resetPatchNumber();
22
- break;
23
- case _versionChanges.COSMETIC_VERSION_CHANGE:
24
- version.bumpPatchNumber();
25
- break;
26
- }
27
- }
28
- var _default = {
29
- updateVersion: updateVersion
30
- };
31
-
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0UsIEFERElUSVZFX1ZFUlNJT05fQ0hBTkdFLCBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRSB9IGZyb20gXCIuLi92ZXJzaW9uQ2hhbmdlc1wiO1xuXG5mdW5jdGlvbiB1cGRhdGVWZXJzaW9uKHZlcnNpb24sIHZlcnNpb25DaGFuZ2UpIHtcbiAgc3dpdGNoICh2ZXJzaW9uQ2hhbmdlKSB7XG4gICAgY2FzZSBCUkVBS0lOR19WRVJTSU9OX0NIQU5HRTpcbiAgICAgIHZlcnNpb24uYnVtcE1ham9yTnVtYmVyKCk7XG4gICAgICB2ZXJzaW9uLnJlc2V0TWlub3JOdW1iZXIoKTtcbiAgICAgIHZlcnNpb24ucmVzZXRQYXRjaE51bWJlcigpO1xuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgQURESVRJVkVfVkVSU0lPTl9DSEFOR0U6XG4gICAgICB2ZXJzaW9uLmJ1bXBNaW5vck51bWJlcigpO1xuICAgICAgdmVyc2lvbi5yZXNldFBhdGNoTnVtYmVyKCk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRTpcbiAgICAgIHZlcnNpb24uYnVtcFBhdGNoTnVtYmVyKCk7XG5cbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdXBkYXRlVmVyc2lvblxufTtcblxuIl0sIm5hbWVzIjpbInVwZGF0ZVZlcnNpb24iLCJ2ZXJzaW9uIiwidmVyc2lvbkNoYW5nZSIsIkJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFIiwiYnVtcE1ham9yTnVtYmVyIiwicmVzZXRNaW5vck51bWJlciIsInJlc2V0UGF0Y2hOdW1iZXIiLCJBRERJVElWRV9WRVJTSU9OX0NIQU5HRSIsImJ1bXBNaW5vck51bWJlciIsIkNPU01FVElDX1ZFUlNJT05fQ0hBTkdFIiwiYnVtcFBhdGNoTnVtYmVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEwQkE7OztlQUFBOzs7OEJBeEIwRjtBQUUxRixTQUFTQSxjQUFjQyxPQUFPLEVBQUVDLGFBQWEsRUFBRTtJQUM3QyxPQUFRQTtRQUNOLEtBQUtDLHVDQUF1QjtZQUMxQkYsUUFBUUcsZUFBZTtZQUN2QkgsUUFBUUksZ0JBQWdCO1lBQ3hCSixRQUFRSyxnQkFBZ0I7WUFFeEIsS0FBTTtRQUVSLEtBQUtDLHVDQUF1QjtZQUMxQk4sUUFBUU8sZUFBZTtZQUN2QlAsUUFBUUssZ0JBQWdCO1lBRXhCLEtBQU07UUFFUixLQUFLRyx1Q0FBdUI7WUFDMUJSLFFBQVFTLGVBQWU7WUFFdkIsS0FBTTtJQUNWO0FBQ0Y7SUFFQSxXQUFlO0lBQ2JWLGVBQUFBO0FBQ0YifQ==
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- BREAKING_VERSION_CHANGE: function() {
13
- return BREAKING_VERSION_CHANGE;
14
- },
15
- ADDITIVE_VERSION_CHANGE: function() {
16
- return ADDITIVE_VERSION_CHANGE;
17
- },
18
- COSMETIC_VERSION_CHANGE: function() {
19
- return COSMETIC_VERSION_CHANGE;
20
- },
21
- default: function() {
22
- return _default;
23
- }
24
- });
25
- var BREAKING_VERSION_CHANGE = "breaking";
26
- var ADDITIVE_VERSION_CHANGE = "additive";
27
- var COSMETIC_VERSION_CHANGE = "cosmetic";
28
- var _default = {
29
- BREAKING_VERSION_CHANGE: BREAKING_VERSION_CHANGE,
30
- ADDITIVE_VERSION_CHANGE: ADDITIVE_VERSION_CHANGE,
31
- COSMETIC_VERSION_CHANGE: COSMETIC_VERSION_CHANGE
32
- };
33
-
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uQ2hhbmdlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGNvbnN0IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFID0gXCJicmVha2luZ1wiO1xuZXhwb3J0IGNvbnN0IEFERElUSVZFX1ZFUlNJT05fQ0hBTkdFID0gXCJhZGRpdGl2ZVwiO1xuZXhwb3J0IGNvbnN0IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFID0gXCJjb3NtZXRpY1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFLFxuICBBRERJVElWRV9WRVJTSU9OX0NIQU5HRSxcbiAgQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0Vcbn07XG4iXSwibmFtZXMiOlsiQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0UiLCJBRERJVElWRV9WRVJTSU9OX0NIQU5HRSIsIkNPU01FVElDX1ZFUlNJT05fQ0hBTkdFIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFYUEsdUJBQXVCO2VBQXZCQTs7SUFDQUMsdUJBQXVCO2VBQXZCQTs7SUFDQUMsdUJBQXVCO2VBQXZCQTs7SUFFYixPQUlFO2VBSkY7OztBQUpPLElBQU1GLDBCQUEwQjtBQUNoQyxJQUFNQywwQkFBMEI7QUFDaEMsSUFBTUMsMEJBQTBCO0lBRXZDLFdBQWU7SUFDYkYseUJBQUFBO0lBQ0FDLHlCQUFBQTtJQUNBQyx5QkFBQUE7QUFDRiJ9
package/src/callbacks.js DELETED
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- const HALT_MESSAGE = "Halted verification.",
4
- BEGIN_MESSAGE = "Begun verification...",
5
- COMPLETED_MESSAGE = "...completed verification.";
6
-
7
- class Callbacks {
8
- constructor(halt, begin, complete) {
9
- this.halt = halt;
10
- this.begin = begin;
11
- this.complete = complete;
12
- }
13
-
14
- getHalt() {
15
- return this.halt;
16
- }
17
-
18
- getBegin() {
19
- return this.begin;
20
- }
21
-
22
- getComplete() {
23
- return this.complete;
24
- }
25
-
26
- static fromHaltBeginAndComplete(halt, begin, complete) {
27
- const callbacks = new Callbacks(halt, begin, complete);
28
-
29
- return callbacks;
30
- }
31
- }
32
-
33
- Object.assign(Callbacks, {
34
- HALT_MESSAGE,
35
- BEGIN_MESSAGE,
36
- COMPLETED_MESSAGE
37
- });
38
-
39
- export default Callbacks;
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- import { rewriteNodes } from "occam-grammar-utilities";
4
- import { lexersUtilities, parsersUtilities } from "occam-custom-grammars";
5
-
6
- import { combinedCustomGrammarFromNothing } from "../../utilities/customGrammar";
7
-
8
- const { florenceLexerFromCombinedCustomGrammar } = lexersUtilities,
9
- { florenceParserFromCombinedCustomGrammar } = parsersUtilities;
10
-
11
- const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
12
- florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar),
13
- florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
14
-
15
- class CombinatorReleaseContext {
16
- nodeFromContentAndRuleName(content, ruleName) {
17
- const ruleMap = florenceParser.getRuleMap(),
18
- rule = ruleMap[ruleName],
19
- tokens = florenceLexer.tokenise(content),
20
- node = florenceParser.parse(tokens, rule);
21
-
22
- if (node !== null) {
23
- rewriteNodes(node);
24
- }
25
-
26
- return node;
27
- }
28
-
29
- static fromNothing() {
30
- const combinatorReleaseContext = new CombinatorReleaseContext();
31
-
32
- return combinatorReleaseContext;
33
- }
34
- }
35
-
36
- const combinatorReleaseContext = CombinatorReleaseContext.fromNothing();
37
-
38
- export default combinatorReleaseContext;
39
-
package/src/jsonTypes.js DELETED
@@ -1,6 +0,0 @@
1
- "use strict";
2
-
3
- export const NULL_JSON_TYPE = "null";
4
- export const ARRAY_JSON_TYPE = "array";
5
- export const OBJECT_JSON_TYPE = "object";
6
- export const PRIMITIVE_JSON_TYPE = "primitive";
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- import MetastatementForMetavariableMatcher from "../../matcher/metastatementForMetavariable";
4
-
5
- class ConclusionMetastatementForMetavariableMatcher extends MetastatementForMetavariableMatcher {
6
- static createSubstitutions = false;
7
- }
8
-
9
- export const conclusionMetastatementForMetavariableMatcher = new ConclusionMetastatementForMetavariableMatcher();
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- import MetastatementForMetavariableMatcher from "../../matcher/metastatementForMetavariable";
4
-
5
- class PremiseMetastatementForMetavariableMatcher extends MetastatementForMetavariableMatcher {
6
- static createSubstitutions = true;
7
- }
8
-
9
- export const premiseMetastatementForMetavariableMatcher = new PremiseMetastatementForMetavariableMatcher();
@@ -1,99 +0,0 @@
1
- "use strict";
2
-
3
- import Matcher from "../matcher";
4
- import MetastatementForMetavariableSubstitution from "../substitution/metastatementForMetavariable";
5
-
6
- import { first } from "../utilities/array";
7
- import { metavariableNameFromMetavariableNode } from "../utilities/query";
8
- import { METAVARIABLE_RULE_NAME, METASTATEMENT_RULE_NAME } from "../ruleNames";
9
-
10
- export default class MetastatementForMetavariableMatcher extends Matcher {
11
- matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
12
- let nonTerminalNodeMatches = false;
13
-
14
- const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
15
- nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(),
16
- nonTerminalNodeARuleNameMetastatementRuleName = (nonTerminalNodeARuleName === METASTATEMENT_RULE_NAME),
17
- nonTerminalNodeBRuleNameMetastatementRuleName = (nonTerminalNodeBRuleName === METASTATEMENT_RULE_NAME);
18
-
19
- if (nonTerminalNodeARuleNameMetastatementRuleName && nonTerminalNodeBRuleNameMetastatementRuleName) {
20
- const metastatementNodeA = nonTerminalNodeA, ///
21
- metastatementNodeB = nonTerminalNodeB, ///
22
- metastatementNodeMatches = this.matchMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions);
23
-
24
- if (metastatementNodeMatches) {
25
- nonTerminalNodeMatches = true; ///
26
- } else {
27
- nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
28
- }
29
- } else if (nonTerminalNodeBRuleName === nonTerminalNodeARuleName) {
30
- nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
31
- }
32
-
33
- return nonTerminalNodeMatches;
34
- }
35
-
36
- matchMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions) {
37
- let metastatementNodeMatches = false;
38
-
39
- const nonTerminalNodeA = metastatementNodeA, ///
40
- nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
41
- nonTerminalNodeAChildNodesLength = nonTerminalNodeAChildNodes.length;
42
-
43
- if (nonTerminalNodeAChildNodesLength === 1) {
44
- const firstNonTerminalNodeAChildNode = first(nonTerminalNodeAChildNodes),
45
- cChildNodeA = firstNonTerminalNodeAChildNode, ///
46
- cChildNodeANonTerminalNode = cChildNodeA.isNonTerminalNode();
47
-
48
- if (cChildNodeANonTerminalNode) {
49
- const nonTerminalNodeA = cChildNodeA, ///
50
- nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
51
- nonTerminalNodeARuleNameMetavariableRuleName = (nonTerminalNodeARuleName === METAVARIABLE_RULE_NAME);
52
-
53
- if (nonTerminalNodeARuleNameMetavariableRuleName) {
54
- const metavariableNodeA = nonTerminalNodeA, ///
55
- metaVariableNodeMatches = this.matchMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions);
56
-
57
- metastatementNodeMatches = metaVariableNodeMatches; ///
58
- }
59
- }
60
- }
61
-
62
- return metastatementNodeMatches;
63
- }
64
-
65
- matchMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions) {
66
- let metavariableNodeMatches;
67
-
68
- const metavariableNameA = metavariableNameFromMetavariableNode(metavariableNodeA),
69
- substitution = substitutions.find((substitution) => {
70
- const metavariableName = substitution.getMetavariableName();
71
-
72
- if (metavariableName === metavariableNameA) {
73
- return true;
74
- }
75
- }) || null;
76
-
77
- if (substitution !== null) {
78
- const metastatementNode = metastatementNodeB, ///
79
- substitutionNodesMatch = substitution.matchMetastatementNode(metastatementNode);
80
-
81
- metavariableNodeMatches = substitutionNodesMatch; ///
82
- } else {
83
- const { createSubstitutions } = this.constructor;
84
-
85
- if (createSubstitutions) {
86
- const metavariableName = metavariableNameA, ///
87
- metastatementNode = metastatementNodeB, ///
88
- metastatementForMetavariableSubstitution = MetastatementForMetavariableSubstitution.fromMetavariableNameAndMetastatementNode(metavariableName, metastatementNode),
89
- substitution = metastatementForMetavariableSubstitution; ///
90
-
91
- substitutions.push(substitution);
92
- }
93
-
94
- metavariableNodeMatches = true;
95
- }
96
-
97
- return metavariableNodeMatches;
98
- }
99
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- import StatementForMetavariableMatcher from "../../matcher/statementForMetavariable";
4
-
5
- class ConclusionStatementForMetavariableMatcher extends StatementForMetavariableMatcher {
6
- static createSubstitutions = false;
7
- }
8
-
9
- export const conclusionStatementForMetavariableMatcher = new ConclusionStatementForMetavariableMatcher();
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- import StatementForMetavariableMatcher from "../../matcher/statementForMetavariable";
4
-
5
- class PremiseStatementForMetavariableMatcher extends StatementForMetavariableMatcher {
6
- static createSubstitutions = true;
7
- }
8
-
9
- export const premiseStatementForMetavariableMatcher = new PremiseStatementForMetavariableMatcher();