links-notation 0.21.2 → 0.22.0
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.
- package/README.md +19 -3
- package/README.ru.md +17 -0
- package/dist/index.js +383 -135
- package/index.d.ts +15 -1
- package/package.json +1 -1
- package/src/ParseError.js +8 -1
- package/src/Parser.js +12 -3
- package/src/grammar.pegjs +85 -5
- package/src/index.js +1 -1
- package/src/parser-generated.js +382 -127
- package/tests/NestingDepth.test.js +124 -0
- package/tests/NestingLimit.test.js +132 -0
- package/tests/support/nestingDepthWorker.js +17 -0
package/dist/index.js
CHANGED
|
@@ -280,7 +280,9 @@ class ParseError extends Error {
|
|
|
280
280
|
const lineText = lineAt(input, start.offset);
|
|
281
281
|
const summary = `line ${start.line}, column ${start.column}: ${error.message}`;
|
|
282
282
|
const snippet = quote(start.line, lineText, start.column);
|
|
283
|
-
|
|
283
|
+
const maxDepth = error?.maxDepth ?? null;
|
|
284
|
+
const kind = maxDepth === null ? "Syntax error" : "Nesting too deep";
|
|
285
|
+
super(`${kind} at ${summary}
|
|
284
286
|
${snippet}`);
|
|
285
287
|
this.name = "ParseError";
|
|
286
288
|
this.cause = error;
|
|
@@ -291,6 +293,7 @@ ${snippet}`);
|
|
|
291
293
|
this.found = error.found ?? null;
|
|
292
294
|
this.lineText = lineText;
|
|
293
295
|
this.snippet = snippet;
|
|
296
|
+
this.maxDepth = maxDepth;
|
|
294
297
|
}
|
|
295
298
|
}
|
|
296
299
|
function lineAt(input, offset) {
|
|
@@ -639,11 +642,11 @@ function peg$parse(input, options) {
|
|
|
639
642
|
const peg$e0 = peg$classExpectation([" ", "\t"], false, false, false);
|
|
640
643
|
const peg$e1 = peg$classExpectation(["\r", `
|
|
641
644
|
`], false, false, false);
|
|
642
|
-
const peg$e2 = peg$
|
|
643
|
-
const peg$e3 = peg$literalExpectation("
|
|
644
|
-
const peg$e4 = peg$literalExpectation("
|
|
645
|
-
const peg$e5 = peg$literalExpectation(
|
|
646
|
-
const peg$e6 = peg$
|
|
645
|
+
const peg$e2 = peg$anyExpectation();
|
|
646
|
+
const peg$e3 = peg$literalExpectation("(", false);
|
|
647
|
+
const peg$e4 = peg$literalExpectation(")", false);
|
|
648
|
+
const peg$e5 = peg$literalExpectation(":", false);
|
|
649
|
+
const peg$e6 = peg$literalExpectation('"', false);
|
|
647
650
|
const peg$e7 = peg$literalExpectation("'", false);
|
|
648
651
|
const peg$e8 = peg$literalExpectation("`", false);
|
|
649
652
|
const peg$e9 = peg$literalExpectation(" ", false);
|
|
@@ -673,65 +676,83 @@ function peg$parse(input, options) {
|
|
|
673
676
|
function peg$f6(l) {
|
|
674
677
|
return l;
|
|
675
678
|
}
|
|
676
|
-
function peg$f7(
|
|
679
|
+
function peg$f7() {
|
|
680
|
+
return !unreadableLines.has(lineKey(offset()));
|
|
681
|
+
}
|
|
682
|
+
function peg$f8(start, e) {
|
|
683
|
+
return checkDepth(depth(), start);
|
|
684
|
+
}
|
|
685
|
+
function peg$f9(start, e, saved, l) {
|
|
686
|
+
if (l === null) {
|
|
687
|
+
indentationStack = saved;
|
|
688
|
+
return e;
|
|
689
|
+
}
|
|
677
690
|
return Object.assign({}, e, { children: l });
|
|
678
691
|
}
|
|
679
|
-
function peg$
|
|
680
|
-
|
|
692
|
+
function peg$f10() {
|
|
693
|
+
unreadableLines.add(lineKey(offset()));
|
|
694
|
+
return false;
|
|
681
695
|
}
|
|
682
|
-
function peg$
|
|
696
|
+
function peg$f11(l) {
|
|
683
697
|
return l;
|
|
684
698
|
}
|
|
685
|
-
function peg$
|
|
699
|
+
function peg$f12(i) {
|
|
686
700
|
return { id: i };
|
|
687
701
|
}
|
|
688
|
-
function peg$
|
|
689
|
-
return
|
|
702
|
+
function peg$f13(g, rest) {
|
|
703
|
+
return rest === null ? g : { values: [g].concat(rest) };
|
|
690
704
|
}
|
|
691
|
-
function peg$
|
|
692
|
-
return
|
|
705
|
+
function peg$f14() {
|
|
706
|
+
return null;
|
|
693
707
|
}
|
|
694
|
-
function peg$
|
|
695
|
-
return sl;
|
|
696
|
-
}
|
|
697
|
-
function peg$f14(fl) {
|
|
708
|
+
function peg$f15(fl) {
|
|
698
709
|
return fl;
|
|
699
710
|
}
|
|
700
|
-
function peg$
|
|
711
|
+
function peg$f16(vl) {
|
|
701
712
|
return vl;
|
|
702
713
|
}
|
|
703
|
-
function peg$
|
|
714
|
+
function peg$f17(start) {
|
|
715
|
+
return checkDepth(depth() + 1, start);
|
|
716
|
+
}
|
|
717
|
+
function peg$f18(start, body) {
|
|
704
718
|
exitNestedContext();
|
|
705
719
|
return body;
|
|
706
720
|
}
|
|
707
|
-
function peg$
|
|
721
|
+
function peg$f19() {
|
|
722
|
+
exitNestedContext();
|
|
723
|
+
return false;
|
|
724
|
+
}
|
|
725
|
+
function peg$f20(l) {
|
|
708
726
|
return { nested: l };
|
|
709
727
|
}
|
|
710
|
-
function peg$
|
|
728
|
+
function peg$f21() {
|
|
711
729
|
return { nested: [] };
|
|
712
730
|
}
|
|
713
|
-
function peg$
|
|
731
|
+
function peg$f22() {
|
|
714
732
|
return enterNestedContext();
|
|
715
733
|
}
|
|
716
|
-
function peg$
|
|
734
|
+
function peg$f23() {
|
|
735
|
+
return location();
|
|
736
|
+
}
|
|
737
|
+
function peg$f24(value) {
|
|
717
738
|
return value;
|
|
718
739
|
}
|
|
719
|
-
function peg$
|
|
740
|
+
function peg$f25(list) {
|
|
720
741
|
return list;
|
|
721
742
|
}
|
|
722
|
-
function peg$
|
|
743
|
+
function peg$f26(id, v) {
|
|
723
744
|
return { id, values: v };
|
|
724
745
|
}
|
|
725
|
-
function peg$
|
|
746
|
+
function peg$f27(v) {
|
|
726
747
|
return { values: v };
|
|
727
748
|
}
|
|
728
|
-
function peg$
|
|
749
|
+
function peg$f28(id) {
|
|
729
750
|
return { id, values: [] };
|
|
730
751
|
}
|
|
731
|
-
function peg$
|
|
752
|
+
function peg$f29(chars) {
|
|
732
753
|
return chars.join("");
|
|
733
754
|
}
|
|
734
|
-
function peg$
|
|
755
|
+
function peg$f30() {
|
|
735
756
|
const pos = offset();
|
|
736
757
|
const result = parseQuotedStringAt(input, pos, '"');
|
|
737
758
|
if (result) {
|
|
@@ -741,19 +762,19 @@ function peg$parse(input, options) {
|
|
|
741
762
|
}
|
|
742
763
|
return false;
|
|
743
764
|
}
|
|
744
|
-
function peg$
|
|
765
|
+
function peg$f31(chars) {
|
|
745
766
|
return parsedValue;
|
|
746
767
|
}
|
|
747
|
-
function peg$
|
|
768
|
+
function peg$f32(c, cs) {
|
|
748
769
|
return [c].concat(cs).join("");
|
|
749
770
|
}
|
|
750
|
-
function peg$
|
|
771
|
+
function peg$f33() {
|
|
751
772
|
return parsedLength > 1 && (parsedLength--, true);
|
|
752
773
|
}
|
|
753
|
-
function peg$
|
|
774
|
+
function peg$f34(c) {
|
|
754
775
|
return c;
|
|
755
776
|
}
|
|
756
|
-
function peg$
|
|
777
|
+
function peg$f35() {
|
|
757
778
|
const pos = offset();
|
|
758
779
|
const result = parseQuotedStringAt(input, pos, "'");
|
|
759
780
|
if (result) {
|
|
@@ -763,19 +784,19 @@ function peg$parse(input, options) {
|
|
|
763
784
|
}
|
|
764
785
|
return false;
|
|
765
786
|
}
|
|
766
|
-
function peg$
|
|
787
|
+
function peg$f36(chars) {
|
|
767
788
|
return parsedValue;
|
|
768
789
|
}
|
|
769
|
-
function peg$
|
|
790
|
+
function peg$f37(c, cs) {
|
|
770
791
|
return [c].concat(cs).join("");
|
|
771
792
|
}
|
|
772
|
-
function peg$
|
|
793
|
+
function peg$f38() {
|
|
773
794
|
return parsedLength > 1 && (parsedLength--, true);
|
|
774
795
|
}
|
|
775
|
-
function peg$
|
|
796
|
+
function peg$f39(c) {
|
|
776
797
|
return c;
|
|
777
798
|
}
|
|
778
|
-
function peg$
|
|
799
|
+
function peg$f40() {
|
|
779
800
|
const pos = offset();
|
|
780
801
|
const result = parseQuotedStringAt(input, pos, "`");
|
|
781
802
|
if (result) {
|
|
@@ -785,31 +806,34 @@ function peg$parse(input, options) {
|
|
|
785
806
|
}
|
|
786
807
|
return false;
|
|
787
808
|
}
|
|
788
|
-
function peg$
|
|
809
|
+
function peg$f41(chars) {
|
|
789
810
|
return parsedValue;
|
|
790
811
|
}
|
|
791
|
-
function peg$
|
|
812
|
+
function peg$f42(c, cs) {
|
|
792
813
|
return [c].concat(cs).join("");
|
|
793
814
|
}
|
|
794
|
-
function peg$
|
|
815
|
+
function peg$f43() {
|
|
795
816
|
return parsedLength > 1 && (parsedLength--, true);
|
|
796
817
|
}
|
|
797
|
-
function peg$
|
|
818
|
+
function peg$f44(c) {
|
|
798
819
|
return c;
|
|
799
820
|
}
|
|
800
|
-
function peg$
|
|
821
|
+
function peg$f45() {
|
|
822
|
+
return indentationStack.slice();
|
|
823
|
+
}
|
|
824
|
+
function peg$f46(spaces) {
|
|
801
825
|
setBaseIndentation(spaces);
|
|
802
826
|
}
|
|
803
|
-
function peg$
|
|
827
|
+
function peg$f47(spaces) {
|
|
804
828
|
return normalizeIndentation(spaces) > getCurrentIndentation();
|
|
805
829
|
}
|
|
806
|
-
function peg$
|
|
830
|
+
function peg$f48(spaces) {
|
|
807
831
|
pushIndentation(spaces);
|
|
808
832
|
}
|
|
809
|
-
function peg$
|
|
833
|
+
function peg$f49(spaces) {
|
|
810
834
|
return checkIndentation(spaces);
|
|
811
835
|
}
|
|
812
|
-
function peg$
|
|
836
|
+
function peg$f50() {
|
|
813
837
|
return isInsideNestedContext();
|
|
814
838
|
}
|
|
815
839
|
let peg$currPos = options.peg$currPos | 0;
|
|
@@ -1135,16 +1159,47 @@ function peg$parse(input, options) {
|
|
|
1135
1159
|
return s0;
|
|
1136
1160
|
}
|
|
1137
1161
|
function peg$parseelement() {
|
|
1138
|
-
let s0, s1, s2, s3;
|
|
1162
|
+
let s0, s1, s2, s3, s4, s5, s6, s7, s8;
|
|
1139
1163
|
s0 = peg$currPos;
|
|
1140
|
-
|
|
1164
|
+
peg$savedPos = peg$currPos;
|
|
1165
|
+
s1 = peg$f7();
|
|
1166
|
+
if (s1) {
|
|
1167
|
+
s1 = undefined;
|
|
1168
|
+
} else {
|
|
1169
|
+
s1 = peg$FAILED;
|
|
1170
|
+
}
|
|
1141
1171
|
if (s1 !== peg$FAILED) {
|
|
1142
|
-
s2 = peg$
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1172
|
+
s2 = peg$parseHERE();
|
|
1173
|
+
s3 = peg$parseanyLink();
|
|
1174
|
+
if (s3 !== peg$FAILED) {
|
|
1175
|
+
peg$savedPos = peg$currPos;
|
|
1176
|
+
s4 = peg$f8(s2, s3);
|
|
1177
|
+
if (s4) {
|
|
1178
|
+
s4 = undefined;
|
|
1179
|
+
} else {
|
|
1180
|
+
s4 = peg$FAILED;
|
|
1181
|
+
}
|
|
1182
|
+
if (s4 !== peg$FAILED) {
|
|
1183
|
+
s5 = peg$parseSAVE_INDENTATION();
|
|
1184
|
+
s6 = peg$currPos;
|
|
1185
|
+
s7 = peg$parsePUSH_INDENTATION();
|
|
1186
|
+
if (s7 !== peg$FAILED) {
|
|
1187
|
+
s8 = peg$parselinks();
|
|
1188
|
+
if (s8 !== peg$FAILED) {
|
|
1189
|
+
s6 = s8;
|
|
1190
|
+
} else {
|
|
1191
|
+
peg$currPos = s6;
|
|
1192
|
+
s6 = peg$FAILED;
|
|
1193
|
+
}
|
|
1194
|
+
} else {
|
|
1195
|
+
peg$currPos = s6;
|
|
1196
|
+
s6 = peg$FAILED;
|
|
1197
|
+
}
|
|
1198
|
+
if (s6 === peg$FAILED) {
|
|
1199
|
+
s6 = null;
|
|
1200
|
+
}
|
|
1146
1201
|
peg$savedPos = s0;
|
|
1147
|
-
s0 = peg$
|
|
1202
|
+
s0 = peg$f9(s2, s3, s5, s6);
|
|
1148
1203
|
} else {
|
|
1149
1204
|
peg$currPos = s0;
|
|
1150
1205
|
s0 = peg$FAILED;
|
|
@@ -1159,12 +1214,34 @@ function peg$parse(input, options) {
|
|
|
1159
1214
|
}
|
|
1160
1215
|
if (s0 === peg$FAILED) {
|
|
1161
1216
|
s0 = peg$currPos;
|
|
1162
|
-
|
|
1217
|
+
peg$savedPos = peg$currPos;
|
|
1218
|
+
s1 = peg$f10();
|
|
1219
|
+
if (s1) {
|
|
1220
|
+
s1 = undefined;
|
|
1221
|
+
} else {
|
|
1222
|
+
s1 = peg$FAILED;
|
|
1223
|
+
}
|
|
1163
1224
|
if (s1 !== peg$FAILED) {
|
|
1164
|
-
peg$
|
|
1165
|
-
|
|
1225
|
+
if (input.length > peg$currPos) {
|
|
1226
|
+
s2 = input.charAt(peg$currPos);
|
|
1227
|
+
peg$currPos++;
|
|
1228
|
+
} else {
|
|
1229
|
+
s2 = peg$FAILED;
|
|
1230
|
+
if (peg$silentFails === 0) {
|
|
1231
|
+
peg$fail(peg$e2);
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
if (s2 !== peg$FAILED) {
|
|
1235
|
+
s1 = [s1, s2];
|
|
1236
|
+
s0 = s1;
|
|
1237
|
+
} else {
|
|
1238
|
+
peg$currPos = s0;
|
|
1239
|
+
s0 = peg$FAILED;
|
|
1240
|
+
}
|
|
1241
|
+
} else {
|
|
1242
|
+
peg$currPos = s0;
|
|
1243
|
+
s0 = peg$FAILED;
|
|
1166
1244
|
}
|
|
1167
|
-
s0 = s1;
|
|
1168
1245
|
}
|
|
1169
1246
|
return s0;
|
|
1170
1247
|
}
|
|
@@ -1174,7 +1251,7 @@ function peg$parse(input, options) {
|
|
|
1174
1251
|
s1 = peg$parsenestedGroup();
|
|
1175
1252
|
if (s1 !== peg$FAILED) {
|
|
1176
1253
|
peg$savedPos = s0;
|
|
1177
|
-
s1 = peg$
|
|
1254
|
+
s1 = peg$f11(s1);
|
|
1178
1255
|
}
|
|
1179
1256
|
s0 = s1;
|
|
1180
1257
|
if (s0 === peg$FAILED) {
|
|
@@ -1182,7 +1259,7 @@ function peg$parse(input, options) {
|
|
|
1182
1259
|
s1 = peg$parsereference();
|
|
1183
1260
|
if (s1 !== peg$FAILED) {
|
|
1184
1261
|
peg$savedPos = s0;
|
|
1185
|
-
s1 = peg$
|
|
1262
|
+
s1 = peg$f12(s1);
|
|
1186
1263
|
}
|
|
1187
1264
|
s0 = s1;
|
|
1188
1265
|
}
|
|
@@ -1191,12 +1268,28 @@ function peg$parse(input, options) {
|
|
|
1191
1268
|
function peg$parseanyLink() {
|
|
1192
1269
|
let s0, s1, s2;
|
|
1193
1270
|
s0 = peg$currPos;
|
|
1194
|
-
s1 = peg$
|
|
1271
|
+
s1 = peg$currPos;
|
|
1272
|
+
peg$silentFails++;
|
|
1273
|
+
if (input.charCodeAt(peg$currPos) === 40) {
|
|
1274
|
+
s2 = peg$c0;
|
|
1275
|
+
peg$currPos++;
|
|
1276
|
+
} else {
|
|
1277
|
+
s2 = peg$FAILED;
|
|
1278
|
+
if (peg$silentFails === 0) {
|
|
1279
|
+
peg$fail(peg$e3);
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
peg$silentFails--;
|
|
1283
|
+
if (s2 !== peg$FAILED) {
|
|
1284
|
+
peg$currPos = s1;
|
|
1285
|
+
s1 = undefined;
|
|
1286
|
+
} else {
|
|
1287
|
+
s1 = peg$FAILED;
|
|
1288
|
+
}
|
|
1195
1289
|
if (s1 !== peg$FAILED) {
|
|
1196
|
-
s2 = peg$
|
|
1290
|
+
s2 = peg$parsegroupLink();
|
|
1197
1291
|
if (s2 !== peg$FAILED) {
|
|
1198
|
-
|
|
1199
|
-
s0 = peg$f11(s1);
|
|
1292
|
+
s0 = s2;
|
|
1200
1293
|
} else {
|
|
1201
1294
|
peg$currPos = s0;
|
|
1202
1295
|
s0 = peg$FAILED;
|
|
@@ -1207,20 +1300,84 @@ function peg$parse(input, options) {
|
|
|
1207
1300
|
}
|
|
1208
1301
|
if (s0 === peg$FAILED) {
|
|
1209
1302
|
s0 = peg$currPos;
|
|
1210
|
-
s1 = peg$
|
|
1303
|
+
s1 = peg$currPos;
|
|
1304
|
+
peg$silentFails++;
|
|
1305
|
+
if (input.charCodeAt(peg$currPos) === 40) {
|
|
1306
|
+
s2 = peg$c0;
|
|
1307
|
+
peg$currPos++;
|
|
1308
|
+
} else {
|
|
1309
|
+
s2 = peg$FAILED;
|
|
1310
|
+
if (peg$silentFails === 0) {
|
|
1311
|
+
peg$fail(peg$e3);
|
|
1312
|
+
}
|
|
1313
|
+
}
|
|
1314
|
+
peg$silentFails--;
|
|
1315
|
+
if (s2 === peg$FAILED) {
|
|
1316
|
+
s1 = undefined;
|
|
1317
|
+
} else {
|
|
1318
|
+
peg$currPos = s1;
|
|
1319
|
+
s1 = peg$FAILED;
|
|
1320
|
+
}
|
|
1211
1321
|
if (s1 !== peg$FAILED) {
|
|
1322
|
+
s2 = peg$parseindentedIdLink();
|
|
1323
|
+
if (s2 === peg$FAILED) {
|
|
1324
|
+
s2 = peg$parsesingleLineAnyLink();
|
|
1325
|
+
}
|
|
1326
|
+
if (s2 !== peg$FAILED) {
|
|
1327
|
+
s0 = s2;
|
|
1328
|
+
} else {
|
|
1329
|
+
peg$currPos = s0;
|
|
1330
|
+
s0 = peg$FAILED;
|
|
1331
|
+
}
|
|
1332
|
+
} else {
|
|
1333
|
+
peg$currPos = s0;
|
|
1334
|
+
s0 = peg$FAILED;
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
return s0;
|
|
1338
|
+
}
|
|
1339
|
+
function peg$parsegroupLink() {
|
|
1340
|
+
let s0, s1, s2;
|
|
1341
|
+
s0 = peg$currPos;
|
|
1342
|
+
s1 = peg$parsenestedGroup();
|
|
1343
|
+
if (s1 !== peg$FAILED) {
|
|
1344
|
+
s2 = peg$parsegroupLinkRest();
|
|
1345
|
+
if (s2 !== peg$FAILED) {
|
|
1212
1346
|
peg$savedPos = s0;
|
|
1213
|
-
|
|
1347
|
+
s0 = peg$f13(s1, s2);
|
|
1348
|
+
} else {
|
|
1349
|
+
peg$currPos = s0;
|
|
1350
|
+
s0 = peg$FAILED;
|
|
1214
1351
|
}
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1352
|
+
} else {
|
|
1353
|
+
peg$currPos = s0;
|
|
1354
|
+
s0 = peg$FAILED;
|
|
1355
|
+
}
|
|
1356
|
+
return s0;
|
|
1357
|
+
}
|
|
1358
|
+
function peg$parsegroupLinkRest() {
|
|
1359
|
+
let s0, s1, s2;
|
|
1360
|
+
s0 = peg$currPos;
|
|
1361
|
+
s1 = peg$parseeol();
|
|
1362
|
+
if (s1 !== peg$FAILED) {
|
|
1363
|
+
peg$savedPos = s0;
|
|
1364
|
+
s1 = peg$f14();
|
|
1365
|
+
}
|
|
1366
|
+
s0 = s1;
|
|
1367
|
+
if (s0 === peg$FAILED) {
|
|
1368
|
+
s0 = peg$currPos;
|
|
1369
|
+
s1 = [];
|
|
1370
|
+
s2 = peg$parsesingleLineValueAndWhitespace();
|
|
1371
|
+
while (s2 !== peg$FAILED) {
|
|
1372
|
+
s1.push(s2);
|
|
1373
|
+
s2 = peg$parsesingleLineValueAndWhitespace();
|
|
1374
|
+
}
|
|
1375
|
+
s2 = peg$parseeol();
|
|
1376
|
+
if (s2 !== peg$FAILED) {
|
|
1223
1377
|
s0 = s1;
|
|
1378
|
+
} else {
|
|
1379
|
+
peg$currPos = s0;
|
|
1380
|
+
s0 = peg$FAILED;
|
|
1224
1381
|
}
|
|
1225
1382
|
}
|
|
1226
1383
|
return s0;
|
|
@@ -1233,7 +1390,7 @@ function peg$parse(input, options) {
|
|
|
1233
1390
|
s2 = peg$parseeol();
|
|
1234
1391
|
if (s2 !== peg$FAILED) {
|
|
1235
1392
|
peg$savedPos = s0;
|
|
1236
|
-
s0 = peg$
|
|
1393
|
+
s0 = peg$f15(s1);
|
|
1237
1394
|
} else {
|
|
1238
1395
|
peg$currPos = s0;
|
|
1239
1396
|
s0 = peg$FAILED;
|
|
@@ -1249,7 +1406,7 @@ function peg$parse(input, options) {
|
|
|
1249
1406
|
s2 = peg$parseeol();
|
|
1250
1407
|
if (s2 !== peg$FAILED) {
|
|
1251
1408
|
peg$savedPos = s0;
|
|
1252
|
-
s0 = peg$
|
|
1409
|
+
s0 = peg$f16(s1);
|
|
1253
1410
|
} else {
|
|
1254
1411
|
peg$currPos = s0;
|
|
1255
1412
|
s0 = peg$FAILED;
|
|
@@ -1262,24 +1419,37 @@ function peg$parse(input, options) {
|
|
|
1262
1419
|
return s0;
|
|
1263
1420
|
}
|
|
1264
1421
|
function peg$parsenestedGroup() {
|
|
1265
|
-
let s0, s1, s2, s3;
|
|
1422
|
+
let s0, s1, s2, s3, s4, s5;
|
|
1266
1423
|
s0 = peg$currPos;
|
|
1424
|
+
s1 = peg$parseHERE();
|
|
1267
1425
|
if (input.charCodeAt(peg$currPos) === 40) {
|
|
1268
|
-
|
|
1426
|
+
s2 = peg$c0;
|
|
1269
1427
|
peg$currPos++;
|
|
1270
1428
|
} else {
|
|
1271
|
-
|
|
1429
|
+
s2 = peg$FAILED;
|
|
1272
1430
|
if (peg$silentFails === 0) {
|
|
1273
|
-
peg$fail(peg$
|
|
1431
|
+
peg$fail(peg$e3);
|
|
1274
1432
|
}
|
|
1275
1433
|
}
|
|
1276
|
-
if (
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1434
|
+
if (s2 !== peg$FAILED) {
|
|
1435
|
+
peg$savedPos = peg$currPos;
|
|
1436
|
+
s3 = peg$f17(s1);
|
|
1437
|
+
if (s3) {
|
|
1438
|
+
s3 = undefined;
|
|
1439
|
+
} else {
|
|
1440
|
+
s3 = peg$FAILED;
|
|
1441
|
+
}
|
|
1442
|
+
if (s3 !== peg$FAILED) {
|
|
1443
|
+
s4 = peg$parseENTER_NESTED_CONTEXT();
|
|
1444
|
+
if (s4 !== peg$FAILED) {
|
|
1445
|
+
s5 = peg$parsenestedGroupBody();
|
|
1446
|
+
if (s5 !== peg$FAILED) {
|
|
1447
|
+
peg$savedPos = s0;
|
|
1448
|
+
s0 = peg$f18(s1, s5);
|
|
1449
|
+
} else {
|
|
1450
|
+
peg$currPos = s0;
|
|
1451
|
+
s0 = peg$FAILED;
|
|
1452
|
+
}
|
|
1283
1453
|
} else {
|
|
1284
1454
|
peg$currPos = s0;
|
|
1285
1455
|
s0 = peg$FAILED;
|
|
@@ -1292,6 +1462,37 @@ function peg$parse(input, options) {
|
|
|
1292
1462
|
peg$currPos = s0;
|
|
1293
1463
|
s0 = peg$FAILED;
|
|
1294
1464
|
}
|
|
1465
|
+
if (s0 === peg$FAILED) {
|
|
1466
|
+
s0 = peg$currPos;
|
|
1467
|
+
if (input.charCodeAt(peg$currPos) === 40) {
|
|
1468
|
+
s1 = peg$c0;
|
|
1469
|
+
peg$currPos++;
|
|
1470
|
+
} else {
|
|
1471
|
+
s1 = peg$FAILED;
|
|
1472
|
+
if (peg$silentFails === 0) {
|
|
1473
|
+
peg$fail(peg$e3);
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
if (s1 !== peg$FAILED) {
|
|
1477
|
+
peg$savedPos = peg$currPos;
|
|
1478
|
+
s2 = peg$f19();
|
|
1479
|
+
if (s2) {
|
|
1480
|
+
s2 = undefined;
|
|
1481
|
+
} else {
|
|
1482
|
+
s2 = peg$FAILED;
|
|
1483
|
+
}
|
|
1484
|
+
if (s2 !== peg$FAILED) {
|
|
1485
|
+
s1 = [s1, s2];
|
|
1486
|
+
s0 = s1;
|
|
1487
|
+
} else {
|
|
1488
|
+
peg$currPos = s0;
|
|
1489
|
+
s0 = peg$FAILED;
|
|
1490
|
+
}
|
|
1491
|
+
} else {
|
|
1492
|
+
peg$currPos = s0;
|
|
1493
|
+
s0 = peg$FAILED;
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1295
1496
|
return s0;
|
|
1296
1497
|
}
|
|
1297
1498
|
function peg$parsenestedGroupBody() {
|
|
@@ -1307,12 +1508,12 @@ function peg$parse(input, options) {
|
|
|
1307
1508
|
} else {
|
|
1308
1509
|
s4 = peg$FAILED;
|
|
1309
1510
|
if (peg$silentFails === 0) {
|
|
1310
|
-
peg$fail(peg$
|
|
1511
|
+
peg$fail(peg$e4);
|
|
1311
1512
|
}
|
|
1312
1513
|
}
|
|
1313
1514
|
if (s4 !== peg$FAILED) {
|
|
1314
1515
|
peg$savedPos = s0;
|
|
1315
|
-
s0 = peg$
|
|
1516
|
+
s0 = peg$f20(s2);
|
|
1316
1517
|
} else {
|
|
1317
1518
|
peg$currPos = s0;
|
|
1318
1519
|
s0 = peg$FAILED;
|
|
@@ -1330,12 +1531,12 @@ function peg$parse(input, options) {
|
|
|
1330
1531
|
} else {
|
|
1331
1532
|
s2 = peg$FAILED;
|
|
1332
1533
|
if (peg$silentFails === 0) {
|
|
1333
|
-
peg$fail(peg$
|
|
1534
|
+
peg$fail(peg$e4);
|
|
1334
1535
|
}
|
|
1335
1536
|
}
|
|
1336
1537
|
if (s2 !== peg$FAILED) {
|
|
1337
1538
|
peg$savedPos = s0;
|
|
1338
|
-
s0 = peg$
|
|
1539
|
+
s0 = peg$f21();
|
|
1339
1540
|
} else {
|
|
1340
1541
|
peg$currPos = s0;
|
|
1341
1542
|
s0 = peg$FAILED;
|
|
@@ -1346,7 +1547,7 @@ function peg$parse(input, options) {
|
|
|
1346
1547
|
function peg$parseENTER_NESTED_CONTEXT() {
|
|
1347
1548
|
let s0;
|
|
1348
1549
|
peg$savedPos = peg$currPos;
|
|
1349
|
-
s0 = peg$
|
|
1550
|
+
s0 = peg$f22();
|
|
1350
1551
|
if (s0) {
|
|
1351
1552
|
s0 = undefined;
|
|
1352
1553
|
} else {
|
|
@@ -1354,6 +1555,15 @@ function peg$parse(input, options) {
|
|
|
1354
1555
|
}
|
|
1355
1556
|
return s0;
|
|
1356
1557
|
}
|
|
1558
|
+
function peg$parseHERE() {
|
|
1559
|
+
let s0, s1;
|
|
1560
|
+
s0 = peg$currPos;
|
|
1561
|
+
s1 = "";
|
|
1562
|
+
peg$savedPos = s0;
|
|
1563
|
+
s1 = peg$f23();
|
|
1564
|
+
s0 = s1;
|
|
1565
|
+
return s0;
|
|
1566
|
+
}
|
|
1357
1567
|
function peg$parsesingleLineValueAndWhitespace() {
|
|
1358
1568
|
let s0, s1, s2;
|
|
1359
1569
|
s0 = peg$currPos;
|
|
@@ -1361,7 +1571,7 @@ function peg$parse(input, options) {
|
|
|
1361
1571
|
s2 = peg$parsereferenceOrLink();
|
|
1362
1572
|
if (s2 !== peg$FAILED) {
|
|
1363
1573
|
peg$savedPos = s0;
|
|
1364
|
-
s0 = peg$
|
|
1574
|
+
s0 = peg$f24(s2);
|
|
1365
1575
|
} else {
|
|
1366
1576
|
peg$currPos = s0;
|
|
1367
1577
|
s0 = peg$FAILED;
|
|
@@ -1383,7 +1593,7 @@ function peg$parse(input, options) {
|
|
|
1383
1593
|
}
|
|
1384
1594
|
if (s1 !== peg$FAILED) {
|
|
1385
1595
|
peg$savedPos = s0;
|
|
1386
|
-
s1 = peg$
|
|
1596
|
+
s1 = peg$f25(s1);
|
|
1387
1597
|
}
|
|
1388
1598
|
s0 = s1;
|
|
1389
1599
|
return s0;
|
|
@@ -1401,14 +1611,14 @@ function peg$parse(input, options) {
|
|
|
1401
1611
|
} else {
|
|
1402
1612
|
s4 = peg$FAILED;
|
|
1403
1613
|
if (peg$silentFails === 0) {
|
|
1404
|
-
peg$fail(peg$
|
|
1614
|
+
peg$fail(peg$e5);
|
|
1405
1615
|
}
|
|
1406
1616
|
}
|
|
1407
1617
|
if (s4 !== peg$FAILED) {
|
|
1408
1618
|
s5 = peg$parsesingleLineValues();
|
|
1409
1619
|
if (s5 !== peg$FAILED) {
|
|
1410
1620
|
peg$savedPos = s0;
|
|
1411
|
-
s0 = peg$
|
|
1621
|
+
s0 = peg$f26(s2, s5);
|
|
1412
1622
|
} else {
|
|
1413
1623
|
peg$currPos = s0;
|
|
1414
1624
|
s0 = peg$FAILED;
|
|
@@ -1429,7 +1639,7 @@ function peg$parse(input, options) {
|
|
|
1429
1639
|
s1 = peg$parsesingleLineValues();
|
|
1430
1640
|
if (s1 !== peg$FAILED) {
|
|
1431
1641
|
peg$savedPos = s0;
|
|
1432
|
-
s1 = peg$
|
|
1642
|
+
s1 = peg$f27(s1);
|
|
1433
1643
|
}
|
|
1434
1644
|
s0 = s1;
|
|
1435
1645
|
return s0;
|
|
@@ -1446,14 +1656,14 @@ function peg$parse(input, options) {
|
|
|
1446
1656
|
} else {
|
|
1447
1657
|
s3 = peg$FAILED;
|
|
1448
1658
|
if (peg$silentFails === 0) {
|
|
1449
|
-
peg$fail(peg$
|
|
1659
|
+
peg$fail(peg$e5);
|
|
1450
1660
|
}
|
|
1451
1661
|
}
|
|
1452
1662
|
if (s3 !== peg$FAILED) {
|
|
1453
1663
|
s4 = peg$parseeol();
|
|
1454
1664
|
if (s4 !== peg$FAILED) {
|
|
1455
1665
|
peg$savedPos = s0;
|
|
1456
|
-
s0 = peg$
|
|
1666
|
+
s0 = peg$f28(s1);
|
|
1457
1667
|
} else {
|
|
1458
1668
|
peg$currPos = s0;
|
|
1459
1669
|
s0 = peg$FAILED;
|
|
@@ -1491,7 +1701,7 @@ function peg$parse(input, options) {
|
|
|
1491
1701
|
}
|
|
1492
1702
|
if (s1 !== peg$FAILED) {
|
|
1493
1703
|
peg$savedPos = s0;
|
|
1494
|
-
s1 = peg$
|
|
1704
|
+
s1 = peg$f29(s1);
|
|
1495
1705
|
}
|
|
1496
1706
|
s0 = s1;
|
|
1497
1707
|
return s0;
|
|
@@ -1518,7 +1728,7 @@ function peg$parse(input, options) {
|
|
|
1518
1728
|
} else {
|
|
1519
1729
|
s2 = peg$FAILED;
|
|
1520
1730
|
if (peg$silentFails === 0) {
|
|
1521
|
-
peg$fail(peg$
|
|
1731
|
+
peg$fail(peg$e6);
|
|
1522
1732
|
}
|
|
1523
1733
|
}
|
|
1524
1734
|
peg$silentFails--;
|
|
@@ -1530,7 +1740,7 @@ function peg$parse(input, options) {
|
|
|
1530
1740
|
}
|
|
1531
1741
|
if (s1 !== peg$FAILED) {
|
|
1532
1742
|
peg$savedPos = peg$currPos;
|
|
1533
|
-
s2 = peg$
|
|
1743
|
+
s2 = peg$f30();
|
|
1534
1744
|
if (s2) {
|
|
1535
1745
|
s2 = undefined;
|
|
1536
1746
|
} else {
|
|
@@ -1540,7 +1750,7 @@ function peg$parse(input, options) {
|
|
|
1540
1750
|
s3 = peg$parseconsumeDouble();
|
|
1541
1751
|
if (s3 !== peg$FAILED) {
|
|
1542
1752
|
peg$savedPos = s0;
|
|
1543
|
-
s0 = peg$
|
|
1753
|
+
s0 = peg$f31(s3);
|
|
1544
1754
|
} else {
|
|
1545
1755
|
peg$currPos = s0;
|
|
1546
1756
|
s0 = peg$FAILED;
|
|
@@ -1564,7 +1774,7 @@ function peg$parse(input, options) {
|
|
|
1564
1774
|
} else {
|
|
1565
1775
|
s1 = peg$FAILED;
|
|
1566
1776
|
if (peg$silentFails === 0) {
|
|
1567
|
-
peg$fail(peg$
|
|
1777
|
+
peg$fail(peg$e2);
|
|
1568
1778
|
}
|
|
1569
1779
|
}
|
|
1570
1780
|
if (s1 !== peg$FAILED) {
|
|
@@ -1575,7 +1785,7 @@ function peg$parse(input, options) {
|
|
|
1575
1785
|
s3 = peg$parseconsumeDoubleMore();
|
|
1576
1786
|
}
|
|
1577
1787
|
peg$savedPos = s0;
|
|
1578
|
-
s0 = peg$
|
|
1788
|
+
s0 = peg$f32(s1, s2);
|
|
1579
1789
|
} else {
|
|
1580
1790
|
peg$currPos = s0;
|
|
1581
1791
|
s0 = peg$FAILED;
|
|
@@ -1586,7 +1796,7 @@ function peg$parse(input, options) {
|
|
|
1586
1796
|
let s0, s1, s2;
|
|
1587
1797
|
s0 = peg$currPos;
|
|
1588
1798
|
peg$savedPos = peg$currPos;
|
|
1589
|
-
s1 = peg$
|
|
1799
|
+
s1 = peg$f33();
|
|
1590
1800
|
if (s1) {
|
|
1591
1801
|
s1 = undefined;
|
|
1592
1802
|
} else {
|
|
@@ -1599,12 +1809,12 @@ function peg$parse(input, options) {
|
|
|
1599
1809
|
} else {
|
|
1600
1810
|
s2 = peg$FAILED;
|
|
1601
1811
|
if (peg$silentFails === 0) {
|
|
1602
|
-
peg$fail(peg$
|
|
1812
|
+
peg$fail(peg$e2);
|
|
1603
1813
|
}
|
|
1604
1814
|
}
|
|
1605
1815
|
if (s2 !== peg$FAILED) {
|
|
1606
1816
|
peg$savedPos = s0;
|
|
1607
|
-
s0 = peg$
|
|
1817
|
+
s0 = peg$f34(s2);
|
|
1608
1818
|
} else {
|
|
1609
1819
|
peg$currPos = s0;
|
|
1610
1820
|
s0 = peg$FAILED;
|
|
@@ -1638,7 +1848,7 @@ function peg$parse(input, options) {
|
|
|
1638
1848
|
}
|
|
1639
1849
|
if (s1 !== peg$FAILED) {
|
|
1640
1850
|
peg$savedPos = peg$currPos;
|
|
1641
|
-
s2 = peg$
|
|
1851
|
+
s2 = peg$f35();
|
|
1642
1852
|
if (s2) {
|
|
1643
1853
|
s2 = undefined;
|
|
1644
1854
|
} else {
|
|
@@ -1648,7 +1858,7 @@ function peg$parse(input, options) {
|
|
|
1648
1858
|
s3 = peg$parseconsumeSingle();
|
|
1649
1859
|
if (s3 !== peg$FAILED) {
|
|
1650
1860
|
peg$savedPos = s0;
|
|
1651
|
-
s0 = peg$
|
|
1861
|
+
s0 = peg$f36(s3);
|
|
1652
1862
|
} else {
|
|
1653
1863
|
peg$currPos = s0;
|
|
1654
1864
|
s0 = peg$FAILED;
|
|
@@ -1672,7 +1882,7 @@ function peg$parse(input, options) {
|
|
|
1672
1882
|
} else {
|
|
1673
1883
|
s1 = peg$FAILED;
|
|
1674
1884
|
if (peg$silentFails === 0) {
|
|
1675
|
-
peg$fail(peg$
|
|
1885
|
+
peg$fail(peg$e2);
|
|
1676
1886
|
}
|
|
1677
1887
|
}
|
|
1678
1888
|
if (s1 !== peg$FAILED) {
|
|
@@ -1683,7 +1893,7 @@ function peg$parse(input, options) {
|
|
|
1683
1893
|
s3 = peg$parseconsumeSingleMore();
|
|
1684
1894
|
}
|
|
1685
1895
|
peg$savedPos = s0;
|
|
1686
|
-
s0 = peg$
|
|
1896
|
+
s0 = peg$f37(s1, s2);
|
|
1687
1897
|
} else {
|
|
1688
1898
|
peg$currPos = s0;
|
|
1689
1899
|
s0 = peg$FAILED;
|
|
@@ -1694,7 +1904,7 @@ function peg$parse(input, options) {
|
|
|
1694
1904
|
let s0, s1, s2;
|
|
1695
1905
|
s0 = peg$currPos;
|
|
1696
1906
|
peg$savedPos = peg$currPos;
|
|
1697
|
-
s1 = peg$
|
|
1907
|
+
s1 = peg$f38();
|
|
1698
1908
|
if (s1) {
|
|
1699
1909
|
s1 = undefined;
|
|
1700
1910
|
} else {
|
|
@@ -1707,12 +1917,12 @@ function peg$parse(input, options) {
|
|
|
1707
1917
|
} else {
|
|
1708
1918
|
s2 = peg$FAILED;
|
|
1709
1919
|
if (peg$silentFails === 0) {
|
|
1710
|
-
peg$fail(peg$
|
|
1920
|
+
peg$fail(peg$e2);
|
|
1711
1921
|
}
|
|
1712
1922
|
}
|
|
1713
1923
|
if (s2 !== peg$FAILED) {
|
|
1714
1924
|
peg$savedPos = s0;
|
|
1715
|
-
s0 = peg$
|
|
1925
|
+
s0 = peg$f39(s2);
|
|
1716
1926
|
} else {
|
|
1717
1927
|
peg$currPos = s0;
|
|
1718
1928
|
s0 = peg$FAILED;
|
|
@@ -1746,7 +1956,7 @@ function peg$parse(input, options) {
|
|
|
1746
1956
|
}
|
|
1747
1957
|
if (s1 !== peg$FAILED) {
|
|
1748
1958
|
peg$savedPos = peg$currPos;
|
|
1749
|
-
s2 = peg$
|
|
1959
|
+
s2 = peg$f40();
|
|
1750
1960
|
if (s2) {
|
|
1751
1961
|
s2 = undefined;
|
|
1752
1962
|
} else {
|
|
@@ -1756,7 +1966,7 @@ function peg$parse(input, options) {
|
|
|
1756
1966
|
s3 = peg$parseconsumeBacktick();
|
|
1757
1967
|
if (s3 !== peg$FAILED) {
|
|
1758
1968
|
peg$savedPos = s0;
|
|
1759
|
-
s0 = peg$
|
|
1969
|
+
s0 = peg$f41(s3);
|
|
1760
1970
|
} else {
|
|
1761
1971
|
peg$currPos = s0;
|
|
1762
1972
|
s0 = peg$FAILED;
|
|
@@ -1780,7 +1990,7 @@ function peg$parse(input, options) {
|
|
|
1780
1990
|
} else {
|
|
1781
1991
|
s1 = peg$FAILED;
|
|
1782
1992
|
if (peg$silentFails === 0) {
|
|
1783
|
-
peg$fail(peg$
|
|
1993
|
+
peg$fail(peg$e2);
|
|
1784
1994
|
}
|
|
1785
1995
|
}
|
|
1786
1996
|
if (s1 !== peg$FAILED) {
|
|
@@ -1791,7 +2001,7 @@ function peg$parse(input, options) {
|
|
|
1791
2001
|
s3 = peg$parseconsumeBacktickMore();
|
|
1792
2002
|
}
|
|
1793
2003
|
peg$savedPos = s0;
|
|
1794
|
-
s0 = peg$
|
|
2004
|
+
s0 = peg$f42(s1, s2);
|
|
1795
2005
|
} else {
|
|
1796
2006
|
peg$currPos = s0;
|
|
1797
2007
|
s0 = peg$FAILED;
|
|
@@ -1802,7 +2012,7 @@ function peg$parse(input, options) {
|
|
|
1802
2012
|
let s0, s1, s2;
|
|
1803
2013
|
s0 = peg$currPos;
|
|
1804
2014
|
peg$savedPos = peg$currPos;
|
|
1805
|
-
s1 = peg$
|
|
2015
|
+
s1 = peg$f43();
|
|
1806
2016
|
if (s1) {
|
|
1807
2017
|
s1 = undefined;
|
|
1808
2018
|
} else {
|
|
@@ -1815,12 +2025,12 @@ function peg$parse(input, options) {
|
|
|
1815
2025
|
} else {
|
|
1816
2026
|
s2 = peg$FAILED;
|
|
1817
2027
|
if (peg$silentFails === 0) {
|
|
1818
|
-
peg$fail(peg$
|
|
2028
|
+
peg$fail(peg$e2);
|
|
1819
2029
|
}
|
|
1820
2030
|
}
|
|
1821
2031
|
if (s2 !== peg$FAILED) {
|
|
1822
2032
|
peg$savedPos = s0;
|
|
1823
|
-
s0 = peg$
|
|
2033
|
+
s0 = peg$f44(s2);
|
|
1824
2034
|
} else {
|
|
1825
2035
|
peg$currPos = s0;
|
|
1826
2036
|
s0 = peg$FAILED;
|
|
@@ -1831,6 +2041,15 @@ function peg$parse(input, options) {
|
|
|
1831
2041
|
}
|
|
1832
2042
|
return s0;
|
|
1833
2043
|
}
|
|
2044
|
+
function peg$parseSAVE_INDENTATION() {
|
|
2045
|
+
let s0, s1;
|
|
2046
|
+
s0 = peg$currPos;
|
|
2047
|
+
s1 = "";
|
|
2048
|
+
peg$savedPos = s0;
|
|
2049
|
+
s1 = peg$f45();
|
|
2050
|
+
s0 = s1;
|
|
2051
|
+
return s0;
|
|
2052
|
+
}
|
|
1834
2053
|
function peg$parseSET_BASE_INDENTATION() {
|
|
1835
2054
|
let s0, s1, s2;
|
|
1836
2055
|
s0 = peg$currPos;
|
|
@@ -1857,7 +2076,7 @@ function peg$parse(input, options) {
|
|
|
1857
2076
|
}
|
|
1858
2077
|
}
|
|
1859
2078
|
peg$savedPos = s0;
|
|
1860
|
-
s1 = peg$
|
|
2079
|
+
s1 = peg$f46(s1);
|
|
1861
2080
|
s0 = s1;
|
|
1862
2081
|
return s0;
|
|
1863
2082
|
}
|
|
@@ -1887,7 +2106,7 @@ function peg$parse(input, options) {
|
|
|
1887
2106
|
}
|
|
1888
2107
|
}
|
|
1889
2108
|
peg$savedPos = peg$currPos;
|
|
1890
|
-
s2 = peg$
|
|
2109
|
+
s2 = peg$f47(s1);
|
|
1891
2110
|
if (s2) {
|
|
1892
2111
|
s2 = undefined;
|
|
1893
2112
|
} else {
|
|
@@ -1895,7 +2114,7 @@ function peg$parse(input, options) {
|
|
|
1895
2114
|
}
|
|
1896
2115
|
if (s2 !== peg$FAILED) {
|
|
1897
2116
|
peg$savedPos = s0;
|
|
1898
|
-
s0 = peg$
|
|
2117
|
+
s0 = peg$f48(s1);
|
|
1899
2118
|
} else {
|
|
1900
2119
|
peg$currPos = s0;
|
|
1901
2120
|
s0 = peg$FAILED;
|
|
@@ -1928,7 +2147,7 @@ function peg$parse(input, options) {
|
|
|
1928
2147
|
}
|
|
1929
2148
|
}
|
|
1930
2149
|
peg$savedPos = peg$currPos;
|
|
1931
|
-
s2 = peg$
|
|
2150
|
+
s2 = peg$f49(s1);
|
|
1932
2151
|
if (s2) {
|
|
1933
2152
|
s2 = undefined;
|
|
1934
2153
|
} else {
|
|
@@ -2139,7 +2358,7 @@ function peg$parse(input, options) {
|
|
|
2139
2358
|
let s0, s1, s2, s3;
|
|
2140
2359
|
s0 = peg$currPos;
|
|
2141
2360
|
peg$savedPos = peg$currPos;
|
|
2142
|
-
s1 = peg$
|
|
2361
|
+
s1 = peg$f50();
|
|
2143
2362
|
if (s1) {
|
|
2144
2363
|
s1 = undefined;
|
|
2145
2364
|
} else {
|
|
@@ -2154,7 +2373,7 @@ function peg$parse(input, options) {
|
|
|
2154
2373
|
} else {
|
|
2155
2374
|
s3 = peg$FAILED;
|
|
2156
2375
|
if (peg$silentFails === 0) {
|
|
2157
|
-
peg$fail(peg$
|
|
2376
|
+
peg$fail(peg$e4);
|
|
2158
2377
|
}
|
|
2159
2378
|
}
|
|
2160
2379
|
peg$silentFails--;
|
|
@@ -2187,7 +2406,7 @@ function peg$parse(input, options) {
|
|
|
2187
2406
|
} else {
|
|
2188
2407
|
s1 = peg$FAILED;
|
|
2189
2408
|
if (peg$silentFails === 0) {
|
|
2190
|
-
peg$fail(peg$
|
|
2409
|
+
peg$fail(peg$e2);
|
|
2191
2410
|
}
|
|
2192
2411
|
}
|
|
2193
2412
|
peg$silentFails--;
|
|
@@ -2264,14 +2483,23 @@ function peg$parse(input, options) {
|
|
|
2264
2483
|
let indentationStack = [0];
|
|
2265
2484
|
let baseIndentation = null;
|
|
2266
2485
|
let contextStack = [];
|
|
2486
|
+
let contextDepth = 0;
|
|
2487
|
+
const maxDepth = options.maxDepth ?? Infinity;
|
|
2488
|
+
let unreadableLines = new Set;
|
|
2267
2489
|
function resetState() {
|
|
2268
2490
|
indentationStack = [0];
|
|
2269
2491
|
baseIndentation = null;
|
|
2270
2492
|
contextStack = [];
|
|
2493
|
+
contextDepth = 0;
|
|
2494
|
+
unreadableLines = new Set;
|
|
2271
2495
|
return true;
|
|
2272
2496
|
}
|
|
2497
|
+
function lineKey(position) {
|
|
2498
|
+
return contextStack.length > 0 ? -1 - position : position;
|
|
2499
|
+
}
|
|
2273
2500
|
function enterNestedContext() {
|
|
2274
|
-
contextStack.push({ indentationStack, baseIndentation });
|
|
2501
|
+
contextStack.push({ indentationStack, baseIndentation, contextDepth });
|
|
2502
|
+
contextDepth = depth() + 1;
|
|
2275
2503
|
indentationStack = [0];
|
|
2276
2504
|
baseIndentation = null;
|
|
2277
2505
|
return true;
|
|
@@ -2281,9 +2509,24 @@ function peg$parse(input, options) {
|
|
|
2281
2509
|
if (saved) {
|
|
2282
2510
|
indentationStack = saved.indentationStack;
|
|
2283
2511
|
baseIndentation = saved.baseIndentation;
|
|
2512
|
+
contextDepth = saved.contextDepth;
|
|
2284
2513
|
}
|
|
2285
2514
|
return true;
|
|
2286
2515
|
}
|
|
2516
|
+
function depth() {
|
|
2517
|
+
return contextDepth + indentationStack.length - 1;
|
|
2518
|
+
}
|
|
2519
|
+
function checkDepth(levels, where) {
|
|
2520
|
+
if (levels <= maxDepth) {
|
|
2521
|
+
return true;
|
|
2522
|
+
}
|
|
2523
|
+
try {
|
|
2524
|
+
error(`nesting depth exceeds the maximum of ${maxDepth}`, where);
|
|
2525
|
+
} catch (tooDeep) {
|
|
2526
|
+
tooDeep.maxDepth = maxDepth;
|
|
2527
|
+
throw tooDeep;
|
|
2528
|
+
}
|
|
2529
|
+
}
|
|
2287
2530
|
function isInsideNestedContext() {
|
|
2288
2531
|
return contextStack.length > 0;
|
|
2289
2532
|
}
|
|
@@ -2350,10 +2593,12 @@ function peg$parse(input, options) {
|
|
|
2350
2593
|
}
|
|
2351
2594
|
|
|
2352
2595
|
// src/Parser.js
|
|
2596
|
+
var DEFAULT_MAX_DEPTH = 64;
|
|
2597
|
+
|
|
2353
2598
|
class Parser {
|
|
2354
2599
|
constructor(options = {}) {
|
|
2355
2600
|
this.maxInputSize = options.maxInputSize || 10 * 1024 * 1024;
|
|
2356
|
-
this.maxDepth = options.maxDepth
|
|
2601
|
+
this.maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;
|
|
2357
2602
|
this.comments = options.comments ?? true;
|
|
2358
2603
|
}
|
|
2359
2604
|
parse(input) {
|
|
@@ -2365,7 +2610,9 @@ class Parser {
|
|
|
2365
2610
|
}
|
|
2366
2611
|
const prepared = this.comments ? stripComments(input) : input;
|
|
2367
2612
|
try {
|
|
2368
|
-
const rawResult = peg$parse(prepared
|
|
2613
|
+
const rawResult = peg$parse(prepared, {
|
|
2614
|
+
maxDepth: this.maxDepth
|
|
2615
|
+
});
|
|
2369
2616
|
return this.transformResult(rawResult);
|
|
2370
2617
|
} catch (error) {
|
|
2371
2618
|
if (error && error.location) {
|
|
@@ -2734,6 +2981,7 @@ class FormatOptions {
|
|
|
2734
2981
|
class FormatConfig extends FormatOptions {
|
|
2735
2982
|
}
|
|
2736
2983
|
export {
|
|
2984
|
+
DEFAULT_MAX_DEPTH,
|
|
2737
2985
|
FormatConfig,
|
|
2738
2986
|
FormatOptions,
|
|
2739
2987
|
Link,
|