parseman 0.51.1 → 0.51.2

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 (48) hide show
  1. package/dist/analysis/diagnostics.js +48 -15
  2. package/dist/analysis/diagnostics.js.map +1 -1
  3. package/dist/cli/index.js +50 -17
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/combinators/token.d.ts +8 -8
  6. package/dist/combinators/token.d.ts.map +1 -1
  7. package/dist/coverage.d.ts.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +53 -19
  11. package/dist/index.js.map +1 -1
  12. package/dist/plugin/evaluator.d.ts.map +1 -1
  13. package/dist/plugin/index.js +53 -20
  14. package/dist/plugin/index.js.map +1 -1
  15. package/dist/spec/index.js +27 -5
  16. package/dist/spec/index.js.map +1 -1
  17. package/dist/table/assemble.d.ts.map +1 -1
  18. package/dist/table/emit-assembly.d.ts.map +1 -1
  19. package/dist/table/encode-baseline.d.ts.map +1 -1
  20. package/dist/table/exec-baseline.d.ts.map +1 -1
  21. package/dist/table/exec.d.ts.map +1 -1
  22. package/dist/table/index.js +373 -362
  23. package/dist/table/index.js.map +2 -2
  24. package/dist/table/ops.d.ts +2 -0
  25. package/dist/table/ops.d.ts.map +1 -1
  26. package/dist/types.d.ts +1 -0
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/version.d.ts +1 -1
  29. package/package.json +1 -1
  30. package/src/analysis/duplication.ts +1 -1
  31. package/src/analysis/rebuild.ts +2 -2
  32. package/src/combinators/token.ts +46 -3
  33. package/src/compiler/ir-serialize.ts +4 -4
  34. package/src/coverage.ts +2 -3
  35. package/src/index.ts +1 -1
  36. package/src/plugin/evaluator.ts +7 -4
  37. package/src/table/assemble.ts +8 -3
  38. package/src/table/child-slots.ts +2 -2
  39. package/src/table/emit-assembly.ts +5 -3
  40. package/src/table/encode-baseline.ts +3 -2
  41. package/src/table/encode.ts +3 -3
  42. package/src/table/exec-baseline.ts +30 -4
  43. package/src/table/exec.ts +8 -3
  44. package/src/table/ops.ts +3 -1
  45. package/src/table/scalar-terminal.ts +5 -5
  46. package/src/table/site-labels.ts +2 -2
  47. package/src/types.ts +1 -1
  48. package/src/version.ts +1 -1
@@ -7,16 +7,16 @@ import type { Combinator } from '../types.ts';
7
7
  * for the full span, suppressing any internal terminal leaves.
8
8
  */
9
9
  export declare function token(root: Combinator<unknown>): Combinator<string>;
10
+ export declare function leaf<T, U>(root: Combinator<T>, fn: (value: T, span: {
11
+ start: number;
12
+ end: number;
13
+ }) => U): Combinator<U>;
10
14
  /**
11
- * Reduce a structural parser to one semantic leaf.
12
- *
13
- * Unlike `token()`, `leaf()` does not change trivia policy: put `noTrivia()` or
14
- * a scoped `parser({ trivia })` inside the supplied grammar when that region has
15
- * a local spacing rule. Internal CST captures are suppressed, while selected
16
- * root-source trivia remains visible, and one leaf with the reducer's value and
17
- * the complete consumed span is exposed to the parent.
15
+ * Reduce a structural parser semantically while exposing its matched source as
16
+ * one CST leaf. This keeps AST-only decoding out of the CST contract without a
17
+ * second source scan.
18
18
  */
19
- export declare function leaf<T, U>(root: Combinator<T>, fn: (value: T, span: {
19
+ export declare function sourceLeaf<T, U>(root: Combinator<T>, fn: (value: T, span: {
20
20
  start: number;
21
21
  end: number;
22
22
  }) => U): Combinator<U>;
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/combinators/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAA;AAGpF;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAuDnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EACvB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAAK,CAAC,GACxD,UAAU,CAAC,CAAC,CAAC,CAwCf"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/combinators/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAA;AAcpF;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAuDnE;AAqED,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EACvB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAAK,CAAC,GACxD,UAAU,CAAC,CAAC,CAAC,CAEf;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAC7B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAAK,CAAC,GACxD,UAAU,CAAC,CAAC,CAAC,CAEf"}
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -20,7 +20,7 @@ export type { BuildNode, NodeCombinator, NodeOptions, NodeProjectOptions } from
20
20
  export { transform, trivia, classifiedTrivia, label, field } from './combinators/map.ts';
21
21
  export { parse, parser, noTrivia } from './combinators/grammar.ts';
22
22
  export type { ParseOptions, ParserOptions, ParsemanParser } from './combinators/grammar.ts';
23
- export { token, leaf } from './combinators/token.ts';
23
+ export { token, leaf, sourceLeaf } from './combinators/token.ts';
24
24
  export { compile } from './table/compile.ts';
25
25
  export type { HostMode } from './cst/host-mode.ts';
26
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5138,6 +5138,12 @@ function field(name, combinator) {
5138
5138
  }
5139
5139
 
5140
5140
  // src/combinators/token.ts
5141
+ function semanticLeafValue(_ctx, _input, _start, _end, value) {
5142
+ return value;
5143
+ }
5144
+ function sourceLeafValue(ctx, input, start, end, value) {
5145
+ return cstOutputHost(ctx.build) ? input.slice(start, end) : value;
5146
+ }
5141
5147
  function token(root) {
5142
5148
  const meta = {
5143
5149
  firstSet: root._meta.firstSet,
@@ -5190,7 +5196,8 @@ function token(root) {
5190
5196
  }
5191
5197
  };
5192
5198
  }
5193
- function leaf(root, fn) {
5199
+ function makeLeaf(root, fn, sourceCstValue) {
5200
+ const cstValue = sourceCstValue ? sourceLeafValue : semanticLeafValue;
5194
5201
  const meta = {
5195
5202
  firstSet: root._meta.firstSet,
5196
5203
  canMatchNewline: root._meta.canMatchNewline,
@@ -5199,7 +5206,12 @@ function leaf(root, fn) {
5199
5206
  return {
5200
5207
  _tag: "leaf",
5201
5208
  _meta: meta,
5202
- _def: { tag: "leaf", parser: root, fn },
5209
+ _def: {
5210
+ tag: "leaf",
5211
+ parser: root,
5212
+ fn,
5213
+ ...sourceCstValue ? { cstValue: "source" } : {}
5214
+ },
5203
5215
  parse(input, pos, ctx) {
5204
5216
  const savedBuf = ctx._cstBuf;
5205
5217
  const savedChildren = ctx._cstChildren;
@@ -5227,11 +5239,21 @@ function leaf(root, fn) {
5227
5239
  }
5228
5240
  if (!result.ok) return result;
5229
5241
  const value = fn(result.value, result.span);
5230
- if (wasCapturing) pushCstLeaf(ctx, { _tag: "leaf", value, span: result.span });
5242
+ if (wasCapturing) pushCstLeaf(ctx, {
5243
+ _tag: "leaf",
5244
+ value: cstValue(ctx, input, pos, result.span.end, value),
5245
+ span: result.span
5246
+ });
5231
5247
  return { ok: true, value, span: result.span };
5232
5248
  }
5233
5249
  };
5234
5250
  }
5251
+ function leaf(root, fn) {
5252
+ return makeLeaf(root, fn, false);
5253
+ }
5254
+ function sourceLeaf(root, fn) {
5255
+ return makeLeaf(root, fn, true);
5256
+ }
5235
5257
 
5236
5258
  // src/analysis/gating.ts
5237
5259
  function childrenOf2(d) {
@@ -6099,6 +6121,7 @@ var OP_COV = 40;
6099
6121
  var OP_SCOPE_PLAIN = 41;
6100
6122
  var OP_LEX_BODY = 42;
6101
6123
  var OP_LEX_PROGRAM = 43;
6124
+ var OP_SOURCE_LEAF = 44;
6102
6125
  var OP_DISPATCH = 25;
6103
6126
  var OP_ROUTED = 26;
6104
6127
  var OP_NAMES = {
@@ -6117,6 +6140,7 @@ var OP_NAMES = {
6117
6140
  [OP_NOT]: "NOT",
6118
6141
  [OP_PEEK]: "PEEK",
6119
6142
  [OP_LEAF]: "LEAF",
6143
+ [OP_SOURCE_LEAF]: "SOURCE_LEAF",
6120
6144
  [OP_EMPTY]: "EMPTY",
6121
6145
  [OP_LIT_TRACK]: "LIT_TRACK",
6122
6146
  [OP_RX_TRACK]: "RX_TRACK",
@@ -8069,7 +8093,7 @@ var Encoder = class {
8069
8093
  }
8070
8094
  case "leaf": {
8071
8095
  const child = this.node(d.parser).ip;
8072
- return this.emit(OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
8096
+ return this.emit(d.cstValue === "source" ? OP_SOURCE_LEAF : OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
8073
8097
  }
8074
8098
  case "node": {
8075
8099
  if (d.type === void 0) missingInferredType();
@@ -8294,6 +8318,7 @@ var Encoder = class {
8294
8318
  case OP_WITHCTX:
8295
8319
  case OP_XFORM:
8296
8320
  case OP_LEAF:
8321
+ case OP_SOURCE_LEAF:
8297
8322
  case OP_NODE:
8298
8323
  case OP_NODE_TRACK:
8299
8324
  return [ip + 2];
@@ -9506,6 +9531,7 @@ function childSlots(code, ip, out) {
9506
9531
  case OP_NODE_TRACK:
9507
9532
  case OP_FIELD:
9508
9533
  case OP_LEAF:
9534
+ case OP_SOURCE_LEAF:
9509
9535
  case OP_ARMGATE:
9510
9536
  out.push(code[ip + 2]);
9511
9537
  return true;
@@ -9614,7 +9640,7 @@ function transfer(code, ip, at, hostCst) {
9614
9640
  if (at.tri === TRI_NONE && !at.buf) return at;
9615
9641
  return { tri: TRI_NONE, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
9616
9642
  }
9617
- if (op === OP_LEAF) {
9643
+ if (op === OP_LEAF || op === OP_SOURCE_LEAF) {
9618
9644
  if (!at.buf) return at;
9619
9645
  return { tri: at.tri, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
9620
9646
  }
@@ -9701,7 +9727,7 @@ function leadingScalarTerminal(code, ip, minDepth = 2, throughAttempt = true, th
9701
9727
  depth++;
9702
9728
  continue;
9703
9729
  }
9704
- if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
9730
+ if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
9705
9731
  at = code[at + 2];
9706
9732
  depth++;
9707
9733
  continue;
@@ -9734,7 +9760,7 @@ function leadingScalarSequence(code, ip) {
9734
9760
  at2 = code[at2 + 1];
9735
9761
  continue;
9736
9762
  }
9737
- if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
9763
+ if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
9738
9764
  at2 = code[at2 + 2];
9739
9765
  continue;
9740
9766
  }
@@ -9767,7 +9793,7 @@ function leadingScalarSequence(code, ip) {
9767
9793
  at = code[at + 2];
9768
9794
  continue;
9769
9795
  }
9770
- if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
9796
+ if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
9771
9797
  at = code[at + 2];
9772
9798
  continue;
9773
9799
  }
@@ -9797,7 +9823,7 @@ function leadingLiteralFamily(code, constants, ip, minDepth = 2, limit = 4) {
9797
9823
  if (op === OP_RULE || op === OP_LABEL || op === OP_TOKEN || op === OP_ATTEMPT || op === OP_PEEK) {
9798
9824
  return walk(code[at + 1], depth + 1);
9799
9825
  }
9800
- if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
9826
+ if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
9801
9827
  return walk(code[at + 2], depth + 1);
9802
9828
  }
9803
9829
  if (op === OP_SEQ || op === OP_SEQV) {
@@ -10683,8 +10709,10 @@ ${rootCap ? "ctx._rootTriviaCapture=sR\n" : ""}return v
10683
10709
  }
10684
10710
  /* ── boundaries ──────────────────────────────────────────────────────── */
10685
10711
  case OP_TOKEN:
10686
- case OP_LEAF: {
10712
+ case OP_LEAF:
10713
+ case OP_SOURCE_LEAF: {
10687
10714
  const isToken = op === OP_TOKEN;
10715
+ const capturesSource = isToken || op === OP_SOURCE_LEAF && hostCst;
10688
10716
  const fn = isToken ? void 0 : fnRef(code[ip + 1]);
10689
10717
  const child = link(isToken ? code[ip + 1] : code[ip + 2]);
10690
10718
  const wasCap = L.buf ? "true" : "(ctx._cstBuf!==undefined||ctx._cstLeaves!==undefined)";
@@ -10717,7 +10745,7 @@ ctx._triviaLog=sOtl
10717
10745
  if(v===FAIL)return FAIL
10718
10746
  const e=EC.e
10719
10747
  const out=${isToken ? "input.slice(pos,e)" : `${fn}(v,{start:pos,end:e})`}
10720
- if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:out,span:{start:pos,end:e}})
10748
+ if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:${capturesSource ? "input.slice(pos,e)" : "out"},span:{start:pos,end:e}})
10721
10749
  EC.e=e
10722
10750
  return out
10723
10751
  }`;
@@ -13387,7 +13415,8 @@ function assemble(t, prog, cfg) {
13387
13415
  return value;
13388
13416
  };
13389
13417
  }
13390
- case OP_LEAF: {
13418
+ case OP_LEAF:
13419
+ case OP_SOURCE_LEAF: {
13391
13420
  const fn = fns[code[ip + 1]];
13392
13421
  const child = link(code[ip + 2]);
13393
13422
  return (input, pos, ctx) => {
@@ -13415,7 +13444,11 @@ function assemble(t, prog, cfg) {
13415
13444
  if (v === FAIL) return FAIL;
13416
13445
  const end = EC.e;
13417
13446
  const out = fn(v, { start: pos, end });
13418
- if (wasCapturing) pushCstLeaf(ctx, { _tag: "leaf", value: out, span: { start: pos, end } });
13447
+ if (wasCapturing) pushCstLeaf(ctx, {
13448
+ _tag: "leaf",
13449
+ value: op === OP_SOURCE_LEAF && hostCst ? input.slice(pos, end) : out,
13450
+ span: { start: pos, end }
13451
+ });
13419
13452
  EC.e = end;
13420
13453
  return out;
13421
13454
  };
@@ -15456,7 +15489,7 @@ function payloadKey(p, d) {
15456
15489
  case "transform":
15457
15490
  return `transform\0${fnKey(d.fnSrc, d.fn)}\0${d.recognitionOnly === true}`;
15458
15491
  case "leaf":
15459
- return `leaf\0${fnKey(d.fnSrc, d.fn)}`;
15492
+ return `leaf\0${d.cstValue ?? "value"}\0${fnKey(d.fnSrc, d.fn)}`;
15460
15493
  case "many":
15461
15494
  case "oneOrMore":
15462
15495
  return `${d.tag}\0${d.min}\0${d.max ?? ""}`;
@@ -16945,7 +16978,7 @@ function evalRuleMapIR(ir) {
16945
16978
  if (recognitionOnly) t._def.recognitionOnly = true;
16946
16979
  return t;
16947
16980
  };
16948
- const _lf = (child, src) => {
16981
+ const _lf = (child, src, source = false) => {
16949
16982
  let fn2;
16950
16983
  try {
16951
16984
  fn2 = (0, eval)(`(${src})`);
@@ -16954,7 +16987,7 @@ function evalRuleMapIR(ir) {
16954
16987
  throw new Error("IR leaf fn not materialized");
16955
16988
  };
16956
16989
  }
16957
- const l = leaf(child, fn2);
16990
+ const l = source ? sourceLeaf(child, fn2) : leaf(child, fn2);
16958
16991
  l._def.fnSrc = src;
16959
16992
  return l;
16960
16993
  };
@@ -17357,7 +17390,7 @@ ${outerDecls.map((d) => " " + d).join("\n")}
17357
17390
  return `token(${kid(def.parser)})`;
17358
17391
  case "leaf": {
17359
17392
  if (def.fnSrc === void 0) throw new Unserializable("leaf without fnSrc");
17360
- return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)})`;
17393
+ return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)}${def.cstValue === "source" ? ", true" : ""})`;
17361
17394
  }
17362
17395
  case "label":
17363
17396
  return `label(${JSON.stringify(def.label)}, ${kid(def.parser)})`;
@@ -17546,7 +17579,7 @@ function compileRuleMap(ruleMap, opts = {}) {
17546
17579
  }
17547
17580
 
17548
17581
  // src/version.ts
17549
- var PARSEMAN_VERSION = "0.51.1";
17582
+ var PARSEMAN_VERSION = "0.51.2";
17550
17583
 
17551
17584
  // src/compiler/compile-linkable-table.ts
17552
17585
  function isLocal(rule) {
@@ -20259,7 +20292,7 @@ function coverageEntry(entry, collector, maps, trace) {
20259
20292
  case "token":
20260
20293
  return token(build(def.parser));
20261
20294
  case "leaf":
20262
- return leaf(build(def.parser), def.fn);
20295
+ return def.cstValue === "source" ? sourceLeaf(build(def.parser), def.fn) : leaf(build(def.parser), def.fn);
20263
20296
  case "field":
20264
20297
  return field(def.name, build(def.parser));
20265
20298
  case "grammar":
@@ -20528,6 +20561,7 @@ export {
20528
20561
  sequence,
20529
20562
  shiftAbsolute,
20530
20563
  siteToString,
20564
+ sourceLeaf,
20531
20565
  startsWith,
20532
20566
  token,
20533
20567
  transform,