parseman 0.26.1 → 0.26.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.
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ir-serialize.d.ts","sourceRoot":"","sources":["../../src/compiler/ir-serialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;AAiBxD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AA4C/B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAC9C,MAAM,GAAG,IAAI,CAUf;AAED;;oFAEoF;AACpF,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAgC/D"}
1
+ {"version":3,"file":"ir-serialize.d.ts","sourceRoot":"","sources":["../../src/compiler/ir-serialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;AAkBxD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AA4C/B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAC9C,MAAM,GAAG,IAAI,CAUf;AAED;;oFAEoF;AACpF,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAiF/D"}
package/dist/index.cjs CHANGED
@@ -5635,7 +5635,7 @@ function emitDispatch(p, ctx, pos) {
5635
5635
  ctx.indent = 1;
5636
5636
  ctx.failLabel = "_pfail";
5637
5637
  ctx.recordFail = true;
5638
- const innerR = emit(innerParser, ctx, "_pos");
5638
+ const innerR = emitDispatch(innerParser, ctx, "_pos");
5639
5639
  ctx.indent = savedIndent;
5640
5640
  ctx.failLabel = savedFailLabel;
5641
5641
  ctx.recordFail = savedRecord;
@@ -6267,6 +6267,23 @@ function escapeClassChar(ch) {
6267
6267
  return ch.replace(/[\\\]^-]/g, "\\$&");
6268
6268
  }
6269
6269
 
6270
+ // src/combinators/withCtx.ts
6271
+ function withCtx(extra, combinator) {
6272
+ const meta = {
6273
+ firstSet: combinator._meta.firstSet,
6274
+ canMatchNewline: combinator._meta.canMatchNewline,
6275
+ isTrivia: false
6276
+ };
6277
+ return {
6278
+ _tag: "withCtx",
6279
+ _meta: meta,
6280
+ _def: { tag: "withCtx", extra, parser: combinator },
6281
+ parse(input, pos, ctx) {
6282
+ return combinator.parse(input, pos, { ...ctx, state: extra });
6283
+ }
6284
+ };
6285
+ }
6286
+
6270
6287
  // src/compiler/ir-serialize.ts
6271
6288
  function childrenOf2(def) {
6272
6289
  switch (def.tag) {
@@ -6283,6 +6300,7 @@ function childrenOf2(def) {
6283
6300
  case "field":
6284
6301
  case "not":
6285
6302
  case "node":
6303
+ case "withCtx":
6286
6304
  case "expect":
6287
6305
  return [def.parser];
6288
6306
  case "grammar":
@@ -6298,7 +6316,6 @@ function childrenOf2(def) {
6298
6316
  case "regex":
6299
6317
  case "keywords":
6300
6318
  case "guard":
6301
- case "withCtx":
6302
6319
  case "recover":
6303
6320
  case "unknown":
6304
6321
  return [];
@@ -6345,6 +6362,45 @@ function evalRuleMapIR(ir) {
6345
6362
  n._def.buildSrc = src;
6346
6363
  return n;
6347
6364
  };
6365
+ const _gch = (items) => {
6366
+ const gateSrcs = [];
6367
+ const arms = items.map((it) => {
6368
+ if (Array.isArray(it)) {
6369
+ const [src, comb] = it;
6370
+ gateSrcs.push(src);
6371
+ let gate;
6372
+ try {
6373
+ gate = (0, eval)(`(${src})`);
6374
+ } catch {
6375
+ gate = () => {
6376
+ throw new Error("IR gate fn not materialized");
6377
+ };
6378
+ }
6379
+ return { gate, combinator: comb };
6380
+ }
6381
+ gateSrcs.push(null);
6382
+ return it;
6383
+ });
6384
+ const c = choice(...arms);
6385
+ const gates = c._def.gates;
6386
+ if (gates && gates.length !== gateSrcs.length) {
6387
+ throw new Error(`_gch: gateSrcs length ${gateSrcs.length} != choice gates length ${gates.length}`);
6388
+ }
6389
+ ;
6390
+ c._def.gateSrcs = gateSrcs;
6391
+ return c;
6392
+ };
6393
+ const _wc = (src, inner) => {
6394
+ let extra;
6395
+ try {
6396
+ extra = (0, eval)(`(${src})`);
6397
+ } catch {
6398
+ extra = void 0;
6399
+ }
6400
+ const w = withCtx(extra, inner);
6401
+ w._def.extraSrc = src;
6402
+ return w;
6403
+ };
6348
6404
  const fn = new Function(
6349
6405
  "rules",
6350
6406
  "ref",
@@ -6370,6 +6426,8 @@ function evalRuleMapIR(ir) {
6370
6426
  "expect",
6371
6427
  "_tf",
6372
6428
  "_nd",
6429
+ "_gch",
6430
+ "_wc",
6373
6431
  `return (${ir})`
6374
6432
  );
6375
6433
  const map = fn(
@@ -6396,7 +6454,9 @@ function evalRuleMapIR(ir) {
6396
6454
  field,
6397
6455
  expect,
6398
6456
  _tf,
6399
- _nd
6457
+ _nd,
6458
+ _gch,
6459
+ _wc
6400
6460
  );
6401
6461
  return Object.entries(map);
6402
6462
  }
@@ -6452,7 +6512,7 @@ ${body}
6452
6512
  this.analyze(target, active);
6453
6513
  return;
6454
6514
  }
6455
- if (def.tag === "guard" || def.tag === "withCtx" || def.tag === "recover" || def.tag === "unknown") {
6515
+ if (def.tag === "guard" || def.tag === "recover" || def.tag === "unknown") {
6456
6516
  throw new Unserializable(`unsupported tag ${def.tag}`);
6457
6517
  }
6458
6518
  this.counts.set(c, (this.counts.get(c) ?? 0) + 1);
@@ -6508,8 +6568,16 @@ ${body}
6508
6568
  case "sequence":
6509
6569
  return `sequence(${def.parsers.map(kid).join(", ")})`;
6510
6570
  case "choice": {
6511
- if (def.gates.some((g) => g !== null)) throw new Unserializable("choice with a gate() has no source");
6512
- return `choice(${def.parsers.map(kid).join(", ")})`;
6571
+ const gates = def.gates;
6572
+ if (gates.every((g) => g === null)) return `choice(${def.parsers.map(kid).join(", ")})`;
6573
+ const gateSrcs = def.gateSrcs;
6574
+ const items = def.parsers.map((p, i) => {
6575
+ if (gates[i] === null) return kid(p);
6576
+ const src = gateSrcs?.[i];
6577
+ if (src == null) throw new Unserializable("choice gate() has no captured source");
6578
+ return `[${JSON.stringify(src)}, ${kid(p)}]`;
6579
+ });
6580
+ return `_gch([${items.join(", ")}])`;
6513
6581
  }
6514
6582
  case "many":
6515
6583
  return `many(${kid(def.parser)})`;
@@ -6553,8 +6621,11 @@ ${body}
6553
6621
  const trivia2 = def.clearTrivia ? "null" : def.triviaParser ? kid(def.triviaParser) : "undefined";
6554
6622
  return `parser({ trivia: ${trivia2}${def.trackLines ? ", trackLines: true" : ""} }, ${kid(def.parser)})`;
6555
6623
  }
6624
+ case "withCtx": {
6625
+ if (def.extraSrc === void 0) throw new Unserializable("withCtx without extraSrc");
6626
+ return `_wc(${JSON.stringify(def.extraSrc)}, ${kid(def.parser)})`;
6627
+ }
6556
6628
  case "guard":
6557
- case "withCtx":
6558
6629
  case "recover":
6559
6630
  case "unknown":
6560
6631
  throw new Unserializable(`unsupported tag ${def.tag}`);
@@ -6728,23 +6799,6 @@ function guard(predicate) {
6728
6799
  };
6729
6800
  }
6730
6801
 
6731
- // src/combinators/withCtx.ts
6732
- function withCtx(extra, combinator) {
6733
- const meta = {
6734
- firstSet: combinator._meta.firstSet,
6735
- canMatchNewline: combinator._meta.canMatchNewline,
6736
- isTrivia: false
6737
- };
6738
- return {
6739
- _tag: "withCtx",
6740
- _meta: meta,
6741
- _def: { tag: "withCtx", extra, parser: combinator },
6742
- parse(input, pos, ctx) {
6743
- return combinator.parse(input, pos, { ...ctx, state: extra });
6744
- }
6745
- };
6746
- }
6747
-
6748
6802
  // src/combinators/completions.ts
6749
6803
  function completionsAt(target, input, offset, options = {}) {
6750
6804
  const probe = { offset, best: null };