parseman 0.50.7 → 0.51.1

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 (56) hide show
  1. package/dist/analysis/choice-cost.d.ts.map +1 -1
  2. package/dist/analysis/commitment.d.ts.map +1 -1
  3. package/dist/analysis/diagnostics.js +165 -21
  4. package/dist/analysis/diagnostics.js.map +2 -2
  5. package/dist/analysis/duplication.d.ts.map +1 -1
  6. package/dist/analysis/gating.d.ts.map +1 -1
  7. package/dist/cli/index.js +171 -22
  8. package/dist/cli/index.js.map +2 -2
  9. package/dist/combinators/dispatch.d.ts.map +1 -1
  10. package/dist/combinators/scanTo.d.ts +23 -1
  11. package/dist/combinators/scanTo.d.ts.map +1 -1
  12. package/dist/compiler/fields.d.ts.map +1 -1
  13. package/dist/compiler/grammar-coverage-ids.d.ts.map +1 -1
  14. package/dist/compiler/ir-serialize.d.ts.map +1 -1
  15. package/dist/compiler/token-capability.js +2 -2
  16. package/dist/compiler/token-capability.js.map +1 -1
  17. package/dist/coverage.d.ts.map +1 -1
  18. package/dist/cst/reflection.d.ts.map +1 -1
  19. package/dist/index.js +198 -30
  20. package/dist/index.js.map +2 -2
  21. package/dist/plugin/index.js +185 -27
  22. package/dist/plugin/index.js.map +2 -2
  23. package/dist/spec/index.js +127 -12
  24. package/dist/spec/index.js.map +2 -2
  25. package/dist/table/assemble.d.ts.map +1 -1
  26. package/dist/table/emit.d.ts.map +1 -1
  27. package/dist/table/encode.d.ts.map +1 -1
  28. package/dist/table/exec.d.ts.map +1 -1
  29. package/dist/table/index.js +171 -22
  30. package/dist/table/index.js.map +2 -2
  31. package/dist/table/program.d.ts +2 -0
  32. package/dist/table/program.d.ts.map +1 -1
  33. package/dist/types.d.ts +2 -0
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/version.d.ts +1 -1
  36. package/package.json +1 -1
  37. package/src/analysis/choice-cost.ts +6 -1
  38. package/src/analysis/commitment.ts +10 -2
  39. package/src/analysis/duplication.ts +7 -2
  40. package/src/analysis/gating.ts +6 -1
  41. package/src/analysis/rebuild.ts +1 -1
  42. package/src/combinators/dispatch.ts +4 -1
  43. package/src/combinators/scanTo.ts +163 -9
  44. package/src/compiler/fields.ts +8 -2
  45. package/src/compiler/grammar-coverage-ids.ts +6 -1
  46. package/src/compiler/ir-serialize.ts +14 -5
  47. package/src/compiler/token-alphabet.ts +1 -1
  48. package/src/coverage.ts +7 -1
  49. package/src/cst/reflection.ts +6 -1
  50. package/src/table/assemble.ts +11 -1
  51. package/src/table/emit.ts +4 -0
  52. package/src/table/encode.ts +6 -0
  53. package/src/table/exec.ts +7 -1
  54. package/src/table/program.ts +2 -0
  55. package/src/types.ts +1 -1
  56. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"duplication.d.ts","sourceRoot":"","sources":["../../src/analysis/duplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duplication.d.ts","sourceRoot":"","sources":["../../src/analysis/duplication.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gating.d.ts","sourceRoot":"","sources":["../../src/analysis/gating.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gating.d.ts","sourceRoot":"","sources":["../../src/analysis/gating.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -312,7 +312,12 @@ function childrenOf(d) {
312
312
  case "recover":
313
313
  return [d.parser, d.sentinel];
314
314
  case "scanTo":
315
- return [d.sentinel, ...d.skip];
315
+ return [
316
+ d.sentinel,
317
+ ...d.skip,
318
+ ...d.recoverAt === void 0 ? [] : [d.recoverAt],
319
+ ...d.stopAt === void 0 ? [] : [d.stopAt]
320
+ ];
316
321
  case "grammar":
317
322
  return d.triviaParser ? [d.parser, d.triviaParser] : [d.parser];
318
323
  case "routed":
@@ -2157,7 +2162,12 @@ function childrenOf2(def) {
2157
2162
  case "sepBy":
2158
2163
  return [def.parser, def.separator];
2159
2164
  case "scanTo":
2160
- return [def.sentinel, ...def.skip];
2165
+ return [
2166
+ def.sentinel,
2167
+ ...def.skip,
2168
+ ...def.recoverAt === void 0 ? [] : [def.recoverAt],
2169
+ ...def.stopAt === void 0 ? [] : [def.stopAt]
2170
+ ];
2161
2171
  case "routed":
2162
2172
  return def.fallback ? [def.fallback] : [];
2163
2173
  case "literal":
@@ -4228,7 +4238,7 @@ function parserUsesRouted(parser2, seen = /* @__PURE__ */ new Set()) {
4228
4238
  case "grammar":
4229
4239
  return parserUsesRouted(def.parser, seen) || (def.triviaParser ? parserUsesRouted(def.triviaParser, seen) : false);
4230
4240
  case "scanTo":
4231
- return parserUsesRouted(def.sentinel, seen) || def.skip.some((entry) => parserUsesRouted(entry, seen));
4241
+ return parserUsesRouted(def.sentinel, seen) || def.skip.some((entry) => parserUsesRouted(entry, seen)) || def.recoverAt !== void 0 && parserUsesRouted(def.recoverAt, seen) || def.stopAt !== void 0 && parserUsesRouted(def.stopAt, seen);
4232
4242
  case "recover":
4233
4243
  return parserUsesRouted(def.parser, seen) || parserUsesRouted(def.sentinel, seen);
4234
4244
  case "lazy":
@@ -5198,7 +5208,7 @@ function parserHasOwnFields(p, seen = /* @__PURE__ */ new Set()) {
5198
5208
  case "grammar":
5199
5209
  return parserHasOwnFields(d.parser, seen) || (d.triviaParser ? parserHasOwnFields(d.triviaParser, seen) : false);
5200
5210
  case "scanTo":
5201
- return parserHasOwnFields(d.sentinel, seen) || d.skip.some((x) => parserHasOwnFields(x, seen));
5211
+ return parserHasOwnFields(d.sentinel, seen) || d.skip.some((x) => parserHasOwnFields(x, seen)) || d.recoverAt !== void 0 && parserHasOwnFields(d.recoverAt, seen) || d.stopAt !== void 0 && parserHasOwnFields(d.stopAt, seen);
5202
5212
  case "recover":
5203
5213
  return parserHasOwnFields(d.parser, seen) || parserHasOwnFields(d.sentinel, seen);
5204
5214
  case "routed":
@@ -5575,7 +5585,7 @@ function resolveScanSkip(explicitSkip, raw, ctx) {
5575
5585
  out.push(...explicitSkip);
5576
5586
  return out;
5577
5587
  }
5578
- function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
5588
+ function scanTo(sentinel, { skip, raw = false, orEOF = false, recoverAt, stopAt } = {}) {
5579
5589
  const meta = {
5580
5590
  firstSet: any(),
5581
5591
  canMatchNewline: true,
@@ -5585,7 +5595,15 @@ function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
5585
5595
  return {
5586
5596
  _tag: "scanTo",
5587
5597
  _meta: meta,
5588
- _def: { tag: "scanTo", sentinel, skip: explicitSkip, raw, orEOF },
5598
+ _def: {
5599
+ tag: "scanTo",
5600
+ sentinel,
5601
+ skip: explicitSkip,
5602
+ raw,
5603
+ orEOF,
5604
+ ...recoverAt === void 0 ? {} : { recoverAt },
5605
+ ...stopAt === void 0 ? {} : { stopAt }
5606
+ },
5589
5607
  parse(input, pos, ctx) {
5590
5608
  let cur = pos;
5591
5609
  const skip2 = resolveScanSkip(explicitSkip, raw, ctx);
@@ -5597,28 +5615,130 @@ function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
5597
5615
  pushCstLeaf(ctx, leaf2);
5598
5616
  }
5599
5617
  };
5600
- while (cur < input.length) {
5601
- const s = sentinel.parse(input, cur, probeCtx);
5602
- if (s.ok) {
5618
+ if (recoverAt === void 0 && stopAt === void 0) {
5619
+ while (cur < input.length) {
5620
+ const s = sentinel.parse(input, cur, probeCtx);
5621
+ if (s.ok) {
5622
+ if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, cur);
5623
+ emit(cur);
5624
+ return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
5625
+ }
5626
+ let advanced = false;
5627
+ for (const skipper of skip2) {
5628
+ const r = skipper.parse(input, cur, probeCtx);
5629
+ if (r.ok && r.span.end > cur) {
5630
+ cur = r.span.end;
5631
+ advanced = true;
5632
+ break;
5633
+ }
5634
+ }
5635
+ if (!advanced) cur++;
5636
+ }
5637
+ if (orEOF) {
5603
5638
  if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, cur);
5604
5639
  emit(cur);
5605
5640
  return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
5606
5641
  }
5642
+ const sentDef2 = sentinel._def;
5643
+ const expected2 = sentDef2.tag === "literal" ? [JSON.stringify(sentDef2.value)] : ["sentinel"];
5644
+ return { ok: false, expected: expected2, span: { start: pos, end: cur } };
5645
+ }
5646
+ let recovery = -1;
5647
+ let firstSentinel = -1;
5648
+ let sentinelCount = 0;
5649
+ let recoveryErrorCount = -1;
5650
+ let sentinelErrorCount = -1;
5651
+ const succeed = (end) => {
5652
+ if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, end);
5653
+ emit(end);
5654
+ return { ok: true, value: input.slice(pos, end), span: { start: pos, end } };
5655
+ };
5656
+ const recoveredEnd = () => {
5657
+ const acceptSentinel = firstSentinel >= 0 && (sentinelCount & 1) === 1;
5658
+ const errors = ctx._errors;
5659
+ if (errors !== void 0) {
5660
+ const keep = acceptSentinel ? sentinelErrorCount : recoveryErrorCount;
5661
+ if (keep >= 0 && errors.length > keep) errors.length = keep;
5662
+ }
5663
+ return acceptSentinel ? firstSentinel : recovery;
5664
+ };
5665
+ while (cur < input.length) {
5666
+ const sentinelProbeErrorCount = ctx._errors?.length ?? -1;
5667
+ const s = sentinel.parse(input, cur, probeCtx);
5668
+ const sentinelProbeErrors = ctx._errors;
5669
+ if (sentinelProbeErrors !== void 0 && sentinelProbeErrorCount >= 0 && sentinelProbeErrors.length > sentinelProbeErrorCount) {
5670
+ sentinelProbeErrors.length = sentinelProbeErrorCount;
5671
+ }
5672
+ if (s.ok) {
5673
+ if (recovery < 0) return succeed(cur);
5674
+ if (s.span.end <= cur) {
5675
+ throw new TypeError("scanTo recovery requires a sentinel that consumes input");
5676
+ }
5677
+ if (firstSentinel < 0) {
5678
+ firstSentinel = cur;
5679
+ sentinelErrorCount = sentinelProbeErrorCount;
5680
+ }
5681
+ sentinelCount++;
5682
+ cur = s.span.end;
5683
+ continue;
5684
+ }
5685
+ if (stopAt !== void 0) {
5686
+ const errorCount = ctx._errors?.length ?? -1;
5687
+ const stop = stopAt.parse(input, cur, probeCtx);
5688
+ const errors = ctx._errors;
5689
+ if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
5690
+ errors.length = errorCount;
5691
+ }
5692
+ if (stop.ok) {
5693
+ if (recovery < 0) {
5694
+ recovery = cur;
5695
+ recoveryErrorCount = errorCount;
5696
+ }
5697
+ return succeed(recoveredEnd());
5698
+ }
5699
+ }
5607
5700
  let advanced = false;
5608
5701
  for (const skipper of skip2) {
5702
+ const errorCount = ctx._errors?.length ?? -1;
5609
5703
  const r = skipper.parse(input, cur, probeCtx);
5610
5704
  if (r.ok && r.span.end > cur) {
5611
5705
  cur = r.span.end;
5612
5706
  advanced = true;
5613
5707
  break;
5614
5708
  }
5709
+ const errors = ctx._errors;
5710
+ if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
5711
+ errors.length = errorCount;
5712
+ }
5615
5713
  }
5616
- if (!advanced) cur++;
5714
+ if (advanced) continue;
5715
+ if (recoverAt !== void 0) {
5716
+ const errorCount = ctx._errors?.length ?? -1;
5717
+ const recover = recoverAt.parse(input, cur, probeCtx);
5718
+ const errors = ctx._errors;
5719
+ if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
5720
+ errors.length = errorCount;
5721
+ }
5722
+ if (recover.ok) {
5723
+ if (recover.span.end <= cur) {
5724
+ throw new TypeError("scanTo recoverAt must consume input");
5725
+ }
5726
+ if (recovery < 0) {
5727
+ recovery = cur;
5728
+ recoveryErrorCount = errorCount;
5729
+ }
5730
+ if (firstSentinel >= 0 && (sentinelCount & 1) === 1) {
5731
+ return succeed(recoveredEnd());
5732
+ }
5733
+ cur = recover.span.end;
5734
+ continue;
5735
+ }
5736
+ }
5737
+ cur++;
5617
5738
  }
5739
+ if (recovery >= 0) return succeed(recoveredEnd());
5618
5740
  if (orEOF) {
5619
- if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, cur);
5620
- emit(cur);
5621
- return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
5741
+ return succeed(cur);
5622
5742
  }
5623
5743
  const sentDef = sentinel._def;
5624
5744
  const expected = sentDef.tag === "literal" ? [JSON.stringify(sentDef.value)] : ["sentinel"];
@@ -6131,7 +6251,7 @@ function hasNodeDef(p, seen = /* @__PURE__ */ new Set()) {
6131
6251
  case "sepBy":
6132
6252
  return hasNodeDef(d.parser, seen) || hasNodeDef(d.separator, seen);
6133
6253
  case "scanTo":
6134
- return hasNodeDef(d.sentinel, seen) || d.skip.some((x) => hasNodeDef(x, seen));
6254
+ return hasNodeDef(d.sentinel, seen) || d.skip.some((x) => hasNodeDef(x, seen)) || d.recoverAt !== void 0 && hasNodeDef(d.recoverAt, seen) || d.stopAt !== void 0 && hasNodeDef(d.stopAt, seen);
6135
6255
  case "recover":
6136
6256
  return hasNodeDef(d.parser, seen) || hasNodeDef(d.sentinel, seen);
6137
6257
  case "expect":
@@ -6170,7 +6290,7 @@ function mayCommitFailure(p, seen = /* @__PURE__ */ new Set(), resolve2) {
6170
6290
  case "withCtx":
6171
6291
  return mayCommitFailure(d.parser, seen, resolve2);
6172
6292
  case "scanTo":
6173
- return mayCommitFailure(d.sentinel, seen, resolve2) || d.skip.some((x) => mayCommitFailure(x, seen, resolve2));
6293
+ return mayCommitFailure(d.sentinel, seen, resolve2) || d.skip.some((x) => mayCommitFailure(x, seen, resolve2)) || d.recoverAt !== void 0 && mayCommitFailure(d.recoverAt, seen, resolve2) || d.stopAt !== void 0 && mayCommitFailure(d.stopAt, seen, resolve2);
6174
6294
  case "lazy": {
6175
6295
  try {
6176
6296
  return mayCommitFailure(d.thunk(), seen, resolve2);
@@ -8025,6 +8145,8 @@ var Encoder = class {
8025
8145
  flags: (d.raw ? 1 : 0) | (d.orEOF ? 2 : 0),
8026
8146
  skip: d.skip.map((c) => this.subtree(c)),
8027
8147
  sentinel: this.subtree(d.sentinel),
8148
+ ...d.recoverAt === void 0 ? {} : { recoverAt: this.subtree(d.recoverAt) },
8149
+ ...d.stopAt === void 0 ? {} : { stopAt: this.subtree(d.stopAt) },
8028
8150
  sent: sentDef.tag === "literal" ? sentDef.value : null
8029
8151
  }));
8030
8152
  }
@@ -8458,6 +8580,8 @@ var Encoder = class {
8458
8580
  const refs = [];
8459
8581
  for (const s of this.scans) {
8460
8582
  if (s.sentinel !== void 0) refs.push(s.sentinel);
8583
+ if (s.recoverAt !== void 0) refs.push(s.recoverAt);
8584
+ if (s.stopAt !== void 0) refs.push(s.stopAt);
8461
8585
  refs.push(...s.skip);
8462
8586
  }
8463
8587
  for (const set of this.scanSkipSets) refs.push(...set);
@@ -8477,7 +8601,9 @@ var Encoder = class {
8477
8601
  this.scans = this.scans.map((s) => ({
8478
8602
  ...s,
8479
8603
  skip: s.skip.map(res),
8480
- ...s.sentinel === void 0 ? {} : { sentinel: res(s.sentinel) }
8604
+ ...s.sentinel === void 0 ? {} : { sentinel: res(s.sentinel) },
8605
+ ...s.recoverAt === void 0 ? {} : { recoverAt: res(s.recoverAt) },
8606
+ ...s.stopAt === void 0 ? {} : { stopAt: res(s.stopAt) }
8481
8607
  }));
8482
8608
  this.scanSkipSets = this.scanSkipSets.map((set) => set.map(res));
8483
8609
  }
@@ -11914,6 +12040,8 @@ function assemble(t2, prog, cfg) {
11914
12040
  for (const s of prog.scans ?? []) {
11915
12041
  for (const r of s.skip) labelExtraIps.push(r[0]);
11916
12042
  if (s.sentinel !== void 0) labelExtraIps.push(s.sentinel[0]);
12043
+ if (s.recoverAt !== void 0) labelExtraIps.push(s.recoverAt[0]);
12044
+ if (s.stopAt !== void 0) labelExtraIps.push(s.stopAt[0]);
11917
12045
  }
11918
12046
  for (const set of prog.scanSkip ?? []) for (const r of set) labelExtraIps.push(r[0]);
11919
12047
  const closureLabels = computeSiteLabels(
@@ -14599,6 +14727,8 @@ function assemble(t2, prog, cfg) {
14599
14727
  for (const s of prog.scans ?? []) {
14600
14728
  for (const r of s.skip) extraIps.push(r[0]);
14601
14729
  if (s.sentinel !== void 0) extraIps.push(s.sentinel[0]);
14730
+ if (s.recoverAt !== void 0) extraIps.push(s.recoverAt[0]);
14731
+ if (s.stopAt !== void 0) extraIps.push(s.stopAt[0]);
14602
14732
  }
14603
14733
  for (const set of prog.scanSkip ?? []) for (const r of set) extraIps.push(r[0]);
14604
14734
  const roots = [...Object.values(prog.rules), ...extraIps];
@@ -14810,7 +14940,13 @@ function assemble(t2, prog, cfg) {
14810
14940
  continue;
14811
14941
  }
14812
14942
  const sentDef = typeof s.sent === "string" ? { tag: "literal", value: s.sent, caseInsensitive: false } : void 0;
14813
- scansArr.push(scanTo(subtreeComb(s.sentinel, sentDef), { skip, raw, orEOF: (s.flags & 2) !== 0 }));
14943
+ scansArr.push(scanTo(subtreeComb(s.sentinel, sentDef), {
14944
+ skip,
14945
+ raw,
14946
+ orEOF: (s.flags & 2) !== 0,
14947
+ ...s.recoverAt === void 0 ? {} : { recoverAt: subtreeComb(s.recoverAt) },
14948
+ ...s.stopAt === void 0 ? {} : { stopAt: subtreeComb(s.stopAt) }
14949
+ }));
14814
14950
  }
14815
14951
  const scans = scansArr;
14816
14952
  const scanSkip = (prog.scanSkip ?? []).map((set) => set.map((r) => subtreeComb(r)));
@@ -15027,6 +15163,8 @@ function emitRef(r) {
15027
15163
  function emitScanSpec(s) {
15028
15164
  const parts = [`kind:${s.kind}`, `flags:${s.flags}`, `skip:[${s.skip.map(emitRef).join(",")}]`];
15029
15165
  if (s.sentinel !== void 0) parts.push(`sentinel:${emitRef(s.sentinel)}`);
15166
+ if (s.recoverAt !== void 0) parts.push(`recoverAt:${emitRef(s.recoverAt)}`);
15167
+ if (s.stopAt !== void 0) parts.push(`stopAt:${emitRef(s.stopAt)}`);
15030
15168
  if (s.sent !== void 0) parts.push(`sent:${s.sent === null ? "null" : jsString(s.sent)}`);
15031
15169
  if (s.open !== void 0) parts.push(`open:${jsString(s.open)}`);
15032
15170
  if (s.close !== void 0) parts.push(`close:${jsString(s.close)}`);
@@ -15042,6 +15180,8 @@ function emitAssemblies(prog, cfgs) {
15042
15180
  for (const s of prog.scans ?? []) {
15043
15181
  for (const r of s.skip) extraIps.push(r[0]);
15044
15182
  if (s.sentinel !== void 0) extraIps.push(s.sentinel[0]);
15183
+ if (s.recoverAt !== void 0) extraIps.push(s.recoverAt[0]);
15184
+ if (s.stopAt !== void 0) extraIps.push(s.stopAt[0]);
15045
15185
  }
15046
15186
  for (const set of prog.scanSkip ?? []) for (const r of set) extraIps.push(r[0]);
15047
15187
  const out = [];
@@ -15184,7 +15324,12 @@ function children(def, winners) {
15184
15324
  case "sepBy":
15185
15325
  return [def.parser, def.separator];
15186
15326
  case "scanTo":
15187
- return [def.sentinel, ...def.skip];
15327
+ return [
15328
+ def.sentinel,
15329
+ ...def.skip,
15330
+ ...def.recoverAt === void 0 ? [] : [def.recoverAt],
15331
+ ...def.stopAt === void 0 ? [] : [def.stopAt]
15332
+ ];
15188
15333
  case "lazy": {
15189
15334
  let resolved;
15190
15335
  try {
@@ -15297,7 +15442,7 @@ function payloadKey(p, d) {
15297
15442
  case "expect":
15298
15443
  return `expect\0${d.label ?? ""}\0${d.expected.join("")}`;
15299
15444
  case "scanTo":
15300
- return `scanTo\0${d.raw}\0${d.orEOF}`;
15445
+ return `scanTo\0${d.raw}\0${d.orEOF}\0${d.recoverAt !== void 0}\0${d.stopAt !== void 0}`;
15301
15446
  case "guard":
15302
15447
  return `guard\0${fnKey(d.predSrc, d.predicate)}`;
15303
15448
  case "adjacency":
@@ -15412,8 +15557,12 @@ function segment(d, index) {
15412
15557
  return index === 0 ? "sepBy.item" : "sepBy.sep";
15413
15558
  case "recover":
15414
15559
  return index === 0 ? "recover.body" : "recover.sentinel";
15415
- case "scanTo":
15416
- return index === 0 ? "scanTo.sentinel" : `scanTo.skip[${index - 1}]`;
15560
+ case "scanTo": {
15561
+ if (index === 0) return "scanTo.sentinel";
15562
+ if (index <= d.skip.length) return `scanTo.skip[${index - 1}]`;
15563
+ if (d.recoverAt !== void 0 && index === d.skip.length + 1) return "scanTo.recoverAt";
15564
+ return "scanTo.stopAt";
15565
+ }
15417
15566
  default:
15418
15567
  return d.tag;
15419
15568
  }
@@ -17725,7 +17874,7 @@ function subtreeContains(p, targets) {
17725
17874
  const kids = [];
17726
17875
  if (Array.isArray(rec.parsers)) kids.push(...rec.parsers);
17727
17876
  if (Array.isArray(rec.skip)) kids.push(...rec.skip);
17728
- for (const k of ["parser", "main", "skipped", "separator", "sentinel", "selector", "otherwise", "fallback", "triviaParser"])
17877
+ for (const k of ["parser", "main", "skipped", "separator", "sentinel", "recoverAt", "stopAt", "selector", "otherwise", "fallback", "triviaParser"])
17729
17878
  if (rec[k]) kids.push(rec[k]);
17730
17879
  if (d.tag === "dispatch") {
17731
17880
  for (const c2 of d.cases) kids.push(c2.parser);