@polintpro/proposit-core 0.1.3 → 0.1.4

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 (107) hide show
  1. package/dist/cli/commands/analysis.d.ts.map +1 -1
  2. package/dist/cli/commands/analysis.js +87 -13
  3. package/dist/cli/commands/analysis.js.map +1 -1
  4. package/dist/cli/commands/arguments.d.ts.map +1 -1
  5. package/dist/cli/commands/arguments.js +27 -4
  6. package/dist/cli/commands/arguments.js.map +1 -1
  7. package/dist/cli/commands/diff.d.ts +3 -0
  8. package/dist/cli/commands/diff.d.ts.map +1 -0
  9. package/dist/cli/commands/diff.js +46 -0
  10. package/dist/cli/commands/diff.js.map +1 -0
  11. package/dist/cli/commands/premises.d.ts.map +1 -1
  12. package/dist/cli/commands/premises.js +22 -13
  13. package/dist/cli/commands/premises.js.map +1 -1
  14. package/dist/cli/commands/variables.d.ts.map +1 -1
  15. package/dist/cli/commands/variables.js +1 -0
  16. package/dist/cli/commands/variables.js.map +1 -1
  17. package/dist/cli/commands/versionShow.js +2 -2
  18. package/dist/cli/commands/versionShow.js.map +1 -1
  19. package/dist/cli/engine.d.ts +6 -0
  20. package/dist/cli/engine.d.ts.map +1 -1
  21. package/dist/cli/engine.js +41 -8
  22. package/dist/cli/engine.js.map +1 -1
  23. package/dist/cli/output/diffRenderer.d.ts +4 -0
  24. package/dist/cli/output/diffRenderer.d.ts.map +1 -0
  25. package/dist/cli/output/diffRenderer.js +102 -0
  26. package/dist/cli/output/diffRenderer.js.map +1 -0
  27. package/dist/cli/router.d.ts.map +1 -1
  28. package/dist/cli/router.js +1 -0
  29. package/dist/cli/router.js.map +1 -1
  30. package/dist/cli.js +2 -0
  31. package/dist/cli.js.map +1 -1
  32. package/dist/index.d.ts +13 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +12 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/lib/core/ArgumentEngine.d.ts +82 -4
  37. package/dist/lib/core/ArgumentEngine.d.ts.map +1 -1
  38. package/dist/lib/core/ArgumentEngine.js +102 -18
  39. package/dist/lib/core/ArgumentEngine.js.map +1 -1
  40. package/dist/lib/core/ExpressionManager.d.ts +52 -0
  41. package/dist/lib/core/ExpressionManager.d.ts.map +1 -1
  42. package/dist/lib/core/ExpressionManager.js +52 -3
  43. package/dist/lib/core/ExpressionManager.js.map +1 -1
  44. package/dist/lib/core/PremiseManager.d.ts +17 -4
  45. package/dist/lib/core/PremiseManager.d.ts.map +1 -1
  46. package/dist/lib/core/PremiseManager.js +48 -26
  47. package/dist/lib/core/PremiseManager.js.map +1 -1
  48. package/dist/lib/core/VariableManager.d.ts +34 -1
  49. package/dist/lib/core/VariableManager.d.ts.map +1 -1
  50. package/dist/lib/core/VariableManager.js +26 -0
  51. package/dist/lib/core/VariableManager.js.map +1 -1
  52. package/dist/lib/core/diff.d.ts +20 -0
  53. package/dist/lib/core/diff.d.ts.map +1 -0
  54. package/dist/lib/core/diff.js +213 -0
  55. package/dist/lib/core/diff.js.map +1 -0
  56. package/dist/lib/core/evaluation/shared.d.ts +17 -3
  57. package/dist/lib/core/evaluation/shared.d.ts.map +1 -1
  58. package/dist/lib/core/evaluation/shared.js +34 -2
  59. package/dist/lib/core/evaluation/shared.js.map +1 -1
  60. package/dist/lib/core/import.d.ts +14 -0
  61. package/dist/lib/core/import.d.ts.map +1 -0
  62. package/dist/lib/core/import.js +217 -0
  63. package/dist/lib/core/import.js.map +1 -0
  64. package/dist/lib/core/parser/formula-gen.js +850 -0
  65. package/dist/lib/core/parser/formula.d.ts +23 -0
  66. package/dist/lib/core/parser/formula.d.ts.map +1 -0
  67. package/dist/lib/core/parser/formula.js +7 -0
  68. package/dist/lib/core/parser/formula.js.map +1 -0
  69. package/dist/lib/index.d.ts +9 -0
  70. package/dist/lib/index.d.ts.map +1 -1
  71. package/dist/lib/index.js +8 -0
  72. package/dist/lib/index.js.map +1 -1
  73. package/dist/lib/schemata/analysis.d.ts +2 -1
  74. package/dist/lib/schemata/analysis.d.ts.map +1 -1
  75. package/dist/lib/schemata/analysis.js +5 -2
  76. package/dist/lib/schemata/analysis.js.map +1 -1
  77. package/dist/lib/schemata/argument.d.ts +13 -4
  78. package/dist/lib/schemata/argument.d.ts.map +1 -1
  79. package/dist/lib/schemata/argument.js +10 -2
  80. package/dist/lib/schemata/argument.js.map +1 -1
  81. package/dist/lib/schemata/import.d.ts +33 -0
  82. package/dist/lib/schemata/import.d.ts.map +1 -0
  83. package/dist/lib/schemata/import.js +18 -0
  84. package/dist/lib/schemata/import.js.map +1 -0
  85. package/dist/lib/schemata/index.d.ts +1 -0
  86. package/dist/lib/schemata/index.d.ts.map +1 -1
  87. package/dist/lib/schemata/index.js +1 -0
  88. package/dist/lib/schemata/index.js.map +1 -1
  89. package/dist/lib/schemata/propositional.d.ts +13 -2
  90. package/dist/lib/schemata/propositional.d.ts.map +1 -1
  91. package/dist/lib/schemata/propositional.js +25 -7
  92. package/dist/lib/schemata/propositional.js.map +1 -1
  93. package/dist/lib/types/diff.d.ts +56 -0
  94. package/dist/lib/types/diff.d.ts.map +1 -0
  95. package/dist/lib/types/diff.js +2 -0
  96. package/dist/lib/types/diff.js.map +1 -0
  97. package/dist/lib/types/evaluation.d.ts +96 -29
  98. package/dist/lib/types/evaluation.d.ts.map +1 -1
  99. package/dist/lib/utils/collections.d.ts +6 -0
  100. package/dist/lib/utils/collections.d.ts.map +1 -1
  101. package/dist/lib/utils/collections.js +6 -0
  102. package/dist/lib/utils/collections.js.map +1 -1
  103. package/dist/lib/utils.d.ts +7 -0
  104. package/dist/lib/utils.d.ts.map +1 -1
  105. package/dist/lib/utils.js +7 -5
  106. package/dist/lib/utils.js.map +1 -1
  107. package/package.json +14 -2
@@ -0,0 +1,850 @@
1
+ // @generated by Peggy 5.0.6.
2
+ //
3
+ // https://peggyjs.org/
4
+
5
+
6
+
7
+ // AST node constructors used by grammar actions
8
+ function variableNode(name) {
9
+ return { type: "variable", name };
10
+ }
11
+ function notNode(operand) {
12
+ return { type: "not", operand };
13
+ }
14
+ function binaryNode(type, left, right) {
15
+ return { type, left, right };
16
+ }
17
+ function naryNode(type, first, rest) {
18
+ if (rest.length === 0) return first;
19
+ return { type, operands: [first, ...rest] };
20
+ }
21
+
22
+ class peg$SyntaxError extends SyntaxError {
23
+ constructor(message, expected, found, location) {
24
+ super(message);
25
+ this.expected = expected;
26
+ this.found = found;
27
+ this.location = location;
28
+ this.name = "SyntaxError";
29
+ }
30
+
31
+ format(sources) {
32
+ let str = "Error: " + this.message;
33
+ if (this.location) {
34
+ let src = null;
35
+ const st = sources.find(s => s.source === this.location.source);
36
+ if (st) {
37
+ src = st.text.split(/\r\n|\n|\r/g);
38
+ }
39
+ const s = this.location.start;
40
+ const offset_s = (this.location.source && (typeof this.location.source.offset === "function"))
41
+ ? this.location.source.offset(s)
42
+ : s;
43
+ const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
44
+ if (src) {
45
+ const e = this.location.end;
46
+ const filler = "".padEnd(offset_s.line.toString().length, " ");
47
+ const line = src[s.line - 1];
48
+ const last = s.line === e.line ? e.column : line.length + 1;
49
+ const hatLen = (last - s.column) || 1;
50
+ str += "\n --> " + loc + "\n"
51
+ + filler + " |\n"
52
+ + offset_s.line + " | " + line + "\n"
53
+ + filler + " | " + "".padEnd(s.column - 1, " ")
54
+ + "".padEnd(hatLen, "^");
55
+ } else {
56
+ str += "\n at " + loc;
57
+ }
58
+ }
59
+ return str;
60
+ }
61
+
62
+ static buildMessage(expected, found) {
63
+ function hex(ch) {
64
+ return ch.codePointAt(0).toString(16).toUpperCase();
65
+ }
66
+
67
+ const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode")
68
+ ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu")
69
+ : null;
70
+ function unicodeEscape(s) {
71
+ if (nonPrintable) {
72
+ return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}");
73
+ }
74
+ return s;
75
+ }
76
+
77
+ function literalEscape(s) {
78
+ return unicodeEscape(s
79
+ .replace(/\\/g, "\\\\")
80
+ .replace(/"/g, "\\\"")
81
+ .replace(/\0/g, "\\0")
82
+ .replace(/\t/g, "\\t")
83
+ .replace(/\n/g, "\\n")
84
+ .replace(/\r/g, "\\r")
85
+ .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch))
86
+ .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch)));
87
+ }
88
+
89
+ function classEscape(s) {
90
+ return unicodeEscape(s
91
+ .replace(/\\/g, "\\\\")
92
+ .replace(/\]/g, "\\]")
93
+ .replace(/\^/g, "\\^")
94
+ .replace(/-/g, "\\-")
95
+ .replace(/\0/g, "\\0")
96
+ .replace(/\t/g, "\\t")
97
+ .replace(/\n/g, "\\n")
98
+ .replace(/\r/g, "\\r")
99
+ .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch))
100
+ .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch)));
101
+ }
102
+
103
+ const DESCRIBE_EXPECTATION_FNS = {
104
+ literal(expectation) {
105
+ return "\"" + literalEscape(expectation.text) + "\"";
106
+ },
107
+
108
+ class(expectation) {
109
+ const escapedParts = expectation.parts.map(
110
+ part => (Array.isArray(part)
111
+ ? classEscape(part[0]) + "-" + classEscape(part[1])
112
+ : classEscape(part))
113
+ );
114
+
115
+ return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : "");
116
+ },
117
+
118
+ any() {
119
+ return "any character";
120
+ },
121
+
122
+ end() {
123
+ return "end of input";
124
+ },
125
+
126
+ other(expectation) {
127
+ return expectation.description;
128
+ },
129
+ };
130
+
131
+ function describeExpectation(expectation) {
132
+ return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
133
+ }
134
+
135
+ function describeExpected(expected) {
136
+ const descriptions = expected.map(describeExpectation);
137
+ descriptions.sort();
138
+
139
+ if (descriptions.length > 0) {
140
+ let j = 1;
141
+ for (let i = 1; i < descriptions.length; i++) {
142
+ if (descriptions[i - 1] !== descriptions[i]) {
143
+ descriptions[j] = descriptions[i];
144
+ j++;
145
+ }
146
+ }
147
+ descriptions.length = j;
148
+ }
149
+
150
+ switch (descriptions.length) {
151
+ case 1:
152
+ return descriptions[0];
153
+
154
+ case 2:
155
+ return descriptions[0] + " or " + descriptions[1];
156
+
157
+ default:
158
+ return descriptions.slice(0, -1).join(", ")
159
+ + ", or "
160
+ + descriptions[descriptions.length - 1];
161
+ }
162
+ }
163
+
164
+ function describeFound(found) {
165
+ return found ? "\"" + literalEscape(found) + "\"" : "end of input";
166
+ }
167
+
168
+ return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
169
+ }
170
+ }
171
+
172
+ function peg$parse(input, options) {
173
+ options = options !== undefined ? options : {};
174
+
175
+ const peg$FAILED = {};
176
+ const peg$source = options.grammarSource;
177
+
178
+ const peg$startRuleFunctions = {
179
+ Formula: peg$parseFormula,
180
+ };
181
+ let peg$startRuleFunction = peg$parseFormula;
182
+
183
+ const peg$c0 = "\u2192";
184
+ const peg$c1 = "->";
185
+ const peg$c2 = "\u2194";
186
+ const peg$c3 = "<->";
187
+ const peg$c4 = "\u2228";
188
+ const peg$c5 = "||";
189
+ const peg$c6 = "\u2227";
190
+ const peg$c7 = "&&";
191
+ const peg$c8 = "(";
192
+ const peg$c9 = ")";
193
+
194
+ const peg$r0 = /^[!\xAC]/;
195
+ const peg$r1 = /^[A-Za-z_]/;
196
+ const peg$r2 = /^[A-Za-z0-9_]/;
197
+ const peg$r3 = /^[ \t\n\r]/;
198
+
199
+ const peg$e0 = peg$literalExpectation("\u2192", false);
200
+ const peg$e1 = peg$literalExpectation("->", false);
201
+ const peg$e2 = peg$literalExpectation("\u2194", false);
202
+ const peg$e3 = peg$literalExpectation("<->", false);
203
+ const peg$e4 = peg$literalExpectation("\u2228", false);
204
+ const peg$e5 = peg$literalExpectation("||", false);
205
+ const peg$e6 = peg$literalExpectation("\u2227", false);
206
+ const peg$e7 = peg$literalExpectation("&&", false);
207
+ const peg$e8 = peg$classExpectation(["!", "\xAC"], false, false, false);
208
+ const peg$e9 = peg$literalExpectation("(", false);
209
+ const peg$e10 = peg$literalExpectation(")", false);
210
+ const peg$e11 = peg$classExpectation([["A", "Z"], ["a", "z"], "_"], false, false, false);
211
+ const peg$e12 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "_"], false, false, false);
212
+ const peg$e13 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false, false);
213
+
214
+ function peg$f0(expr) { return expr; }
215
+ function peg$f1(left, op, right) {
216
+ const type = (op === "→" || op === "->") ? "implies" : "iff";
217
+ return binaryNode(type, left, right);
218
+ }
219
+ function peg$f2(first, c) { return c; }
220
+ function peg$f3(first, rest) {
221
+ return naryNode("or", first, rest);
222
+ }
223
+ function peg$f4(first, u) { return u; }
224
+ function peg$f5(first, rest) {
225
+ return naryNode("and", first, rest);
226
+ }
227
+ function peg$f6(operand) { return notNode(operand); }
228
+ function peg$f7(expr) { return expr; }
229
+ function peg$f8(name) { return variableNode(name); }
230
+ let peg$currPos = options.peg$currPos | 0;
231
+ let peg$savedPos = peg$currPos;
232
+ const peg$posDetailsCache = [{ line: 1, column: 1 }];
233
+ let peg$maxFailPos = peg$currPos;
234
+ let peg$maxFailExpected = options.peg$maxFailExpected || [];
235
+ let peg$silentFails = options.peg$silentFails | 0;
236
+
237
+ let peg$result;
238
+
239
+ if (options.startRule) {
240
+ if (!(options.startRule in peg$startRuleFunctions)) {
241
+ throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
242
+ }
243
+
244
+ peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
245
+ }
246
+
247
+ function text() {
248
+ return input.substring(peg$savedPos, peg$currPos);
249
+ }
250
+
251
+ function offset() {
252
+ return peg$savedPos;
253
+ }
254
+
255
+ function range() {
256
+ return {
257
+ source: peg$source,
258
+ start: peg$savedPos,
259
+ end: peg$currPos,
260
+ };
261
+ }
262
+
263
+ function location() {
264
+ return peg$computeLocation(peg$savedPos, peg$currPos);
265
+ }
266
+
267
+ function expected(description, location) {
268
+ location = location !== undefined
269
+ ? location
270
+ : peg$computeLocation(peg$savedPos, peg$currPos);
271
+
272
+ throw peg$buildStructuredError(
273
+ [peg$otherExpectation(description)],
274
+ input.substring(peg$savedPos, peg$currPos),
275
+ location
276
+ );
277
+ }
278
+
279
+ function error(message, location) {
280
+ location = location !== undefined
281
+ ? location
282
+ : peg$computeLocation(peg$savedPos, peg$currPos);
283
+
284
+ throw peg$buildSimpleError(message, location);
285
+ }
286
+
287
+ function peg$getUnicode(pos = peg$currPos) {
288
+ const cp = input.codePointAt(pos);
289
+ if (cp === undefined) {
290
+ return "";
291
+ }
292
+ return String.fromCodePoint(cp);
293
+ }
294
+
295
+ function peg$literalExpectation(text, ignoreCase) {
296
+ return { type: "literal", text, ignoreCase };
297
+ }
298
+
299
+ function peg$classExpectation(parts, inverted, ignoreCase, unicode) {
300
+ return { type: "class", parts, inverted, ignoreCase, unicode };
301
+ }
302
+
303
+ function peg$anyExpectation() {
304
+ return { type: "any" };
305
+ }
306
+
307
+ function peg$endExpectation() {
308
+ return { type: "end" };
309
+ }
310
+
311
+ function peg$otherExpectation(description) {
312
+ return { type: "other", description };
313
+ }
314
+
315
+ function peg$computePosDetails(pos) {
316
+ let details = peg$posDetailsCache[pos];
317
+ let p;
318
+
319
+ if (details) {
320
+ return details;
321
+ } else {
322
+ if (pos >= peg$posDetailsCache.length) {
323
+ p = peg$posDetailsCache.length - 1;
324
+ } else {
325
+ p = pos;
326
+ while (!peg$posDetailsCache[--p]) {}
327
+ }
328
+
329
+ details = peg$posDetailsCache[p];
330
+ details = {
331
+ line: details.line,
332
+ column: details.column,
333
+ };
334
+
335
+ while (p < pos) {
336
+ if (input.charCodeAt(p) === 10) {
337
+ details.line++;
338
+ details.column = 1;
339
+ } else {
340
+ details.column++;
341
+ }
342
+
343
+ p++;
344
+ }
345
+
346
+ peg$posDetailsCache[pos] = details;
347
+
348
+ return details;
349
+ }
350
+ }
351
+
352
+ function peg$computeLocation(startPos, endPos, offset) {
353
+ const startPosDetails = peg$computePosDetails(startPos);
354
+ const endPosDetails = peg$computePosDetails(endPos);
355
+
356
+ const res = {
357
+ source: peg$source,
358
+ start: {
359
+ offset: startPos,
360
+ line: startPosDetails.line,
361
+ column: startPosDetails.column,
362
+ },
363
+ end: {
364
+ offset: endPos,
365
+ line: endPosDetails.line,
366
+ column: endPosDetails.column,
367
+ },
368
+ };
369
+ if (offset && peg$source && (typeof peg$source.offset === "function")) {
370
+ res.start = peg$source.offset(res.start);
371
+ res.end = peg$source.offset(res.end);
372
+ }
373
+ return res;
374
+ }
375
+
376
+ function peg$fail(expected) {
377
+ if (peg$currPos < peg$maxFailPos) { return; }
378
+
379
+ if (peg$currPos > peg$maxFailPos) {
380
+ peg$maxFailPos = peg$currPos;
381
+ peg$maxFailExpected = [];
382
+ }
383
+
384
+ peg$maxFailExpected.push(expected);
385
+ }
386
+
387
+ function peg$buildSimpleError(message, location) {
388
+ return new peg$SyntaxError(message, null, null, location);
389
+ }
390
+
391
+ function peg$buildStructuredError(expected, found, location) {
392
+ return new peg$SyntaxError(
393
+ peg$SyntaxError.buildMessage(expected, found),
394
+ expected,
395
+ found,
396
+ location
397
+ );
398
+ }
399
+
400
+ function peg$parseFormula() {
401
+ let s0, s1, s2, s3;
402
+
403
+ s0 = peg$currPos;
404
+ s1 = peg$parse_();
405
+ s2 = peg$parseImplication();
406
+ if (s2 !== peg$FAILED) {
407
+ s3 = peg$parse_();
408
+ peg$savedPos = s0;
409
+ s0 = peg$f0(s2);
410
+ } else {
411
+ peg$currPos = s0;
412
+ s0 = peg$FAILED;
413
+ }
414
+
415
+ return s0;
416
+ }
417
+
418
+ function peg$parseImplication() {
419
+ let s0, s1, s2, s3, s4, s5;
420
+
421
+ s0 = peg$currPos;
422
+ s1 = peg$parseDisjunction();
423
+ if (s1 !== peg$FAILED) {
424
+ s2 = peg$parse_();
425
+ if (input.charCodeAt(peg$currPos) === 8594) {
426
+ s3 = peg$c0;
427
+ peg$currPos++;
428
+ } else {
429
+ s3 = peg$FAILED;
430
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
431
+ }
432
+ if (s3 === peg$FAILED) {
433
+ if (input.substr(peg$currPos, 2) === peg$c1) {
434
+ s3 = peg$c1;
435
+ peg$currPos += 2;
436
+ } else {
437
+ s3 = peg$FAILED;
438
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
439
+ }
440
+ if (s3 === peg$FAILED) {
441
+ if (input.charCodeAt(peg$currPos) === 8596) {
442
+ s3 = peg$c2;
443
+ peg$currPos++;
444
+ } else {
445
+ s3 = peg$FAILED;
446
+ if (peg$silentFails === 0) { peg$fail(peg$e2); }
447
+ }
448
+ if (s3 === peg$FAILED) {
449
+ if (input.substr(peg$currPos, 3) === peg$c3) {
450
+ s3 = peg$c3;
451
+ peg$currPos += 3;
452
+ } else {
453
+ s3 = peg$FAILED;
454
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
455
+ }
456
+ }
457
+ }
458
+ }
459
+ if (s3 !== peg$FAILED) {
460
+ s4 = peg$parse_();
461
+ s5 = peg$parseDisjunction();
462
+ if (s5 !== peg$FAILED) {
463
+ peg$savedPos = s0;
464
+ s0 = peg$f1(s1, s3, s5);
465
+ } else {
466
+ peg$currPos = s0;
467
+ s0 = peg$FAILED;
468
+ }
469
+ } else {
470
+ peg$currPos = s0;
471
+ s0 = peg$FAILED;
472
+ }
473
+ } else {
474
+ peg$currPos = s0;
475
+ s0 = peg$FAILED;
476
+ }
477
+ if (s0 === peg$FAILED) {
478
+ s0 = peg$parseDisjunction();
479
+ }
480
+
481
+ return s0;
482
+ }
483
+
484
+ function peg$parseDisjunction() {
485
+ let s0, s1, s2, s3, s4, s5, s6, s7;
486
+
487
+ s0 = peg$currPos;
488
+ s1 = peg$parseConjunction();
489
+ if (s1 !== peg$FAILED) {
490
+ s2 = [];
491
+ s3 = peg$currPos;
492
+ s4 = peg$parse_();
493
+ if (input.charCodeAt(peg$currPos) === 8744) {
494
+ s5 = peg$c4;
495
+ peg$currPos++;
496
+ } else {
497
+ s5 = peg$FAILED;
498
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
499
+ }
500
+ if (s5 === peg$FAILED) {
501
+ if (input.substr(peg$currPos, 2) === peg$c5) {
502
+ s5 = peg$c5;
503
+ peg$currPos += 2;
504
+ } else {
505
+ s5 = peg$FAILED;
506
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
507
+ }
508
+ }
509
+ if (s5 !== peg$FAILED) {
510
+ s6 = peg$parse_();
511
+ s7 = peg$parseConjunction();
512
+ if (s7 !== peg$FAILED) {
513
+ peg$savedPos = s3;
514
+ s3 = peg$f2(s1, s7);
515
+ } else {
516
+ peg$currPos = s3;
517
+ s3 = peg$FAILED;
518
+ }
519
+ } else {
520
+ peg$currPos = s3;
521
+ s3 = peg$FAILED;
522
+ }
523
+ while (s3 !== peg$FAILED) {
524
+ s2.push(s3);
525
+ s3 = peg$currPos;
526
+ s4 = peg$parse_();
527
+ if (input.charCodeAt(peg$currPos) === 8744) {
528
+ s5 = peg$c4;
529
+ peg$currPos++;
530
+ } else {
531
+ s5 = peg$FAILED;
532
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
533
+ }
534
+ if (s5 === peg$FAILED) {
535
+ if (input.substr(peg$currPos, 2) === peg$c5) {
536
+ s5 = peg$c5;
537
+ peg$currPos += 2;
538
+ } else {
539
+ s5 = peg$FAILED;
540
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
541
+ }
542
+ }
543
+ if (s5 !== peg$FAILED) {
544
+ s6 = peg$parse_();
545
+ s7 = peg$parseConjunction();
546
+ if (s7 !== peg$FAILED) {
547
+ peg$savedPos = s3;
548
+ s3 = peg$f2(s1, s7);
549
+ } else {
550
+ peg$currPos = s3;
551
+ s3 = peg$FAILED;
552
+ }
553
+ } else {
554
+ peg$currPos = s3;
555
+ s3 = peg$FAILED;
556
+ }
557
+ }
558
+ peg$savedPos = s0;
559
+ s0 = peg$f3(s1, s2);
560
+ } else {
561
+ peg$currPos = s0;
562
+ s0 = peg$FAILED;
563
+ }
564
+
565
+ return s0;
566
+ }
567
+
568
+ function peg$parseConjunction() {
569
+ let s0, s1, s2, s3, s4, s5, s6, s7;
570
+
571
+ s0 = peg$currPos;
572
+ s1 = peg$parseUnary();
573
+ if (s1 !== peg$FAILED) {
574
+ s2 = [];
575
+ s3 = peg$currPos;
576
+ s4 = peg$parse_();
577
+ if (input.charCodeAt(peg$currPos) === 8743) {
578
+ s5 = peg$c6;
579
+ peg$currPos++;
580
+ } else {
581
+ s5 = peg$FAILED;
582
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
583
+ }
584
+ if (s5 === peg$FAILED) {
585
+ if (input.substr(peg$currPos, 2) === peg$c7) {
586
+ s5 = peg$c7;
587
+ peg$currPos += 2;
588
+ } else {
589
+ s5 = peg$FAILED;
590
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
591
+ }
592
+ }
593
+ if (s5 !== peg$FAILED) {
594
+ s6 = peg$parse_();
595
+ s7 = peg$parseUnary();
596
+ if (s7 !== peg$FAILED) {
597
+ peg$savedPos = s3;
598
+ s3 = peg$f4(s1, s7);
599
+ } else {
600
+ peg$currPos = s3;
601
+ s3 = peg$FAILED;
602
+ }
603
+ } else {
604
+ peg$currPos = s3;
605
+ s3 = peg$FAILED;
606
+ }
607
+ while (s3 !== peg$FAILED) {
608
+ s2.push(s3);
609
+ s3 = peg$currPos;
610
+ s4 = peg$parse_();
611
+ if (input.charCodeAt(peg$currPos) === 8743) {
612
+ s5 = peg$c6;
613
+ peg$currPos++;
614
+ } else {
615
+ s5 = peg$FAILED;
616
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
617
+ }
618
+ if (s5 === peg$FAILED) {
619
+ if (input.substr(peg$currPos, 2) === peg$c7) {
620
+ s5 = peg$c7;
621
+ peg$currPos += 2;
622
+ } else {
623
+ s5 = peg$FAILED;
624
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
625
+ }
626
+ }
627
+ if (s5 !== peg$FAILED) {
628
+ s6 = peg$parse_();
629
+ s7 = peg$parseUnary();
630
+ if (s7 !== peg$FAILED) {
631
+ peg$savedPos = s3;
632
+ s3 = peg$f4(s1, s7);
633
+ } else {
634
+ peg$currPos = s3;
635
+ s3 = peg$FAILED;
636
+ }
637
+ } else {
638
+ peg$currPos = s3;
639
+ s3 = peg$FAILED;
640
+ }
641
+ }
642
+ peg$savedPos = s0;
643
+ s0 = peg$f5(s1, s2);
644
+ } else {
645
+ peg$currPos = s0;
646
+ s0 = peg$FAILED;
647
+ }
648
+
649
+ return s0;
650
+ }
651
+
652
+ function peg$parseUnary() {
653
+ let s0, s1, s2, s3;
654
+
655
+ s0 = peg$currPos;
656
+ s1 = input.charAt(peg$currPos);
657
+ if (peg$r0.test(s1)) {
658
+ peg$currPos++;
659
+ } else {
660
+ s1 = peg$FAILED;
661
+ if (peg$silentFails === 0) { peg$fail(peg$e8); }
662
+ }
663
+ if (s1 !== peg$FAILED) {
664
+ s2 = peg$parse_();
665
+ s3 = peg$parseUnary();
666
+ if (s3 !== peg$FAILED) {
667
+ peg$savedPos = s0;
668
+ s0 = peg$f6(s3);
669
+ } else {
670
+ peg$currPos = s0;
671
+ s0 = peg$FAILED;
672
+ }
673
+ } else {
674
+ peg$currPos = s0;
675
+ s0 = peg$FAILED;
676
+ }
677
+ if (s0 === peg$FAILED) {
678
+ s0 = peg$parseAtom();
679
+ }
680
+
681
+ return s0;
682
+ }
683
+
684
+ function peg$parseAtom() {
685
+ let s0, s1, s2, s3, s4, s5;
686
+
687
+ s0 = peg$currPos;
688
+ if (input.charCodeAt(peg$currPos) === 40) {
689
+ s1 = peg$c8;
690
+ peg$currPos++;
691
+ } else {
692
+ s1 = peg$FAILED;
693
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
694
+ }
695
+ if (s1 !== peg$FAILED) {
696
+ s2 = peg$parse_();
697
+ s3 = peg$parseImplication();
698
+ if (s3 !== peg$FAILED) {
699
+ s4 = peg$parse_();
700
+ if (input.charCodeAt(peg$currPos) === 41) {
701
+ s5 = peg$c9;
702
+ peg$currPos++;
703
+ } else {
704
+ s5 = peg$FAILED;
705
+ if (peg$silentFails === 0) { peg$fail(peg$e10); }
706
+ }
707
+ if (s5 !== peg$FAILED) {
708
+ peg$savedPos = s0;
709
+ s0 = peg$f7(s3);
710
+ } else {
711
+ peg$currPos = s0;
712
+ s0 = peg$FAILED;
713
+ }
714
+ } else {
715
+ peg$currPos = s0;
716
+ s0 = peg$FAILED;
717
+ }
718
+ } else {
719
+ peg$currPos = s0;
720
+ s0 = peg$FAILED;
721
+ }
722
+ if (s0 === peg$FAILED) {
723
+ s0 = peg$currPos;
724
+ s1 = peg$parseIdentifier();
725
+ if (s1 !== peg$FAILED) {
726
+ peg$savedPos = s0;
727
+ s1 = peg$f8(s1);
728
+ }
729
+ s0 = s1;
730
+ }
731
+
732
+ return s0;
733
+ }
734
+
735
+ function peg$parseIdentifier() {
736
+ let s0, s1, s2, s3, s4;
737
+
738
+ s0 = peg$currPos;
739
+ s1 = peg$currPos;
740
+ s2 = input.charAt(peg$currPos);
741
+ if (peg$r1.test(s2)) {
742
+ peg$currPos++;
743
+ } else {
744
+ s2 = peg$FAILED;
745
+ if (peg$silentFails === 0) { peg$fail(peg$e11); }
746
+ }
747
+ if (s2 !== peg$FAILED) {
748
+ s3 = [];
749
+ s4 = input.charAt(peg$currPos);
750
+ if (peg$r2.test(s4)) {
751
+ peg$currPos++;
752
+ } else {
753
+ s4 = peg$FAILED;
754
+ if (peg$silentFails === 0) { peg$fail(peg$e12); }
755
+ }
756
+ while (s4 !== peg$FAILED) {
757
+ s3.push(s4);
758
+ s4 = input.charAt(peg$currPos);
759
+ if (peg$r2.test(s4)) {
760
+ peg$currPos++;
761
+ } else {
762
+ s4 = peg$FAILED;
763
+ if (peg$silentFails === 0) { peg$fail(peg$e12); }
764
+ }
765
+ }
766
+ s2 = [s2, s3];
767
+ s1 = s2;
768
+ } else {
769
+ peg$currPos = s1;
770
+ s1 = peg$FAILED;
771
+ }
772
+ if (s1 !== peg$FAILED) {
773
+ s0 = input.substring(s0, peg$currPos);
774
+ } else {
775
+ s0 = s1;
776
+ }
777
+
778
+ return s0;
779
+ }
780
+
781
+ function peg$parse_() {
782
+ let s0, s1;
783
+
784
+ peg$silentFails++;
785
+ s0 = [];
786
+ s1 = input.charAt(peg$currPos);
787
+ if (peg$r3.test(s1)) {
788
+ peg$currPos++;
789
+ } else {
790
+ s1 = peg$FAILED;
791
+ if (peg$silentFails === 0) { peg$fail(peg$e13); }
792
+ }
793
+ while (s1 !== peg$FAILED) {
794
+ s0.push(s1);
795
+ s1 = input.charAt(peg$currPos);
796
+ if (peg$r3.test(s1)) {
797
+ peg$currPos++;
798
+ } else {
799
+ s1 = peg$FAILED;
800
+ if (peg$silentFails === 0) { peg$fail(peg$e13); }
801
+ }
802
+ }
803
+ peg$silentFails--;
804
+
805
+ return s0;
806
+ }
807
+
808
+ peg$result = peg$startRuleFunction();
809
+
810
+ const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length);
811
+ function peg$throw() {
812
+ if (peg$result !== peg$FAILED && peg$currPos < input.length) {
813
+ peg$fail(peg$endExpectation());
814
+ }
815
+
816
+ throw peg$buildStructuredError(
817
+ peg$maxFailExpected,
818
+ peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,
819
+ peg$maxFailPos < input.length
820
+ ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
821
+ : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
822
+ );
823
+ }
824
+ if (options.peg$library) {
825
+ return /** @type {any} */ ({
826
+ peg$result,
827
+ peg$currPos,
828
+ peg$FAILED,
829
+ peg$maxFailExpected,
830
+ peg$maxFailPos,
831
+ peg$success,
832
+ peg$throw: peg$success ? undefined : peg$throw,
833
+ });
834
+ }
835
+ if (peg$success) {
836
+ return peg$result;
837
+ } else {
838
+ peg$throw();
839
+ }
840
+ }
841
+
842
+ const peg$allowedStartRules = [
843
+ "Formula"
844
+ ];
845
+
846
+ export {
847
+ peg$allowedStartRules as StartRules,
848
+ peg$SyntaxError as SyntaxError,
849
+ peg$parse as parse
850
+ };