parseman 0.60.4 → 0.60.6

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 (54) hide show
  1. package/dist/analysis/commitment.d.ts.map +1 -1
  2. package/dist/analysis/diagnostics.js +31 -5
  3. package/dist/analysis/diagnostics.js.map +1 -1
  4. package/dist/cli/index.js +639 -613
  5. package/dist/cli/index.js.map +3 -3
  6. package/dist/combinators/parser.d.ts +34 -3
  7. package/dist/combinators/parser.d.ts.map +1 -1
  8. package/dist/combinators/trivia-boundary.d.ts +5 -3
  9. package/dist/combinators/trivia-boundary.d.ts.map +1 -1
  10. package/dist/compiler/compile-linkable-table.d.ts.map +1 -1
  11. package/dist/compiler/linker.d.ts +11 -3
  12. package/dist/compiler/linker.d.ts.map +1 -1
  13. package/dist/compiler/token-capability.js +6 -0
  14. package/dist/compiler/token-capability.js.map +1 -1
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +93 -25
  18. package/dist/index.js.map +1 -1
  19. package/dist/plugin/evaluator.d.ts +3 -1
  20. package/dist/plugin/evaluator.d.ts.map +1 -1
  21. package/dist/plugin/index.d.ts.map +1 -1
  22. package/dist/plugin/index.js +116 -75
  23. package/dist/plugin/index.js.map +1 -1
  24. package/dist/spec/index.js +3 -1
  25. package/dist/spec/index.js.map +1 -1
  26. package/dist/spec/model.d.ts.map +1 -1
  27. package/dist/table/assemble.d.ts.map +1 -1
  28. package/dist/table/emit-assembly.d.ts.map +1 -1
  29. package/dist/table/encode.d.ts.map +1 -1
  30. package/dist/table/exec.d.ts.map +1 -1
  31. package/dist/table/index.js +31 -5
  32. package/dist/table/index.js.map +1 -1
  33. package/dist/table/ops.d.ts +6 -0
  34. package/dist/table/ops.d.ts.map +1 -1
  35. package/dist/version.d.ts +1 -1
  36. package/package.json +1 -1
  37. package/src/analysis/commitment.ts +3 -1
  38. package/src/combinators/grammar.ts +1 -1
  39. package/src/combinators/parser.ts +82 -9
  40. package/src/combinators/trivia-boundary.ts +11 -3
  41. package/src/compiler/compile-linkable-table.ts +4 -1
  42. package/src/compiler/ir-serialize.ts +10 -4
  43. package/src/compiler/linker.ts +22 -12
  44. package/src/index.ts +2 -1
  45. package/src/plugin/evaluator.ts +16 -5
  46. package/src/plugin/index.ts +27 -104
  47. package/src/spec/model.ts +3 -1
  48. package/src/table/assemble.ts +11 -1
  49. package/src/table/emit-assembly.ts +10 -1
  50. package/src/table/encode.ts +16 -9
  51. package/src/table/exec.ts +11 -9
  52. package/src/table/ops.ts +6 -0
  53. package/src/table/site-labels.ts +3 -3
  54. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"commitment.d.ts","sourceRoot":"","sources":["../../src/analysis/commitment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAI9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAqCnG;AAkCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAiC1G;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,EAAE,YAAY,UAAO,EACvF,YAAY,GAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,CAAS,GACzE,OAAO,CAuHT;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAsDxG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAiCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAsC7G;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EACtB,OAAO,CAAC,EAAE,WAAW,EACrB,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAa,GAClD,OAAO,CAET;AAyDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,EAAE,GAAG,IAAI,EAC5C,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GACpB,OAAO,CAkDT;AAwCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAC7D;IAAE,iBAAiB,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAwB5D"}
1
+ {"version":3,"file":"commitment.d.ts","sourceRoot":"","sources":["../../src/analysis/commitment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAI9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAqCnG;AAkCD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAiC1G;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,EAAE,YAAY,UAAO,EACvF,YAAY,GAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,CAAS,GACzE,OAAO,CAuHT;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAsDxG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAiCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAa,GAAG,OAAO,CAsC7G;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EACtB,OAAO,CAAC,EAAE,WAAW,EACrB,IAAI,GAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAa,GAClD,OAAO,CAET;AAyDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,EAAE,GAAG,IAAI,EAC5C,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GACpB,OAAO,CAkDT;AAwCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAC7D;IAAE,iBAAiB,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,CA0B5D"}
@@ -40,6 +40,12 @@ function hasOwnTriviaBoundary(p, depth = MAX_DEPTH) {
40
40
  case "oneOrMore":
41
41
  case "sepBy":
42
42
  return true;
43
+ // A scope that names or clears trivia keeps an outer install out of its body.
44
+ // Any other inherits, so it falls through at no cost in depth: line tracking
45
+ // wraps every rule in one, and must not change what this walk sees.
46
+ case "grammar":
47
+ if (d.triviaParser || d.clearTrivia) return false;
48
+ depth++;
43
49
  // Transparent wrappers — they add no position, so ask what they wrap.
44
50
  case "node":
45
51
  case "transform":
@@ -2469,7 +2475,7 @@ function parser(opts, root) {
2469
2475
  ctx.triviaKindLabels = void 0;
2470
2476
  } else if (scopeTrivia !== void 0) {
2471
2477
  ctx.trivia = scopeTrivia;
2472
- if (scopeLabels) ctx.triviaKindLabels = scopeLabels;
2478
+ ctx.triviaKindLabels = scopeLabels;
2473
2479
  }
2474
2480
  if (forceCaptureTrivia || _ctx?.captureTrivia) ctx.captureTrivia = true;
2475
2481
  if (ownCaptureMask !== void 0) ctx._triviaCaptureMask = ownCaptureMask;
@@ -6615,6 +6621,7 @@ var OP_LIT_CI = 27;
6615
6621
  var OP_LIT_CI_TRACK = 28;
6616
6622
  var OP_TOKEN = 29;
6617
6623
  var OP_SCOPE_CAP = 30;
6624
+ var SCOPE_INHERIT = -2;
6618
6625
  var OP_WITHCTX = 31;
6619
6626
  var OP_GUARD = 32;
6620
6627
  var OP_ADJ = 33;
@@ -8764,7 +8771,7 @@ var Encoder = class {
8764
8771
  this.triviaKnown = savedKnown;
8765
8772
  if (d.clearTrivia === true) return this.emit(op, -1, bodyIp, flags);
8766
8773
  if (d.triviaParser === void 0) {
8767
- return cap || flags !== 0 ? this.emit(op, -1, bodyIp, flags) : bodyIp;
8774
+ return cap ? this.emit(op, SCOPE_INHERIT, bodyIp, flags) : bodyIp;
8768
8775
  }
8769
8776
  return this.emit(op, this.triviaSlot(d.triviaParser), bodyIp, flags);
8770
8777
  }
@@ -10156,7 +10163,7 @@ function transfer(code, ip, at, hostCst) {
10156
10163
  const op = code[ip];
10157
10164
  if (op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN) {
10158
10165
  const ki = code[ip + 1];
10159
- const tri = ki < 0 ? TRI_NONE : ki;
10166
+ const tri = ki === SCOPE_INHERIT ? at.tri : ki < 0 ? TRI_NONE : ki;
10160
10167
  const cap = op === OP_SCOPE_CAP ? CAP_ON : at.cap;
10161
10168
  if (tri === at.tri && cap === at.cap) return at;
10162
10169
  return { tri, buf: at.buf, raw: at.raw, cap };
@@ -10230,7 +10237,7 @@ function scanHandoffNeeded(code, ip, labels) {
10230
10237
  if (l.tri === TRI_UNKNOWN) return true;
10231
10238
  const op = code[at];
10232
10239
  if (op === OP_SCAN) return true;
10233
- if (op === OP_TOKEN || op === OP_SCOPE_CAP) continue;
10240
+ if (op === OP_TOKEN || op === OP_SCOPE_CAP && code[at + 1] !== SCOPE_INHERIT) continue;
10234
10241
  if ((op === OP_SCOPE_PLAIN || op === OP_SCOPE) && !(code[at + 1] >= 0 && l.tri === code[at + 1] && (op === OP_SCOPE_PLAIN || code[at + 3] === 0))) continue;
10235
10242
  kids.length = 0;
10236
10243
  if (!childSlots(code, at, kids)) return true;
@@ -11525,6 +11532,15 @@ return r.value
11525
11532
  const cap = op === OP_SCOPE_CAP;
11526
11533
  const flags = op === OP_SCOPE_PLAIN ? 0 : code[ip + 3];
11527
11534
  const child = link(code[ip + 2]);
11535
+ if (ki === SCOPE_INHERIT) {
11536
+ return `${head}
11537
+ const sC=ctx.captureTrivia
11538
+ ctx.captureTrivia=true
11539
+ const v=${child}(input,pos,ctx)
11540
+ ctx.captureTrivia=sC
11541
+ return v
11542
+ }`;
11543
+ }
11528
11544
  const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? hoist("ts", `TRIVIASCAN[${ki}]`) : "null";
11529
11545
  const tri = ki < 0 ? "undefined" : hoist("tv", `TRIVIA[${ki}]`);
11530
11546
  const lab = ki < 0 ? "undefined" : hoist("tl", `TRIVIA[${ki}]._meta.triviaKindLabels`);
@@ -13270,7 +13286,7 @@ function clearOf(ranges, input, from, to) {
13270
13286
  }
13271
13287
 
13272
13288
  // src/version.ts
13273
- var PARSEMAN_VERSION = "0.60.4";
13289
+ var PARSEMAN_VERSION = "0.60.6";
13274
13290
 
13275
13291
  // src/table/assemble.ts
13276
13292
  import { PlainBuf as PlainBuf2, PlainField, PlainLeaf as PlainLeaf9, PlainNode as PlainNode2, PlainSpan as PlainSpan10 } from "../cst/plain.js";
@@ -14787,6 +14803,16 @@ function assemble(t2, prog, cfg) {
14787
14803
  case OP_SCOPE_CAP:
14788
14804
  case OP_SCOPE_PLAIN: {
14789
14805
  const ki = code[ip + 1];
14806
+ if (ki === SCOPE_INHERIT) {
14807
+ const body = link(code[ip + 2]);
14808
+ return (input, pos, ctx) => {
14809
+ const savedCap = ctx.captureTrivia;
14810
+ ctx.captureTrivia = true;
14811
+ const v = body(input, pos, ctx);
14812
+ ctx.captureTrivia = savedCap;
14813
+ return v;
14814
+ };
14815
+ }
14790
14816
  const scopeTrivia = ki < 0 ? void 0 : trivia2[ki];
14791
14817
  const scopeLabels = scopeTrivia?._meta.triviaKindLabels;
14792
14818
  const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? triviaScan[ki] : null;