wikipeg 6.1.1 → 6.1.3

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.
@@ -0,0 +1,1367 @@
1
+ module.exports = ( function () {
2
+
3
+ "use strict";
4
+ /*
5
+ * Generated by WikiPEG
6
+ */
7
+
8
+
9
+
10
+ function peg$subclass(child, parent) {
11
+ function ctor() { this.constructor = child; }
12
+ ctor.prototype = parent.prototype;
13
+ child.prototype = new ctor();
14
+ }
15
+
16
+ function peg$SyntaxError(message, expected, found, location) {
17
+ this.message = message;
18
+ this.expected = expected;
19
+ this.found = found;
20
+ this.location = location;
21
+
22
+ this.name = "SyntaxError";
23
+ }
24
+
25
+ peg$subclass(peg$SyntaxError, Error);
26
+
27
+ function peg$Reference(value) {
28
+ this.value = value;
29
+ }
30
+
31
+ peg$Reference.prototype = {
32
+ get: function() {
33
+ return this.value;
34
+ },
35
+ set: function(value) {
36
+ this.value = value;
37
+ }
38
+ };
39
+
40
+ function peg$DefaultTracer() {
41
+ this.indentLevel = 0;
42
+ }
43
+
44
+ peg$DefaultTracer.prototype.trace = function(event) {
45
+ var that = this;
46
+
47
+ function log(event) {
48
+ function repeat(string, n) {
49
+ var result = "", i;
50
+
51
+ for (i = 0; i < n; i++) {
52
+ result += string;
53
+ }
54
+
55
+ return result;
56
+ }
57
+
58
+ function pad(string, length) {
59
+ return string + repeat(" ", length - string.length);
60
+ }
61
+
62
+ function formatArgs(argMap) {
63
+ var argParts = [];
64
+ for (let argName in argMap) {
65
+ if (argName === 'silence') {
66
+ continue;
67
+ }
68
+ if (argName === 'boolParams') {
69
+ argParts.push('0x' + argMap[argName].toString(16));
70
+ } else {
71
+ let displayName = argName.replace(/^param_/, '');
72
+ if (typeof argMap[argName] === 'object' && argMap[argName].value !== undefined) {
73
+ argParts.push(displayName + "=&" + JSON.stringify(argMap[argName].value));
74
+ } else {
75
+ argParts.push(displayName + "=" + argMap[argName]);
76
+ }
77
+ }
78
+ }
79
+ if (argParts.length) {
80
+ return ' <' + argParts.join(', ') + '>';
81
+ } else {
82
+ return '';
83
+ }
84
+ }
85
+
86
+ console.log(
87
+ pad(
88
+ event.location.start.line + ":" + event.location.start.column + "-"
89
+ + event.location.end.line + ":" + event.location.end.column + " ",
90
+ 20
91
+ )
92
+ + pad(event.type, 10) + " "
93
+ + repeat(" ", that.indentLevel) + event.rule
94
+ + formatArgs(event.args)
95
+ );
96
+ }
97
+
98
+ switch (event.type) {
99
+ case "rule.enter":
100
+ log(event);
101
+ this.indentLevel++;
102
+ break;
103
+
104
+ case "rule.match":
105
+ this.indentLevel--;
106
+ log(event);
107
+ break;
108
+
109
+ case "rule.fail":
110
+ this.indentLevel--;
111
+ log(event);
112
+ break;
113
+
114
+ default:
115
+ throw new Error("Invalid event type: " + event.type + ".");
116
+ }
117
+ };
118
+
119
+ function peg$parse(input, options = {}) {
120
+ var parser = this,
121
+ peg$currPos = 0,
122
+ peg$savedPos = 0,
123
+ peg$FAILED = {},
124
+ peg$startRule = options.startRule || '(DEFAULT)',
125
+ peg$result;
126
+
127
+ function text() {
128
+ return input.substring(peg$savedPos, peg$currPos);
129
+ }
130
+
131
+ function location() {
132
+ return peg$computeLocation(peg$savedPos, peg$currPos);
133
+ }
134
+
135
+ function expected(description) {
136
+ throw peg$buildException(
137
+ null,
138
+ [{ type: "other", description: description }],
139
+ input.substring(peg$savedPos, peg$currPos),
140
+ peg$computeLocation(peg$savedPos, peg$currPos)
141
+ );
142
+ }
143
+
144
+ function error(message) {
145
+ throw peg$buildException(
146
+ message,
147
+ null,
148
+ input.substring(peg$savedPos, peg$currPos),
149
+ peg$computeLocation(peg$savedPos, peg$currPos)
150
+ );
151
+ }
152
+
153
+ var peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],
154
+ peg$maxFailPos = 0,
155
+ peg$maxFailExpected = [];
156
+
157
+ function peg$computePosDetails(pos) {
158
+ var details = peg$posDetailsCache[pos],
159
+ p, ch;
160
+
161
+ if (details) {
162
+ return details;
163
+ } else {
164
+ p = pos - 1;
165
+ while (!peg$posDetailsCache[p]) {
166
+ p--;
167
+ }
168
+
169
+ details = peg$posDetailsCache[p];
170
+ details = {
171
+ line: details.line,
172
+ column: details.column,
173
+ seenCR: details.seenCR
174
+ };
175
+
176
+ while (p < pos) {
177
+ ch = input.charAt(p);
178
+ if (ch === "\n") {
179
+ if (!details.seenCR) { details.line++; }
180
+ details.column = 1;
181
+ details.seenCR = false;
182
+ } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
183
+ details.line++;
184
+ details.column = 1;
185
+ details.seenCR = true;
186
+ } else {
187
+ details.column++;
188
+ details.seenCR = false;
189
+ }
190
+
191
+ p++;
192
+ }
193
+
194
+ peg$posDetailsCache[pos] = details;
195
+ return details;
196
+ }
197
+ }
198
+
199
+ function peg$computeLocation(startPos, endPos) {
200
+ if (endPos > input.length) {
201
+ endPos--;
202
+ }
203
+ var startPosDetails = peg$computePosDetails(startPos),
204
+ endPosDetails = peg$computePosDetails(endPos);
205
+
206
+ return {
207
+ start: {
208
+ offset: startPos,
209
+ line: startPosDetails.line,
210
+ column: startPosDetails.column
211
+ },
212
+ end: {
213
+ offset: endPos,
214
+ line: endPosDetails.line,
215
+ column: endPosDetails.column
216
+ }
217
+ };
218
+ }
219
+
220
+ function peg$fail(expected) {
221
+ if (peg$currPos < peg$maxFailPos) { return; }
222
+
223
+ if (peg$currPos > peg$maxFailPos) {
224
+ peg$maxFailPos = peg$currPos;
225
+ peg$maxFailExpected = [];
226
+ }
227
+
228
+ peg$maxFailExpected.push(expected);
229
+ }
230
+
231
+ function peg$buildException(message, expected, found, location) {
232
+ function cleanupExpected(expected) {
233
+ var i = 1;
234
+
235
+ expected.sort(function(a, b) {
236
+ if (a.type < b.type) {
237
+ return -1;
238
+ } else if (a.type > b.type) {
239
+ return 1;
240
+ } else if (a.value < b.value) {
241
+ return -1;
242
+ } else if (a.value > b.value) {
243
+ return 1;
244
+ } else if (a.description < b.description) {
245
+ return -1;
246
+ } else if (a.description > b.description) {
247
+ return 1;
248
+ } else {
249
+ return 0;
250
+ }
251
+ });
252
+
253
+ /*
254
+ * This works because the bytecode generator guarantees that every
255
+ * expectation object exists only once, so it's enough to use |===| instead
256
+ * of deeper structural comparison.
257
+ */
258
+ while (i < expected.length) {
259
+ if (expected[i - 1] === expected[i]) {
260
+ expected.splice(i, 1);
261
+ } else {
262
+ i++;
263
+ }
264
+ }
265
+ }
266
+
267
+ function buildMessage(expected, found) {
268
+ function stringEscape(s) {
269
+ function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
270
+
271
+ /*
272
+ * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string
273
+ * literal except for the closing quote character, backslash, carriage
274
+ * return, line separator, paragraph separator, and line feed. Any character
275
+ * may appear in the form of an escape sequence.
276
+ *
277
+ * For portability, we also escape all control and non-ASCII characters.
278
+ * Note that "\0" and "\v" escape sequences are not used because JSHint does
279
+ * not like the first and IE the second.
280
+ */
281
+ return s
282
+ .replace(/\\/g, '\\\\') // backslash
283
+ .replace(/"/g, '\\"') // closing double quote
284
+ .replace(/\x08/g, '\\b') // backspace
285
+ .replace(/\t/g, '\\t') // horizontal tab
286
+ .replace(/\n/g, '\\n') // line feed
287
+ .replace(/\f/g, '\\f') // form feed
288
+ .replace(/\r/g, '\\r') // carriage return
289
+ .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
290
+ .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); })
291
+ .replace(/[\u0100-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); })
292
+ .replace(/[\u1000-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); });
293
+ }
294
+
295
+ var expectedDescs = new Array(expected.length),
296
+ expectedDesc, foundDesc, i;
297
+
298
+ for (i = 0; i < expected.length; i++) {
299
+ expectedDescs[i] = expected[i].description;
300
+ }
301
+
302
+ expectedDesc = expected.length > 1
303
+ ? expectedDescs.slice(0, -1).join(", ")
304
+ + " or "
305
+ + expectedDescs[expected.length - 1]
306
+ : expectedDescs[0];
307
+
308
+ foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input";
309
+
310
+ return "Expected " + expectedDesc + " but " + foundDesc + " found.";
311
+ }
312
+
313
+ if (expected !== null) {
314
+ cleanupExpected(expected);
315
+ }
316
+
317
+ return new peg$SyntaxError(
318
+ message !== null ? message : buildMessage(expected, found),
319
+ expected,
320
+ found,
321
+ location
322
+ );
323
+ }
324
+
325
+ function peg$buildParseException() {
326
+ return peg$buildException(
327
+ null,
328
+ peg$maxFailExpected,
329
+ peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,
330
+ peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
331
+ );
332
+ }
333
+
334
+
335
+ function peg$traceCall(parseFunc, name, argNames, args) {
336
+ var argMap = {};
337
+ for (let i = 0; i < args.length; i++) {
338
+ argMap[argNames[i]] = args[i];
339
+ }
340
+ var startPos = peg$currPos;
341
+ peg$tracer.trace({
342
+ type: "rule.enter",
343
+ rule: name,
344
+ location: peg$computeLocation(startPos, startPos),
345
+ args: argMap
346
+ });
347
+ var result = parseFunc.apply(null, args);
348
+ if (result !== peg$FAILED) {
349
+ peg$tracer.trace({
350
+ type: "rule.match",
351
+ rule: name,
352
+ result: result,
353
+ location: peg$computeLocation(startPos, peg$currPos)
354
+ });
355
+ } else {
356
+ peg$tracer.trace({
357
+ type: "rule.fail",
358
+ rule: name,
359
+ location: peg$computeLocation(startPos, startPos)
360
+ });
361
+ }
362
+ return result;
363
+ }
364
+
365
+ var peg$tracer = "tracer" in options ? options.tracer : new peg$DefaultTracer();
366
+
367
+
368
+
369
+ // expectations
370
+ var peg$c0 = {"type":"end","description":"end of input"};
371
+ var peg$c1 = {"type":"class","value":"[^\\['\"]","description":"[^\\['\"]"};
372
+ var peg$c2 = {"type":"any","description":"any character"};
373
+ var peg$c3 = {"type":"other","description":"array"};
374
+ var peg$c4 = {"type":"other","description":"string literal"};
375
+
376
+ // actions
377
+ function peg$a0(toks) {
378
+ return toks.join('');
379
+ }
380
+ function peg$a1(sp) {
381
+ return "{" + sp + "}";
382
+ }
383
+ function peg$a2(toks) {
384
+ return "{" + toks.join('') + "}";
385
+ }
386
+ function peg$a3(first, toks) {
387
+ return first + (toks || []).join('');
388
+ }
389
+ function peg$a4() {
390
+ return ":";
391
+ }
392
+ function peg$a5(s) {
393
+ return s.slice(1,-1);
394
+ }
395
+ function peg$a6(inner) {
396
+ return "(" + inner + ")";
397
+ }
398
+ function peg$a7(inner) {
399
+ return "{" + inner + "}";
400
+ }
401
+
402
+ // initializer
403
+
404
+
405
+ // generated
406
+ function peg$parsestart(silence) {
407
+ var r1;
408
+ r1 = peg$parseCode(silence);
409
+ return r1;
410
+ }
411
+ function peg$parseCode(silence) {
412
+ var r1,p2,r3,r4;
413
+ p2 = peg$currPos;
414
+ r3 = [];
415
+ for (;;) {
416
+ r4 = peg$parsePart(silence);
417
+ if (r4!==peg$FAILED) {
418
+ r3.push(r4);
419
+ } else {
420
+ break;
421
+ }
422
+ }
423
+ // toks <- r3
424
+ // free r4
425
+ r1 = r3;
426
+ peg$savedPos = p2;
427
+ r1 = peg$a0(r3);
428
+ // free p2
429
+ return r1;
430
+ }
431
+ function peg$parsePart(silence) {
432
+ var r1,p2;
433
+ choice_1: {
434
+ p2 = peg$currPos;
435
+ r1 = peg$discardString();
436
+ if (r1!==peg$FAILED) {
437
+ r1 = input.substring(p2, peg$currPos);
438
+ break choice_1;
439
+ } else {
440
+ r1 = peg$FAILED;
441
+ }
442
+ // free p2
443
+ r1 = peg$parseArray(silence);
444
+ if (r1!==peg$FAILED) {
445
+ break choice_1;
446
+ }
447
+ p2 = peg$currPos;
448
+ r1 = /[^"'[]+/y;
449
+ r1.lastIndex = peg$currPos;
450
+ if (r1.exec(input) !== null) {
451
+ peg$currPos = r1.lastIndex;
452
+ r1 = input.substring(p2, peg$currPos);
453
+ break choice_1;
454
+ } else {
455
+ r1 = peg$FAILED;
456
+ if (!silence) { peg$fail(peg$c1); }
457
+ r1 = peg$FAILED;
458
+ }
459
+ // free p2
460
+ p2 = peg$currPos;
461
+ if (peg$currPos < input.length) {
462
+ peg$currPos++;
463
+ r1 = true;
464
+ r1 = input.substring(p2, peg$currPos);
465
+ } else {
466
+ r1 = peg$FAILED;
467
+ if (!silence) { peg$fail(peg$c2); }
468
+ r1 = peg$FAILED;
469
+ }
470
+ // free p2
471
+ } // choice_1
472
+ return r1;
473
+ }
474
+ function peg$discardString() {
475
+ var r1,p2,r3,r4,r5,p6,r7,r8;
476
+ choice_1: {
477
+ seq_1: {
478
+ p2 = peg$currPos;
479
+ if (input.charCodeAt(peg$currPos) === 39) {
480
+ r3 = true;
481
+ peg$currPos += 1;
482
+ } else {
483
+ r3 = peg$FAILED;
484
+ r1 = peg$FAILED;
485
+ break seq_1;
486
+ }
487
+ for (;;) {
488
+ choice_2: {
489
+ seq_2: {
490
+ p6 = peg$currPos;
491
+ if (input.charCodeAt(peg$currPos) === 92) {
492
+ r7 = true;
493
+ peg$currPos += 1;
494
+ } else {
495
+ r7 = peg$FAILED;
496
+ r5 = peg$FAILED;
497
+ break seq_2;
498
+ }
499
+ if (peg$currPos < input.length) {
500
+ peg$currPos++;
501
+ r8 = true;
502
+ } else {
503
+ r8 = peg$FAILED;
504
+ peg$currPos = p6;
505
+ r5 = peg$FAILED;
506
+ break seq_2;
507
+ }
508
+ r5 = true;
509
+ } // seq_2
510
+ if (r5!==peg$FAILED) {
511
+ break choice_2;
512
+ }
513
+ // free r7,r8
514
+ // free p6
515
+ if (/^[^'\\]/.test(input.charAt(peg$currPos))) {
516
+ r5 = true;
517
+ peg$currPos++;
518
+ } else {
519
+ r5 = peg$FAILED;
520
+ }
521
+ } // choice_2
522
+ if (r5===peg$FAILED) {
523
+ break;
524
+ }
525
+ }
526
+ // free r5
527
+ r4 = true;
528
+ // free r4
529
+ if (input.charCodeAt(peg$currPos) === 39) {
530
+ r4 = true;
531
+ peg$currPos += 1;
532
+ } else {
533
+ r4 = peg$FAILED;
534
+ peg$currPos = p2;
535
+ r1 = peg$FAILED;
536
+ break seq_1;
537
+ }
538
+ r1 = true;
539
+ } // seq_1
540
+ if (r1!==peg$FAILED) {
541
+ break choice_1;
542
+ }
543
+ // free r3,r4
544
+ // free p2
545
+ seq_3: {
546
+ p2 = peg$currPos;
547
+ if (input.charCodeAt(peg$currPos) === 34) {
548
+ r4 = true;
549
+ peg$currPos += 1;
550
+ } else {
551
+ r4 = peg$FAILED;
552
+ r1 = peg$FAILED;
553
+ break seq_3;
554
+ }
555
+ for (;;) {
556
+ choice_3: {
557
+ seq_4: {
558
+ p6 = peg$currPos;
559
+ if (input.charCodeAt(peg$currPos) === 92) {
560
+ r8 = true;
561
+ peg$currPos += 1;
562
+ } else {
563
+ r8 = peg$FAILED;
564
+ r5 = peg$FAILED;
565
+ break seq_4;
566
+ }
567
+ if (peg$currPos < input.length) {
568
+ peg$currPos++;
569
+ r7 = true;
570
+ } else {
571
+ r7 = peg$FAILED;
572
+ peg$currPos = p6;
573
+ r5 = peg$FAILED;
574
+ break seq_4;
575
+ }
576
+ r5 = true;
577
+ } // seq_4
578
+ if (r5!==peg$FAILED) {
579
+ break choice_3;
580
+ }
581
+ // free r8,r7
582
+ // free p6
583
+ if (/^[^"\\]/.test(input.charAt(peg$currPos))) {
584
+ r5 = true;
585
+ peg$currPos++;
586
+ } else {
587
+ r5 = peg$FAILED;
588
+ }
589
+ } // choice_3
590
+ if (r5===peg$FAILED) {
591
+ break;
592
+ }
593
+ }
594
+ // free r5
595
+ r3 = true;
596
+ // free r3
597
+ if (input.charCodeAt(peg$currPos) === 34) {
598
+ r3 = true;
599
+ peg$currPos += 1;
600
+ } else {
601
+ r3 = peg$FAILED;
602
+ peg$currPos = p2;
603
+ r1 = peg$FAILED;
604
+ break seq_3;
605
+ }
606
+ r1 = true;
607
+ } // seq_3
608
+ // free r4,r3
609
+ // free p2
610
+ } // choice_1
611
+ return r1;
612
+ }
613
+ function peg$parseArray(silence) {
614
+ var r1,p2,p3,r4,r5,r6,p7,r8,r9,r10,r11,r12,r13;
615
+ choice_1: {
616
+ p2 = peg$currPos;
617
+ seq_1: {
618
+ p3 = peg$currPos;
619
+ if (input.charCodeAt(peg$currPos) === 91) {
620
+ r4 = true;
621
+ peg$currPos += 1;
622
+ } else {
623
+ r4 = peg$FAILED;
624
+ r1 = peg$FAILED;
625
+ break seq_1;
626
+ }
627
+ r5 = peg$parse_();
628
+ // sp <- r5
629
+ if (input.charCodeAt(peg$currPos) === 93) {
630
+ r6 = true;
631
+ peg$currPos += 1;
632
+ } else {
633
+ r6 = peg$FAILED;
634
+ peg$currPos = p3;
635
+ r1 = peg$FAILED;
636
+ break seq_1;
637
+ }
638
+ r1 = true;
639
+ } // seq_1
640
+ if (r1!==peg$FAILED) {
641
+ peg$savedPos = p2;
642
+ r1 = peg$a1(r5);
643
+ break choice_1;
644
+ }
645
+ // free r4,r6
646
+ // free p3
647
+ // free p2
648
+ p2 = peg$currPos;
649
+ seq_2: {
650
+ p3 = peg$currPos;
651
+ if (input.charCodeAt(peg$currPos) === 91) {
652
+ r6 = true;
653
+ peg$currPos += 1;
654
+ } else {
655
+ r6 = peg$FAILED;
656
+ r1 = peg$FAILED;
657
+ break seq_2;
658
+ }
659
+ seq_3: {
660
+ p7 = peg$currPos;
661
+ r8 = peg$parse_();
662
+ r9 = peg$parseAssocPairs();
663
+ if (r9===peg$FAILED) {
664
+ peg$currPos = p7;
665
+ r4 = peg$FAILED;
666
+ break seq_3;
667
+ }
668
+ r10 = peg$parse_();
669
+ r11 = peg$parseOptTrailingComma();
670
+ r4 = [r8,r9,r10,r11];
671
+ } // seq_3
672
+ // toks <- r4
673
+ if (r4===peg$FAILED) {
674
+ peg$currPos = p3;
675
+ r1 = peg$FAILED;
676
+ break seq_2;
677
+ }
678
+ // free r8,r9,r10,r11
679
+ // free p7
680
+ if (input.charCodeAt(peg$currPos) === 93) {
681
+ r11 = true;
682
+ peg$currPos += 1;
683
+ } else {
684
+ r11 = peg$FAILED;
685
+ peg$currPos = p3;
686
+ r1 = peg$FAILED;
687
+ break seq_2;
688
+ }
689
+ r1 = true;
690
+ } // seq_2
691
+ if (r1!==peg$FAILED) {
692
+ peg$savedPos = p2;
693
+ r1 = peg$a2(r4);
694
+ break choice_1;
695
+ }
696
+ // free r6,r11
697
+ // free p3
698
+ // free p2
699
+ p2 = peg$currPos;
700
+ seq_4: {
701
+ p3 = peg$currPos;
702
+ if (input.charCodeAt(peg$currPos) === 91) {
703
+ r6 = "[";
704
+ peg$currPos += 1;
705
+ } else {
706
+ r6 = peg$FAILED;
707
+ r11 = peg$FAILED;
708
+ break seq_4;
709
+ }
710
+ r10 = peg$parse_();
711
+ r9 = peg$parseListItems();
712
+ if (r9===peg$FAILED) {
713
+ peg$currPos = p3;
714
+ r11 = peg$FAILED;
715
+ break seq_4;
716
+ }
717
+ r8 = peg$parse_();
718
+ r12 = peg$parseOptTrailingComma();
719
+ if (input.charCodeAt(peg$currPos) === 93) {
720
+ r13 = "]";
721
+ peg$currPos += 1;
722
+ } else {
723
+ r13 = peg$FAILED;
724
+ peg$currPos = p3;
725
+ r11 = peg$FAILED;
726
+ break seq_4;
727
+ }
728
+ r11 = [r6,r10,r9,r8,r12,r13];
729
+ } // seq_4
730
+ // toks <- r11
731
+ // free r6,r10,r9,r8,r12,r13
732
+ // free p3
733
+ r1 = r11;
734
+ if (r1!==peg$FAILED) {
735
+ peg$savedPos = p2;
736
+ r1 = peg$a0(r11);
737
+ }
738
+ // free p2
739
+ } // choice_1
740
+ if (r1===peg$FAILED) {
741
+ if (!silence) { peg$fail(peg$c3); }
742
+ }
743
+ return r1;
744
+ }
745
+ function peg$parse_() {
746
+ var p1,r2;
747
+ p1 = peg$currPos;
748
+ r2 = /[\t\n\r ]*/y;
749
+ r2.lastIndex = peg$currPos;
750
+ if (r2.exec(input) !== null) {
751
+ peg$currPos = r2.lastIndex;
752
+ r2 = input.substring(p1, peg$currPos);
753
+ } else {
754
+ r2 = peg$FAILED;
755
+ r2 = peg$FAILED;
756
+ }
757
+ // free p1
758
+ return r2;
759
+ }
760
+ function peg$parseAssocPairs() {
761
+ var r1,p2,p3,r4,r5,p6,r7,r8,r9,r10;
762
+ p2 = peg$currPos;
763
+ seq_1: {
764
+ p3 = peg$currPos;
765
+ r4 = peg$parseAssocPair();
766
+ // first <- r4
767
+ if (r4===peg$FAILED) {
768
+ r1 = peg$FAILED;
769
+ break seq_1;
770
+ }
771
+ seq_2: {
772
+ p6 = peg$currPos;
773
+ r7 = peg$parse_();
774
+ if (input.charCodeAt(peg$currPos) === 44) {
775
+ r8 = ",";
776
+ peg$currPos += 1;
777
+ } else {
778
+ r8 = peg$FAILED;
779
+ peg$currPos = p6;
780
+ r5 = peg$FAILED;
781
+ break seq_2;
782
+ }
783
+ r9 = peg$parse_();
784
+ r10 = peg$parseAssocPairs();
785
+ if (r10===peg$FAILED) {
786
+ peg$currPos = p6;
787
+ r5 = peg$FAILED;
788
+ break seq_2;
789
+ }
790
+ r5 = [r7,r8,r9,r10];
791
+ } // seq_2
792
+ if (r5===peg$FAILED) {
793
+ r5 = null;
794
+ }
795
+ // free r7,r8,r9,r10
796
+ // free p6
797
+ // toks <- r5
798
+ r1 = true;
799
+ } // seq_1
800
+ if (r1!==peg$FAILED) {
801
+ peg$savedPos = p2;
802
+ r1 = peg$a3(r4, r5);
803
+ }
804
+ // free p3
805
+ // free p2
806
+ return r1;
807
+ }
808
+ function peg$parseOptTrailingComma() {
809
+ var r1,p2,p3,r4;
810
+ choice_1: {
811
+ p2 = peg$currPos;
812
+ seq_1: {
813
+ p3 = peg$currPos;
814
+ if (input.charCodeAt(peg$currPos) === 44) {
815
+ r4 = true;
816
+ peg$currPos += 1;
817
+ } else {
818
+ r4 = peg$FAILED;
819
+ r1 = peg$FAILED;
820
+ break seq_1;
821
+ }
822
+ peg$discard_();
823
+ r1 = true;
824
+ } // seq_1
825
+ if (r1!==peg$FAILED) {
826
+ r1 = input.substring(p2, peg$currPos);
827
+ break choice_1;
828
+ } else {
829
+ r1 = peg$FAILED;
830
+ }
831
+ // free r4
832
+ // free p3
833
+ // free p2
834
+ r1 = '';
835
+ } // choice_1
836
+ return r1;
837
+ }
838
+ function peg$parseListItems() {
839
+ var r1,p2,p3,r4,r5,p6,r7,r8,r9,r10;
840
+ p2 = peg$currPos;
841
+ seq_1: {
842
+ p3 = peg$currPos;
843
+ r4 = peg$parseValueNoComma();
844
+ // first <- r4
845
+ if (r4===peg$FAILED) {
846
+ r1 = peg$FAILED;
847
+ break seq_1;
848
+ }
849
+ seq_2: {
850
+ p6 = peg$currPos;
851
+ r7 = peg$parse_();
852
+ if (input.charCodeAt(peg$currPos) === 44) {
853
+ r8 = ",";
854
+ peg$currPos += 1;
855
+ } else {
856
+ r8 = peg$FAILED;
857
+ peg$currPos = p6;
858
+ r5 = peg$FAILED;
859
+ break seq_2;
860
+ }
861
+ r9 = peg$parse_();
862
+ r10 = peg$parseListItems();
863
+ if (r10===peg$FAILED) {
864
+ peg$currPos = p6;
865
+ r5 = peg$FAILED;
866
+ break seq_2;
867
+ }
868
+ r5 = [r7,r8,r9,r10];
869
+ } // seq_2
870
+ if (r5===peg$FAILED) {
871
+ r5 = null;
872
+ }
873
+ // free r7,r8,r9,r10
874
+ // free p6
875
+ // toks <- r5
876
+ r1 = true;
877
+ } // seq_1
878
+ if (r1!==peg$FAILED) {
879
+ peg$savedPos = p2;
880
+ r1 = peg$a3(r4, r5);
881
+ }
882
+ // free p3
883
+ // free p2
884
+ return r1;
885
+ }
886
+ function peg$parseAssocPair() {
887
+ var r1,p2,r3,p4,r5,r6,p7,p8,r9,r10;
888
+ p2 = peg$currPos;
889
+ seq_1: {
890
+ p4 = peg$currPos;
891
+ r5 = peg$parseQuotedKey();
892
+ if (r5===peg$FAILED) {
893
+ r3 = peg$FAILED;
894
+ break seq_1;
895
+ }
896
+ p7 = peg$currPos;
897
+ seq_2: {
898
+ p8 = peg$currPos;
899
+ peg$discard_();
900
+ if (input.substr(peg$currPos,2) === "=>") {
901
+ r9 = true;
902
+ peg$currPos += 2;
903
+ } else {
904
+ r9 = peg$FAILED;
905
+ peg$currPos = p8;
906
+ r6 = peg$FAILED;
907
+ break seq_2;
908
+ }
909
+ r6 = true;
910
+ } // seq_2
911
+ if (r6!==peg$FAILED) {
912
+ peg$savedPos = p7;
913
+ r6 = peg$a4();
914
+ } else {
915
+ peg$currPos = p4;
916
+ r3 = peg$FAILED;
917
+ break seq_1;
918
+ }
919
+ // free r9
920
+ // free p8
921
+ // free p7
922
+ r9 = peg$parse_();
923
+ r10 = peg$parseValueNoComma();
924
+ if (r10===peg$FAILED) {
925
+ peg$currPos = p4;
926
+ r3 = peg$FAILED;
927
+ break seq_1;
928
+ }
929
+ r3 = [r5,r6,r9,r10];
930
+ } // seq_1
931
+ // toks <- r3
932
+ // free r5,r6,r9,r10
933
+ // free p4
934
+ r1 = r3;
935
+ if (r1!==peg$FAILED) {
936
+ peg$savedPos = p2;
937
+ r1 = peg$a0(r3);
938
+ }
939
+ // free p2
940
+ return r1;
941
+ }
942
+ function peg$discard_() {
943
+ var r1;
944
+ r1 = /[\t\n\r ]*/y;
945
+ r1.lastIndex = peg$currPos;
946
+ if (r1.exec(input) !== null) {
947
+ peg$currPos = r1.lastIndex;
948
+ } else {
949
+ r1 = peg$FAILED;
950
+ }
951
+ return r1;
952
+ }
953
+ function peg$parseValueNoComma() {
954
+ var r1,p2,r3,r4,p5,r6;
955
+ p2 = peg$currPos;
956
+ r3 = [];
957
+ for (;;) {
958
+ seq_1: {
959
+ p5 = peg$currPos;
960
+ if (input.charCodeAt(peg$currPos) === 44) {
961
+ r6 = true;
962
+ } else {
963
+ r6 = peg$FAILED;
964
+ }
965
+ if (r6 === peg$FAILED) {
966
+ r6 = void 0;
967
+ } else {
968
+ r6 = peg$FAILED;
969
+ peg$currPos = p5;
970
+ r4 = peg$FAILED;
971
+ break seq_1;
972
+ }
973
+ r4 = peg$parseValuePart();
974
+ if (r4===peg$FAILED) {
975
+ peg$currPos = p5;
976
+ r4 = peg$FAILED;
977
+ break seq_1;
978
+ }
979
+ } // seq_1
980
+ if (r4!==peg$FAILED) {
981
+ r3.push(r4);
982
+ } else {
983
+ break;
984
+ }
985
+ // free p5
986
+ }
987
+ if (r3.length === 0) {
988
+ r3 = peg$FAILED;
989
+ }
990
+ // toks <- r3
991
+ // free r4
992
+ r1 = r3;
993
+ if (r1!==peg$FAILED) {
994
+ peg$savedPos = p2;
995
+ r1 = peg$a0(r3);
996
+ }
997
+ // free p2
998
+ return r1;
999
+ }
1000
+ function peg$parseQuotedKey() {
1001
+ var r1,p2,p3,r4,r5,r6,r7;
1002
+ p2 = peg$currPos;
1003
+ seq_1: {
1004
+ p3 = peg$currPos;
1005
+ seq_2: {
1006
+ if (/^["']/.test(input.charAt(peg$currPos))) {
1007
+ r5 = true;
1008
+ peg$currPos++;
1009
+ } else {
1010
+ r5 = peg$FAILED;
1011
+ r4 = peg$FAILED;
1012
+ break seq_2;
1013
+ }
1014
+ r6 = /[0-9A-Z_a-z\u017F\u212A]+/y;
1015
+ r6.lastIndex = peg$currPos;
1016
+ if (r6.exec(input) !== null) {
1017
+ peg$currPos = r6.lastIndex;
1018
+ } else {
1019
+ r6 = peg$FAILED;
1020
+ peg$currPos = p3;
1021
+ r4 = peg$FAILED;
1022
+ break seq_2;
1023
+ }
1024
+ if (/^["']/.test(input.charAt(peg$currPos))) {
1025
+ r7 = true;
1026
+ } else {
1027
+ r7 = peg$FAILED;
1028
+ peg$currPos = p3;
1029
+ r4 = peg$FAILED;
1030
+ break seq_2;
1031
+ }
1032
+ r4 = true;
1033
+ } // seq_2
1034
+ if (r4!==peg$FAILED) {
1035
+ r4 = void 0;
1036
+ peg$currPos = p3;
1037
+ } else {
1038
+ r1 = peg$FAILED;
1039
+ break seq_1;
1040
+ }
1041
+ // free r5,r6,r7
1042
+ r7 = peg$parseString(true);
1043
+ // s <- r7
1044
+ if (r7===peg$FAILED) {
1045
+ peg$currPos = p3;
1046
+ r1 = peg$FAILED;
1047
+ break seq_1;
1048
+ }
1049
+ r1 = true;
1050
+ } // seq_1
1051
+ if (r1!==peg$FAILED) {
1052
+ peg$savedPos = p2;
1053
+ r1 = peg$a5(r7);
1054
+ }
1055
+ // free r4
1056
+ // free p3
1057
+ // free p2
1058
+ return r1;
1059
+ }
1060
+ function peg$parseValuePart() {
1061
+ var r1,p2,p3,r4,r5,r6,r7;
1062
+ choice_1: {
1063
+ r1 = peg$parseString(true);
1064
+ if (r1!==peg$FAILED) {
1065
+ break choice_1;
1066
+ }
1067
+ r1 = peg$parseArray(true);
1068
+ if (r1!==peg$FAILED) {
1069
+ break choice_1;
1070
+ }
1071
+ p2 = peg$currPos;
1072
+ seq_1: {
1073
+ p3 = peg$currPos;
1074
+ if (input.charCodeAt(peg$currPos) === 40) {
1075
+ r4 = true;
1076
+ peg$currPos += 1;
1077
+ } else {
1078
+ r4 = peg$FAILED;
1079
+ r1 = peg$FAILED;
1080
+ break seq_1;
1081
+ }
1082
+ r5 = peg$parseValueParts();
1083
+ // inner <- r5
1084
+ if (input.charCodeAt(peg$currPos) === 41) {
1085
+ r6 = true;
1086
+ peg$currPos += 1;
1087
+ } else {
1088
+ r6 = peg$FAILED;
1089
+ peg$currPos = p3;
1090
+ r1 = peg$FAILED;
1091
+ break seq_1;
1092
+ }
1093
+ r1 = true;
1094
+ } // seq_1
1095
+ if (r1!==peg$FAILED) {
1096
+ peg$savedPos = p2;
1097
+ r1 = peg$a6(r5);
1098
+ break choice_1;
1099
+ }
1100
+ // free r4,r6
1101
+ // free p3
1102
+ // free p2
1103
+ p2 = peg$currPos;
1104
+ seq_2: {
1105
+ p3 = peg$currPos;
1106
+ if (input.charCodeAt(peg$currPos) === 123) {
1107
+ r6 = true;
1108
+ peg$currPos += 1;
1109
+ } else {
1110
+ r6 = peg$FAILED;
1111
+ r1 = peg$FAILED;
1112
+ break seq_2;
1113
+ }
1114
+ r4 = peg$parseValueParts();
1115
+ // inner <- r4
1116
+ if (input.charCodeAt(peg$currPos) === 125) {
1117
+ r7 = true;
1118
+ peg$currPos += 1;
1119
+ } else {
1120
+ r7 = peg$FAILED;
1121
+ peg$currPos = p3;
1122
+ r1 = peg$FAILED;
1123
+ break seq_2;
1124
+ }
1125
+ r1 = true;
1126
+ } // seq_2
1127
+ if (r1!==peg$FAILED) {
1128
+ peg$savedPos = p2;
1129
+ r1 = peg$a7(r4);
1130
+ break choice_1;
1131
+ }
1132
+ // free r6,r7
1133
+ // free p3
1134
+ // free p2
1135
+ p2 = peg$currPos;
1136
+ r1 = /[^"'(),[\]{}]+/y;
1137
+ r1.lastIndex = peg$currPos;
1138
+ if (r1.exec(input) !== null) {
1139
+ peg$currPos = r1.lastIndex;
1140
+ r1 = input.substring(p2, peg$currPos);
1141
+ break choice_1;
1142
+ } else {
1143
+ r1 = peg$FAILED;
1144
+ r1 = peg$FAILED;
1145
+ }
1146
+ // free p2
1147
+ if (input.charCodeAt(peg$currPos) === 44) {
1148
+ r1 = ",";
1149
+ peg$currPos += 1;
1150
+ } else {
1151
+ r1 = peg$FAILED;
1152
+ }
1153
+ } // choice_1
1154
+ return r1;
1155
+ }
1156
+ function peg$parseString(silence) {
1157
+ var r1,p2,p3,r4,r5,r6,p7,r8,r9;
1158
+ choice_1: {
1159
+ p2 = peg$currPos;
1160
+ seq_1: {
1161
+ p3 = peg$currPos;
1162
+ if (input.charCodeAt(peg$currPos) === 39) {
1163
+ r4 = true;
1164
+ peg$currPos += 1;
1165
+ } else {
1166
+ r4 = peg$FAILED;
1167
+ r1 = peg$FAILED;
1168
+ break seq_1;
1169
+ }
1170
+ for (;;) {
1171
+ choice_2: {
1172
+ seq_2: {
1173
+ p7 = peg$currPos;
1174
+ if (input.charCodeAt(peg$currPos) === 92) {
1175
+ r8 = true;
1176
+ peg$currPos += 1;
1177
+ } else {
1178
+ r8 = peg$FAILED;
1179
+ r6 = peg$FAILED;
1180
+ break seq_2;
1181
+ }
1182
+ if (peg$currPos < input.length) {
1183
+ peg$currPos++;
1184
+ r9 = true;
1185
+ } else {
1186
+ r9 = peg$FAILED;
1187
+ peg$currPos = p7;
1188
+ r6 = peg$FAILED;
1189
+ break seq_2;
1190
+ }
1191
+ r6 = true;
1192
+ } // seq_2
1193
+ if (r6!==peg$FAILED) {
1194
+ break choice_2;
1195
+ }
1196
+ // free r8,r9
1197
+ // free p7
1198
+ if (/^[^'\\]/.test(input.charAt(peg$currPos))) {
1199
+ r6 = true;
1200
+ peg$currPos++;
1201
+ } else {
1202
+ r6 = peg$FAILED;
1203
+ }
1204
+ } // choice_2
1205
+ if (r6===peg$FAILED) {
1206
+ break;
1207
+ }
1208
+ }
1209
+ // free r6
1210
+ r5 = true;
1211
+ // free r5
1212
+ if (input.charCodeAt(peg$currPos) === 39) {
1213
+ r5 = true;
1214
+ peg$currPos += 1;
1215
+ } else {
1216
+ r5 = peg$FAILED;
1217
+ peg$currPos = p3;
1218
+ r1 = peg$FAILED;
1219
+ break seq_1;
1220
+ }
1221
+ r1 = true;
1222
+ } // seq_1
1223
+ if (r1!==peg$FAILED) {
1224
+ r1 = input.substring(p2, peg$currPos);
1225
+ break choice_1;
1226
+ } else {
1227
+ r1 = peg$FAILED;
1228
+ }
1229
+ // free r4,r5
1230
+ // free p3
1231
+ // free p2
1232
+ p2 = peg$currPos;
1233
+ seq_3: {
1234
+ p3 = peg$currPos;
1235
+ if (input.charCodeAt(peg$currPos) === 34) {
1236
+ r5 = true;
1237
+ peg$currPos += 1;
1238
+ } else {
1239
+ r5 = peg$FAILED;
1240
+ r1 = peg$FAILED;
1241
+ break seq_3;
1242
+ }
1243
+ for (;;) {
1244
+ choice_3: {
1245
+ seq_4: {
1246
+ p7 = peg$currPos;
1247
+ if (input.charCodeAt(peg$currPos) === 92) {
1248
+ r9 = true;
1249
+ peg$currPos += 1;
1250
+ } else {
1251
+ r9 = peg$FAILED;
1252
+ r6 = peg$FAILED;
1253
+ break seq_4;
1254
+ }
1255
+ if (peg$currPos < input.length) {
1256
+ peg$currPos++;
1257
+ r8 = true;
1258
+ } else {
1259
+ r8 = peg$FAILED;
1260
+ peg$currPos = p7;
1261
+ r6 = peg$FAILED;
1262
+ break seq_4;
1263
+ }
1264
+ r6 = true;
1265
+ } // seq_4
1266
+ if (r6!==peg$FAILED) {
1267
+ break choice_3;
1268
+ }
1269
+ // free r9,r8
1270
+ // free p7
1271
+ if (/^[^"\\]/.test(input.charAt(peg$currPos))) {
1272
+ r6 = true;
1273
+ peg$currPos++;
1274
+ } else {
1275
+ r6 = peg$FAILED;
1276
+ }
1277
+ } // choice_3
1278
+ if (r6===peg$FAILED) {
1279
+ break;
1280
+ }
1281
+ }
1282
+ // free r6
1283
+ r4 = true;
1284
+ // free r4
1285
+ if (input.charCodeAt(peg$currPos) === 34) {
1286
+ r4 = true;
1287
+ peg$currPos += 1;
1288
+ } else {
1289
+ r4 = peg$FAILED;
1290
+ peg$currPos = p3;
1291
+ r1 = peg$FAILED;
1292
+ break seq_3;
1293
+ }
1294
+ r1 = true;
1295
+ } // seq_3
1296
+ if (r1!==peg$FAILED) {
1297
+ r1 = input.substring(p2, peg$currPos);
1298
+ } else {
1299
+ r1 = peg$FAILED;
1300
+ }
1301
+ // free r5,r4
1302
+ // free p3
1303
+ // free p2
1304
+ } // choice_1
1305
+ if (r1===peg$FAILED) {
1306
+ if (!silence) { peg$fail(peg$c4); }
1307
+ }
1308
+ return r1;
1309
+ }
1310
+ function peg$parseValueParts() {
1311
+ var r1,p2,r3,r4;
1312
+ p2 = peg$currPos;
1313
+ r3 = [];
1314
+ for (;;) {
1315
+ r4 = peg$parseValuePart();
1316
+ if (r4!==peg$FAILED) {
1317
+ r3.push(r4);
1318
+ } else {
1319
+ break;
1320
+ }
1321
+ }
1322
+ // toks <- r3
1323
+ // free r4
1324
+ r1 = r3;
1325
+ peg$savedPos = p2;
1326
+ r1 = peg$a0(r3);
1327
+ // free p2
1328
+ return r1;
1329
+ }
1330
+
1331
+ // start
1332
+
1333
+ if (options.stream) {
1334
+ switch (peg$startRule) {
1335
+
1336
+ default:
1337
+ throw new Error(`Can't stream rule "${peg$startRule}".`);
1338
+ }
1339
+ } else {
1340
+ switch (peg$startRule) {
1341
+ case '(DEFAULT)':
1342
+ case "start":
1343
+ peg$result = peg$parsestart(false);
1344
+ break;
1345
+ default:
1346
+ throw new Error(`Can't start parsing from rule "${peg$startRule}".`);
1347
+ }
1348
+ }
1349
+
1350
+ if (peg$result !== peg$FAILED && peg$currPos === input.length) {
1351
+ return peg$result;
1352
+ } else {
1353
+ if (peg$result !== peg$FAILED && peg$currPos < input.length) {
1354
+ peg$fail(peg$c0);
1355
+ }
1356
+ throw peg$buildParseException();
1357
+ }
1358
+ }
1359
+
1360
+ return {
1361
+ SyntaxError: peg$SyntaxError,
1362
+ DefaultTracer: peg$DefaultTracer,
1363
+ parse: peg$parse
1364
+ };
1365
+
1366
+ })();
1367
+