parseman 0.58.2 → 0.59.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.
Files changed (90) hide show
  1. package/dist/analysis/diagnostics.js +344 -130
  2. package/dist/analysis/diagnostics.js.map +3 -3
  3. package/dist/cli/index.js +346 -131
  4. package/dist/cli/index.js.map +3 -3
  5. package/dist/combinators/dispatch.d.ts.map +1 -1
  6. package/dist/combinators/field-trivia.d.ts.map +1 -1
  7. package/dist/combinators/first-set.d.ts.map +1 -1
  8. package/dist/combinators/keywords.d.ts.map +1 -1
  9. package/dist/combinators/literal.d.ts.map +1 -1
  10. package/dist/combinators/node.d.ts.map +1 -1
  11. package/dist/combinators/regex.d.ts.map +1 -1
  12. package/dist/combinators/scanTo.d.ts.map +1 -1
  13. package/dist/combinators/token.d.ts.map +1 -1
  14. package/dist/compiler/linker.d.ts.map +1 -1
  15. package/dist/compiler/token-capability.js +28 -4
  16. package/dist/compiler/token-capability.js.map +2 -2
  17. package/dist/compiler/token-scanner.d.ts.map +1 -1
  18. package/dist/cst/capture-buffer.d.ts.map +1 -1
  19. package/dist/cst/plain.js +69 -0
  20. package/dist/cst/plain.js.map +6 -0
  21. package/dist/index.js +350 -138
  22. package/dist/index.js.map +3 -3
  23. package/dist/language-service/index.js +29 -5
  24. package/dist/language-service/index.js.map +3 -3
  25. package/dist/lead-ranges.d.ts +26 -0
  26. package/dist/lead-ranges.d.ts.map +1 -0
  27. package/dist/line-index.d.ts +13 -0
  28. package/dist/line-index.d.ts.map +1 -1
  29. package/dist/plugin/entry-supercompiler.d.ts.map +1 -1
  30. package/dist/plugin/index.js +352 -140
  31. package/dist/plugin/index.js.map +3 -3
  32. package/dist/recovery/scan.d.ts.map +1 -1
  33. package/dist/regex/classes.d.ts +5 -3
  34. package/dist/regex/classes.d.ts.map +1 -1
  35. package/dist/regex/first-set.d.ts +7 -1
  36. package/dist/regex/first-set.d.ts.map +1 -1
  37. package/dist/run/index.js +14 -4
  38. package/dist/run/index.js.map +3 -3
  39. package/dist/spec/index.js +18 -1
  40. package/dist/spec/index.js.map +2 -2
  41. package/dist/table/assemble.d.ts.map +1 -1
  42. package/dist/table/compile-rule-map.d.ts.map +1 -1
  43. package/dist/table/emit-assembly.d.ts +9 -2
  44. package/dist/table/emit-assembly.d.ts.map +1 -1
  45. package/dist/table/emit.d.ts +6 -0
  46. package/dist/table/emit.d.ts.map +1 -1
  47. package/dist/table/encode-baseline.d.ts.map +1 -1
  48. package/dist/table/index.js +330 -129
  49. package/dist/table/index.js.map +3 -3
  50. package/dist/table/program.d.ts.map +1 -1
  51. package/dist/table/run-support.d.ts.map +1 -1
  52. package/dist/table/scan-shapes.d.ts +1 -1
  53. package/dist/table/scan-shapes.d.ts.map +1 -1
  54. package/dist/table/site-labels.d.ts.map +1 -1
  55. package/dist/table/trivia-gap.d.ts +11 -1
  56. package/dist/table/trivia-gap.d.ts.map +1 -1
  57. package/dist/version.d.ts +1 -1
  58. package/package.json +2 -1
  59. package/src/combinators/choice.ts +4 -0
  60. package/src/combinators/dispatch.ts +2 -1
  61. package/src/combinators/field-trivia.ts +6 -5
  62. package/src/combinators/first-set.ts +13 -4
  63. package/src/combinators/keywords.ts +3 -2
  64. package/src/combinators/literal.ts +5 -4
  65. package/src/combinators/node.ts +3 -1
  66. package/src/combinators/regex.ts +33 -13
  67. package/src/combinators/scanTo.ts +2 -1
  68. package/src/combinators/token.ts +3 -6
  69. package/src/compiler/linker.ts +4 -2
  70. package/src/compiler/token-scanner.ts +4 -1
  71. package/src/cst/capture-buffer.ts +13 -5
  72. package/src/cst/plain.d.ts +35 -0
  73. package/src/cst/plain.js +74 -0
  74. package/src/lead-ranges.ts +53 -0
  75. package/src/line-index.ts +37 -0
  76. package/src/plugin/entry-supercompiler.ts +3 -2
  77. package/src/recovery/scan.ts +4 -4
  78. package/src/regex/classes.ts +22 -7
  79. package/src/regex/first-set.ts +67 -12
  80. package/src/table/assemble.ts +75 -38
  81. package/src/table/compile-rule-map.ts +5 -3
  82. package/src/table/emit-assembly.ts +69 -32
  83. package/src/table/emit.ts +9 -1
  84. package/src/table/encode-baseline.ts +2 -1
  85. package/src/table/program.ts +2 -1
  86. package/src/table/run-support.ts +4 -7
  87. package/src/table/scan-shapes.ts +5 -2
  88. package/src/table/site-labels.ts +2 -1
  89. package/src/table/trivia-gap.ts +19 -0
  90. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/table/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/table/program.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-support.d.ts","sourceRoot":"","sources":["../../src/table/run-support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,MAAM,MAAM,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACjD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAS3E;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAGjF;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAUjF;AAED,yEAAyE;AACzE,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD;AAKD,KAAK,aAAa,GAAG,CACnB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACrF,WAAW,EAAE,SAAS,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,KAC5E,OAAO,CAAA;AAEZ;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAClG,OAAO,CAST"}
1
+ {"version":3,"file":"run-support.d.ts","sourceRoot":"","sources":["../../src/table/run-support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,MAAM,MAAM,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACjD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAS3E;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAGjF;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMjF;AAED,yEAAyE;AACzE,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD;AAKD,KAAK,aAAa,GAAG,CACnB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACrF,WAAW,EAAE,SAAS,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,KAC5E,OAAO,CAAA;AAEZ;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAClG,OAAO,CAST"}
@@ -132,7 +132,7 @@ export declare function parseScanShape(source: string): ScanShape | null;
132
132
  /**
133
133
  * Flag-aware wrapper around `parseScanShape`. Lowering to a raw code-point scan
134
134
  * assumes default regex semantics, so any flag that changes matching (`i` case
135
- * folding, `u` surrogate handling, `m`/`s` anchor/dot behavior) disables it.
135
+ * folding, `u`/`v` code points and sets, `m`/`s` anchor/dot behavior) disables it.
136
136
  * `g`/`y` are stickiness-only and safe.
137
137
  */
138
138
  export declare function scanShapeFromRegex(source: string, flags: string): ScanShape | null;
@@ -1 +1 @@
1
- {"version":3,"file":"scan-shapes.d.ts","sourceRoot":"","sources":["../../src/table/scan-shapes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan-shapes.d.ts","sourceRoot":"","sources":["../../src/table/scan-shapes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"site-labels.d.ts","sourceRoot":"","sources":["../../src/table/site-labels.ts"],"names":[],"mappings":"AAoEA,iFAAiF;AACjF,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,qDAAqD;AACrD,eAAO,MAAM,QAAQ,KAAK,CAAA;AAC1B,0EAA0E;AAE1E,qDAAqD;AACrD,eAAO,MAAM,WAAW,IAAI,CAAA;AAC5B,yDAAyD;AACzD,eAAO,MAAM,OAAO,IAAI,CAAA;AACxB,uDAAuD;AACvD,eAAO,MAAM,MAAM,IAAI,CAAA;AAEvB,0DAA0D;AAC1D,eAAO,MAAM,WAAW,IAAI,CAAA;AAC5B,uCAAuC;AACvC,eAAO,MAAM,WAAW,IAAI,CAAA;AAC5B,oDAAoD;AACpD,eAAO,MAAM,QAAQ,IAAI,CAAA;AAEzB,MAAM,MAAM,SAAS,GAAG;IACtB,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,wDAAwD;AACxD,eAAO,MAAM,GAAG,EAAE,SAAgF,CAAA;AAWlG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAarF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAYpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAuB/I;AAqED,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,CAAA;CAAE,CAAA;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,OAAO,GACf,UAAU,CA6BZ;AAED;;;;;;;;;;;;;GAaG;AACH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAKpF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAqB3F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IAAE,KAAK,EAAE;QAAE,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,SAAS;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,EAAE,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,CAAC,EAAE,GACtI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,CAOnD"}
1
+ {"version":3,"file":"site-labels.d.ts","sourceRoot":"","sources":["../../src/table/site-labels.ts"],"names":[],"mappings":"AAqEA,iFAAiF;AACjF,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,qDAAqD;AACrD,eAAO,MAAM,QAAQ,KAAK,CAAA;AAC1B,0EAA0E;AAE1E,qDAAqD;AACrD,eAAO,MAAM,WAAW,IAAI,CAAA;AAC5B,yDAAyD;AACzD,eAAO,MAAM,OAAO,IAAI,CAAA;AACxB,uDAAuD;AACvD,eAAO,MAAM,MAAM,IAAI,CAAA;AAEvB,0DAA0D;AAC1D,eAAO,MAAM,WAAW,IAAI,CAAA;AAC5B,uCAAuC;AACvC,eAAO,MAAM,WAAW,IAAI,CAAA;AAC5B,oDAAoD;AACpD,eAAO,MAAM,QAAQ,IAAI,CAAA;AAEzB,MAAM,MAAM,SAAS,GAAG;IACtB,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,wDAAwD;AACxD,eAAO,MAAM,GAAG,EAAE,SAAgF,CAAA;AAWlG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAarF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAYpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAuB/I;AAqED,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,CAAA;CAAE,CAAA;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,OAAO,GACf,UAAU,CA6BZ;AAED;;;;;;;;;;;;;GAaG;AACH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAKpF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAqB3F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IAAE,KAAK,EAAE;QAAE,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,SAAS;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,EAAE,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,CAAC,EAAE,GACtI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,CAOnD"}
@@ -1,4 +1,4 @@
1
- import type { ParseContext } from '../types.ts';
1
+ import type { Combinator, ParseContext } from '../types.ts';
2
2
  /**
3
3
  * THE TABLE ENGINES' DEFERRED-COMMIT TRIVIA SKIP: `commitTriviaScan(scanTriviaCompact(…))`,
4
4
  * the path every labelled trivia scan takes once a log is live, answered without
@@ -28,4 +28,14 @@ import type { ParseContext } from '../types.ts';
28
28
  * capture (a scan records into the open buffer).
29
29
  */
30
30
  export declare function skipDeferredTrivia(input: string, cur: number, ctx: ParseContext): number;
31
+ /**
32
+ * THE CHARACTERS A TRIVIA CAN START WITH, as a table over ASCII: `1` where a run
33
+ * may start, `0` where none can. `null` when the trivia's first set is unbounded.
34
+ *
35
+ * A gap at a character outside the table is the empty gap. It consumes nothing
36
+ * and records nothing in any sink (trivia log, root log, capture buffer, line
37
+ * table), so a skip there can answer `cur` without scanning. A character at or
38
+ * above 128, or past the end of input, is not decided by the table.
39
+ */
40
+ export declare function triviaLeadTable(triviaP: Combinator<unknown>): Uint8Array | null;
31
41
  //# sourceMappingURL=trivia-gap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trivia-gap.d.ts","sourceRoot":"","sources":["../../src/table/trivia-gap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,YAAY,EAAE,MAAM,aAAa,CAAA;AAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAgBxF"}
1
+ {"version":3,"file":"trivia-gap.d.ts","sourceRoot":"","sources":["../../src/table/trivia-gap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAgBxF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,IAAI,CAQ/E"}
package/dist/version.d.ts CHANGED
@@ -13,5 +13,5 @@
13
13
  * Kept in sync with `package.json` by `test/unit/version-sync.test.ts`, which fails
14
14
  * the build if this constant drifts from the published version.
15
15
  */
16
- export declare const PARSEMAN_VERSION = "0.58.2";
16
+ export declare const PARSEMAN_VERSION = "0.59.0";
17
17
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parseman",
3
- "version": "0.58.2",
3
+ "version": "0.59.0",
4
4
  "packageManager": "pnpm@10.15.1",
5
5
  "engines": {
6
6
  "node": "^20.19.0 || >=22.13.0"
@@ -96,6 +96,7 @@
96
96
  "perf:guard:grammars": "node --import tsx/esm bench/grammar-perf-guard.ts",
97
97
  "perf:xproc": "node --import tsx/esm bench/xproc-ab.ts",
98
98
  "perf:xproc:gate": "node --import tsx/esm bench/xproc-gate.ts",
99
+ "perf:pretenure": "node --import tsx/esm bench/pretenure-check.ts",
99
100
  "prepare": "git config core.hooksPath scripts/git-hooks || true; node scripts/build.mjs",
100
101
  "prepublishOnly": "node scripts/check-changelog.mjs --publish",
101
102
  "check:changelog": "node scripts/check-changelog.mjs",
@@ -481,6 +481,10 @@ function inFirstSet(code: number, fs: FirstSet): boolean {
481
481
  if (fs.kind === 'any') return true
482
482
  if (fs.kind === 'empty') return false
483
483
  for (const r of fs.ranges) if (code >= r.lo && code <= r.hi) return true
484
+ // `rangesHaveLead`, inline: this is a hot path.
485
+ if (code <= 0xffff) return false
486
+ const high = 0xd800 + ((code - 0x10000) >> 10)
487
+ for (const r of fs.ranges) if (high >= r.lo && high <= r.hi) return true
484
488
  return false
485
489
  }
486
490
 
@@ -1,6 +1,7 @@
1
1
  import type { Combinator, DispatchCase, DispatchMatcherCase, ParseContext, ParseResult, ParserMeta } from '../types.ts'
2
2
  import { cstCaptureActive, pushCstLeaf } from '../cst/capture-buffer.ts'
3
3
  import { rollbackTrivia, saveTriviaMark } from './trivia-skip.ts'
4
+ import { PlainLeaf } from '../cst/plain.js'
4
5
 
5
6
  export type DispatchWhen<T> = {
6
7
  readonly kind: 'when'
@@ -240,7 +241,7 @@ export function routed<T = string>(fallback?: Combinator<T>): Combinator<T> {
240
241
  return { ok: false, expected: ['routed()'], span: { start: pos, end: pos } }
241
242
  }
242
243
  if (cstCaptureActive(ctx)) {
243
- pushCstLeaf(ctx, { _tag: 'leaf', value: item.value, span: item.span })
244
+ pushCstLeaf(ctx, new PlainLeaf(item.value, item.span))
244
245
  }
245
246
  return { ok: true, value: item.value as T, span: item.span }
246
247
  },
@@ -1,4 +1,5 @@
1
1
  import type { Combinator } from '../types.ts'
2
+ import { PlainSpan, PlainTriviaField } from '../cst/plain.js'
2
3
 
3
4
  /**
4
5
  * Where the trivia before a `field(…, { leadingTrivia: true })` began.
@@ -29,13 +30,13 @@ export const FIELD_TRAILING_TRIVIA = 2
29
30
  export function triviaFieldCapture(
30
31
  name: string, value: unknown, input: string, start: number, end: number, leadFrom: number, trailEnd: number,
31
32
  ): { name: string; value: unknown; span: { start: number; end: number }; leading: string; trailing: string } {
32
- return {
33
+ return new PlainTriviaField(
33
34
  name,
34
35
  value,
35
- span: { start, end },
36
- leading: leadFrom >= 0 && leadFrom < start ? input.slice(leadFrom, start) : '',
37
- trailing: trailEnd > end ? input.slice(end, trailEnd) : '',
38
- }
36
+ new PlainSpan(start, end),
37
+ leadFrom >= 0 && leadFrom < start ? input.slice(leadFrom, start) : '',
38
+ trailEnd > end ? input.slice(end, trailEnd) : '',
39
+ )
39
40
  }
40
41
 
41
42
  /** Is `p` a `field(…, { leadingTrivia: true })` — the term itself, not wrapped? */
@@ -1,4 +1,5 @@
1
1
  import type { CharRange, FirstSet, Combinator, ParserDef } from '../types.ts'
2
+ import { implicitLeadsDropped, leadRanges } from '../lead-ranges.ts'
2
3
 
3
4
  /**
4
5
  * Resolve a NAMED cross-artifact rule reference (`g.Foo`) whose own thunk does not
@@ -101,8 +102,9 @@ export function union(a: FirstSet, b: FirstSet): FirstSet {
101
102
  export function intersects(a: FirstSet, b: FirstSet): boolean {
102
103
  if (a.kind === 'any' || b.kind === 'any') return true
103
104
  if (a.kind === 'empty' || b.kind === 'empty') return false
104
- for (const ra of a.ranges) {
105
- for (const rb of b.ranges) {
105
+ const bs = leadRanges(b.ranges)
106
+ for (const ra of leadRanges(a.ranges)) {
107
+ for (const rb of bs) {
106
108
  if (ra.lo <= rb.hi && rb.lo <= ra.hi) return true
107
109
  }
108
110
  }
@@ -126,6 +128,10 @@ export function startsFirstSet(combinator: Combinator<unknown>, input: string, p
126
128
  const code = input.codePointAt(pos)
127
129
  if (code === undefined) return false
128
130
  for (const r of fs.ranges) if (code >= r.lo && code <= r.hi) return true
131
+ // `rangesHaveLead`, inline: this is a hot path.
132
+ if (code <= 0xffff) return false
133
+ const high = 0xd800 + ((code - 0x10000) >> 10)
134
+ for (const r of fs.ranges) if (high >= r.lo && high <= r.hi) return true
129
135
  return false
130
136
  }
131
137
 
@@ -274,13 +280,16 @@ function narrowBy(acc: FirstSet | null, constraint: FirstSet): FirstSet | null {
274
280
  if (acc === null) return constraint
275
281
  if (acc.kind === 'any') return constraint
276
282
  if (acc.kind === 'empty' || constraint.kind === 'empty') return { kind: 'empty' }
283
+ // Each side admits astral leads through its high surrogates, so intersect them as
284
+ // read: `peek(/😀/)` (code units) and `literal('😀')` (a code point) overlap.
277
285
  const ranges: CharRange[] = []
278
- for (const a of acc.ranges) for (const b of constraint.ranges) {
286
+ const bs = leadRanges(constraint.ranges)
287
+ for (const a of leadRanges(acc.ranges)) for (const b of bs) {
279
288
  const lo = Math.max(a.lo, b.lo)
280
289
  const hi = Math.min(a.hi, b.hi)
281
290
  if (lo <= hi) ranges.push({ lo, hi })
282
291
  }
283
- return ranges.length === 0 ? { kind: 'empty' } : { kind: 'ranges', ranges }
292
+ return ranges.length === 0 ? { kind: 'empty' } : { kind: 'ranges', ranges: implicitLeadsDropped(ranges) }
284
293
  }
285
294
 
286
295
  /**
@@ -5,6 +5,7 @@ import { failAt } from './probe.ts'
5
5
  import { pushCstLeaf, cstCaptureActive } from '../cst/capture-buffer.ts'
6
6
  import { directTerminalFailureExpected } from './expected.ts'
7
7
  import type { ScalarParser } from './scalar.ts'
8
+ import { PlainLeaf, PlainSpan } from '../cst/plain.js'
8
9
 
9
10
  export type KeywordsOptions = {
10
11
  /** Match case-insensitively. */
@@ -164,8 +165,8 @@ export function keywords(words: readonly string[], opts: KeywordsOptions = {}):
164
165
  const m = re.exec(input)
165
166
  if (m === null) return failAt(ctx, directTerminalFailureExpected(def), pos)
166
167
  const value = m[0]!
167
- const span = { start: pos, end: pos + value.length }
168
- if (cstCaptureActive(ctx)) pushCstLeaf(ctx, { _tag: 'leaf', value, span })
168
+ const span = new PlainSpan(pos, pos + value.length)
169
+ if (cstCaptureActive(ctx)) pushCstLeaf(ctx, new PlainLeaf(value, span))
169
170
  return { ok: true, value, span }
170
171
  },
171
172
  }
@@ -5,6 +5,7 @@ import { pushCstLeaf, cstCaptureActive } from '../cst/capture-buffer.ts'
5
5
  import { recordLineRangeFromContext } from '../line-index.ts'
6
6
  import { directTerminalFailureExpected } from './expected.ts'
7
7
  import type { ScalarParser } from './scalar.ts'
8
+ import { PlainLeaf, PlainSpan } from '../cst/plain.js'
8
9
 
9
10
  /**
10
11
  * ASCII case-fold equality — the interpreter twin of the compiler's `foldEq`
@@ -96,9 +97,9 @@ export function literal(value: string, opts: LiteralOptions = {}): Combinator<st
96
97
  const code = value.charCodeAt(0)
97
98
  return function parse(input: string, pos: number, ctx: ParseContext): ParseResult<string> {
98
99
  if (input.charCodeAt(pos) === code) {
99
- const span = { start: pos, end: pos + 1 }
100
+ const span = new PlainSpan(pos, pos + 1)
100
101
  if (canMatchNewline && ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, span.end)
101
- if (cstCaptureActive(ctx)) pushCstLeaf(ctx, { _tag: 'leaf', value, span })
102
+ if (cstCaptureActive(ctx)) pushCstLeaf(ctx, new PlainLeaf(value, span))
102
103
  return { ok: true, value, span }
103
104
  }
104
105
  return failAt(ctx, expected, pos)
@@ -111,9 +112,9 @@ export function literal(value: string, opts: LiteralOptions = {}): Combinator<st
111
112
  }
112
113
  const matchedValue = caseInsensitive ? input.slice(pos, end) : value
113
114
  if (caseInsensitive ? asciiFoldEq(matchedValue, value) : input.startsWith(value, pos)) {
114
- const span = { start: pos, end }
115
+ const span = new PlainSpan(pos, end)
115
116
  if (canMatchNewline && ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, end)
116
- if (cstCaptureActive(ctx)) pushCstLeaf(ctx, { _tag: 'leaf', value: matchedValue, span })
117
+ if (cstCaptureActive(ctx)) pushCstLeaf(ctx, new PlainLeaf(matchedValue, span))
117
118
  return { ok: true, value: matchedValue, span }
118
119
  }
119
120
  return failAt(ctx, expected, pos)
@@ -7,6 +7,8 @@ import { matchesEmpty, startsFirstSet } from './first-set.ts'
7
7
  import { deriveExpected } from './expect.ts'
8
8
  import { annotateSpanFromLineContext } from '../line-index.ts'
9
9
  import { NODE_TAG, NODE_TYPE } from '../cst/reflection-symbols.ts'
10
+ import { PlainNode, PlainSpan } from '../cst/plain.js'
11
+ import { copySpan } from '../line-index.ts'
10
12
 
11
13
  /**
12
14
  * A CST/AST node rule. Runs `combinator` while collecting its terminals into
@@ -331,7 +333,7 @@ export function node<N>(
331
333
  // Structural node: a `ctx.build` host if present, else a default CST.
332
334
  : ctx.build
333
335
  ? ctx.build(nodeType, children, fields, span, rawChildren, triviaLog, st, tags)
334
- : { _tag: 'node', type: nodeType, span: ctx.trackLines ? { ...span } : { start: r.span.start, end: r.span.end }, state: st ?? null, children }
336
+ : new PlainNode(nodeType, ctx.trackLines ? copySpan(span) : new PlainSpan(r.span.start, r.span.end), st ?? null, [...children])
335
337
  const rawEntry = isCstChild(built)
336
338
  ? built
337
339
  // A direct semantic object is opaque to the raw CST, but its source is
@@ -7,6 +7,7 @@ import { shorthandRanges, parseClassRanges } from '../regex/classes.ts'
7
7
  import { firstSetFromRegex } from '../regex/first-set.ts'
8
8
  import { directTerminalFailureExpected } from './expected.ts'
9
9
  import type { ScalarParser } from './scalar.ts'
10
+ import { PlainLeaf, PlainSpan } from '../cst/plain.js'
10
11
 
11
12
  /**
12
13
  * A regex terminal's first-set (for choice-dispatch fast paths) is derived by
@@ -85,13 +86,29 @@ function shortScanner(source: string, flags: string): ShortScanner | null {
85
86
  * ASCII-case-fold a first-set: for every ASCII letter reachable as a leading char,
86
87
  * also admit its opposite-case twin (A–Z ↔ a–z). Non-letter code points and `any`/
87
88
  * `empty` are unchanged. Only widens the set (sound superset) — used to correct a
88
- * case-insensitive regex's flag-agnostic first-set for first-char dispatch. Unicode
89
- * case-folding beyond ASCII is deliberately NOT applied (parseman first-sets are
90
- * ASCII-BMP for dispatch); a non-ASCII letter keeps its own code point only, which
91
- * stays sound (the interpreter's real `/i` match still runs).
89
+ * case-insensitive regex's flag-agnostic first-set for first-char dispatch. A set
90
+ * that reaches a code point at or above 128 becomes `any()`, unless it holds every
91
+ * one of them: non-ASCII letters fold under `/i` too (`é`↔`É`), and a set missing a
92
+ * twin would refuse a real match.
92
93
  */
94
+ /**
95
+ * Does the set hold every code unit from 128 to U+FFFF? Without `u`, `/i` folds a
96
+ * code unit at or above 128 only to another one at or above 128 (it never folds
97
+ * to ASCII), so such a set already holds every twin its members have.
98
+ */
99
+ function coversNonAscii(ranges: readonly { lo: number; hi: number }[]): boolean {
100
+ let next = 128
101
+ for (const r of [...ranges].sort((a, b) => a.lo - b.lo)) {
102
+ if (r.lo > next) return false
103
+ if (r.hi >= next) next = r.hi + 1
104
+ if (next > 0xffff) return true
105
+ }
106
+ return false
107
+ }
108
+
93
109
  function asciiCaseFold(fs: FirstSet): FirstSet {
94
110
  if (fs.kind !== 'ranges') return fs
111
+ if (fs.ranges.some(r => r.hi >= 128) && !coversNonAscii(fs.ranges)) return any()
95
112
  const ranges: { lo: number; hi: number }[] = fs.ranges.map(r => ({ lo: r.lo, hi: r.hi }))
96
113
  const add = (lo: number, hi: number): void => { if (lo <= hi) ranges.push({ lo, hi }) }
97
114
  for (const r of fs.ranges) {
@@ -120,16 +137,19 @@ export function regex(pattern: string | RegExp, flags = ''): Combinator<string>
120
137
  const anchored = new RegExp(source, 'y' + resolvedFlags.replace(/[gy]/g, ''))
121
138
  const scan = shortScanner(source, resolvedFlags)
122
139
 
123
- const raw = firstSetFromRegex(source)
140
+ const raw = firstSetFromRegex(source, resolvedFlags)
124
141
  // The first-set analyzer is flag-agnostic, so for a CASE-INSENSITIVE pattern it
125
142
  // returns only the literal-case leading chars — e.g. `/red|blue/i` → `{r,b}`, NOT
126
143
  // `{r,R,b,B}`. Using that narrow set for first-char DISPATCH would false-EXCLUDE the
127
144
  // opposite-case input (`ReD` gated out of a `/(?:red|…)/i` arm), so widen it under
128
145
  // `i`. The widening is FLAG-AWARE because `i` alone and `i`+`u` fold different sets:
129
- // - `/i` WITHOUT `u`: ECMAScript case-insensitive matching folds ONLY the ASCII
130
- // Basic-Latin case pairs (`a`↔`A` … `z`↔`Z`) — a plain `/[a-z]/i` does NOT match
131
- // `ſ`(U+017F) or `K`(U+212A). So `asciiCaseFold` is a SOUND, tight superset, and
132
- // it preserves at-keyword dispatch (`/@media…/i` still gates on `@`).
146
+ // - `/i` WITHOUT `u`: an ASCII character folds only to its ASCII twin — a plain
147
+ // `/[a-z]/i` does NOT match `ſ`(U+017F) or `K`(U+212A) — so for a set of ASCII
148
+ // characters `asciiCaseFold` is a SOUND, tight superset, and it preserves
149
+ // at-keyword dispatch (`/@media…/i` still gates on `@`). A character at or above
150
+ // 128 folds by `toUpperCase` (`/é/i` matches `É`, `/σ/i` matches `Σ` and `ς`), which
151
+ // this does not enumerate, so a set that reaches 128 widens to `any()` — unless it
152
+ // already holds all of 128–U+FFFF (`[\u0080-\uffff]`), which no fold leaves.
133
153
  // - `/ui` or `/iv` (Unicode mode — the `u` OR the ES2024 `v` Unicode-sets flag):
134
154
  // matching uses Unicode *simple case folding*, so `/[a-z]/ui` (and `/[a-z]/iv`)
135
155
  // ALSO match `ſ`→s and `K`→k. ASCII-folding can't enumerate those astral/BMP case
@@ -176,9 +196,9 @@ export function regex(pattern: string | RegExp, flags = ''): Combinator<string>
176
196
  if (scanEnd !== undefined) {
177
197
  if (scanEnd === null) return failAt(ctx, directTerminalFailureExpected(def), pos)
178
198
  const value = input.slice(pos, scanEnd)
179
- const span = { start: pos, end: scanEnd }
199
+ const span = new PlainSpan(pos, scanEnd)
180
200
  if (canMatchNewline && ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, scanEnd)
181
- if (cstCaptureActive(ctx)) pushCstLeaf(ctx, { _tag: 'leaf', value, span })
201
+ if (cstCaptureActive(ctx)) pushCstLeaf(ctx, new PlainLeaf(value, span))
182
202
  return { ok: true, value, span }
183
203
  }
184
204
  anchored.lastIndex = pos
@@ -186,9 +206,9 @@ export function regex(pattern: string | RegExp, flags = ''): Combinator<string>
186
206
  if (m === null) {
187
207
  return failAt(ctx, directTerminalFailureExpected(def), pos)
188
208
  }
189
- const span = { start: pos, end: pos + m[0]!.length }
209
+ const span = new PlainSpan(pos, pos + m[0]!.length)
190
210
  if (canMatchNewline && ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, span.end)
191
- if (cstCaptureActive(ctx)) pushCstLeaf(ctx, { _tag: 'leaf', value: m[0]!, span })
211
+ if (cstCaptureActive(ctx)) pushCstLeaf(ctx, new PlainLeaf(m[0]!, span))
192
212
  return { ok: true, value: m[0]!, span }
193
213
  },
194
214
  }
@@ -12,6 +12,7 @@ import { ref } from './ref.ts'
12
12
  import { pushCstLeaf, cstCaptureActive } from '../cst/capture-buffer.ts'
13
13
  import { token } from './token.ts'
14
14
  import { recordLineRangeFromContext } from '../line-index.ts'
15
+ import { PlainLeaf, PlainSpan } from '../cst/plain.js'
15
16
 
16
17
  export type ScanToOptions = {
17
18
  /**
@@ -154,7 +155,7 @@ export function scanTo(
154
155
  // returned value carries it). Skipped when no collector is active.
155
156
  const emit = (end: number) => {
156
157
  if (end > pos && cstCaptureActive(ctx)) {
157
- const leaf = { _tag: 'leaf', value: input.slice(pos, end), span: { start: pos, end } }
158
+ const leaf = new PlainLeaf(input.slice(pos, end), new PlainSpan(pos, end))
158
159
  pushCstLeaf(ctx, leaf)
159
160
  }
160
161
  }
@@ -1,6 +1,7 @@
1
1
  import type { Combinator, ParseContext, ParseResult, ParserMeta } from '../types.ts'
2
2
  import { pushCstLeaf, cstCaptureActive } from '../cst/capture-buffer.ts'
3
3
  import { cstOutputHost } from '../compiler/build-arity.ts'
4
+ import { PlainLeaf } from '../cst/plain.js'
4
5
 
5
6
  type LeafCstValue<U> = (ctx: ParseContext, input: string, start: number, end: number, value: U) => unknown
6
7
 
@@ -70,7 +71,7 @@ export function token(root: Combinator<unknown>): Combinator<string> {
70
71
 
71
72
  const span = result.span
72
73
  const value = input.slice(pos, span.end)
73
- if (wasCapturing) pushCstLeaf(ctx, { _tag: 'leaf', value, span })
74
+ if (wasCapturing) pushCstLeaf(ctx, new PlainLeaf(value, span))
74
75
  return { ok: true, value, span }
75
76
  },
76
77
  }
@@ -133,11 +134,7 @@ function makeLeaf<T, U>(
133
134
  }
134
135
  if (!result.ok) return result
135
136
  const value = fn(result.value, result.span)
136
- if (wasCapturing) pushCstLeaf(ctx, {
137
- _tag: 'leaf',
138
- value: cstValue(ctx, input, pos, result.span.end, value),
139
- span: result.span,
140
- })
137
+ if (wasCapturing) pushCstLeaf(ctx, new PlainLeaf(cstValue(ctx, input, pos, result.span.end, value), result.span))
141
138
  return { ok: true, value, span: result.span }
142
139
  },
143
140
  }
@@ -19,6 +19,8 @@ import { GRAMMAR_REFLECTION } from '../cst/reflection.ts'
19
19
  import { linkRules, RULE_ORDER, RULES_RECIPE, type LinkOptions, type RulesRecipe } from '../combinators/parser.ts'
20
20
  import type { BuildHost, Combinator, CstCollapsePredicate, ParseContext, ParseResult } from '../types.ts'
21
21
  import type { Runnable } from '../functional/run.ts'
22
+ import { PlainNode, PlainTaggedNode } from '../cst/plain.js'
23
+ import { copySpan } from '../line-index.ts'
22
24
 
23
25
  /**
24
26
  * Compile a `rules()` map to a **linkable artifact** — the composable, shippable
@@ -92,8 +94,8 @@ function buildCstNode(
92
94
  // Carry the grammar's `ctx.state` snapshot onto the node (null when unset) — the
93
95
  // CST contract includes `state` and incremental re-parse replays it on edit.
94
96
  return tags !== undefined && tags.length > 0
95
- ? { _tag: 'node', type, tags, span: { ...span }, state: state ?? null, children: [...children] }
96
- : { _tag: 'node', type, span: { ...span }, state: state ?? null, children: [...children] }
97
+ ? new PlainTaggedNode(type, tags, copySpan(span), state ?? null, [...children])
98
+ : new PlainNode(type, copySpan(span), state ?? null, [...children])
97
99
  }
98
100
 
99
101
  /**
@@ -46,7 +46,7 @@ import { foldCode, foldExpr } from './token-dispatch.ts'
46
46
  */
47
47
  function firstSetOfRegexSource(source: string, flags: string): Set<number> | null {
48
48
  let fs
49
- try { fs = firstSetFromRegex(source).firstSet } catch { return null }
49
+ try { fs = firstSetFromRegex(source, flags).firstSet } catch { return null }
50
50
  if (fs.kind === 'any') return null
51
51
  const out = new Set<number>()
52
52
  if (fs.kind === 'empty') return out
@@ -58,6 +58,9 @@ function firstSetOfRegexSource(source: string, flags: string): Set<number> | nul
58
58
  // Under `/i` the analyzer's ranges may name only one case; admit both, since a
59
59
  // gate narrower than the real first set would skip a valid token.
60
60
  if (flags.includes('i')) {
61
+ // Unicode-mode folding, and any non-ASCII member, fold to characters this
62
+ // does not enumerate (`ſ`→`s`, `é`→`É`).
63
+ if (flags.includes('u') || flags.includes('v') || [...out].some(c => c >= 128)) return null
61
64
  for (const c of [...out]) {
62
65
  if (c >= 65 && c <= 90) out.add(c + 32)
63
66
  else if (c >= 97 && c <= 122) out.add(c - 32)
@@ -1,5 +1,6 @@
1
1
  import type { ParseContext, Span } from '../types.ts'
2
- import { annotateSpanFromLineContext } from '../line-index.ts'
2
+ import { annotateSpanFromLineContext, lineSpanFromContext } from '../line-index.ts'
3
+ import { PlainBuf, PlainLeaf } from './plain.js'
3
4
 
4
5
  /** Lazy per-node capture state — arrays materialized on first push. */
5
6
  export type CstCaptureBuf = {
@@ -42,7 +43,7 @@ export function beginCstNodeCapture(ctx: ParseContext): CstNodeCaptureSaved {
42
43
  cap: ctx.captureTrivia,
43
44
  buf: ctx._cstBuf,
44
45
  }
45
- ctx._cstBuf = {}
46
+ ctx._cstBuf = new PlainBuf(undefined, undefined, 0)
46
47
  ctx._cstChildren = undefined
47
48
  ctx._cstLeaves = undefined
48
49
  ctx._cstRawChildren = undefined
@@ -79,14 +80,21 @@ export function endCstNodeCapture(
79
80
  return materialized
80
81
  }
81
82
 
83
+ /** Every caller passes a leaf `{ _tag, value, span }` (parseman's own terminals; this is not public API). */
84
+ function isLeaf(v: unknown): v is { _tag: 'leaf'; value: unknown; span: Span } {
85
+ return typeof v === 'object' && v !== null && (v as { _tag?: unknown })._tag === 'leaf'
86
+ }
87
+
82
88
  export function pushCstLeaf(ctx: ParseContext, leaf: unknown): void {
83
89
  if (!ctx.trackLines) {
84
90
  pushCstChild(ctx, leaf, leaf)
85
91
  return
86
92
  }
87
- const annotated = leaf && typeof leaf === 'object' && (leaf as { span?: unknown }).span
88
- ? { ...(leaf as Record<string, unknown>), span: annotateSpanFromLineContext((leaf as { span: Span }).span, ctx) }
89
- : leaf
93
+ const annotated = isLeaf(leaf)
94
+ ? new PlainLeaf(leaf.value, lineSpanFromContext(leaf.span, ctx))
95
+ : leaf && typeof leaf === 'object' && (leaf as { span?: unknown }).span
96
+ ? { ...(leaf as Record<string, unknown>), span: annotateSpanFromLineContext((leaf as { span: Span }).span, ctx) }
97
+ : leaf
90
98
  pushCstChild(ctx, annotated, annotated)
91
99
  }
92
100
 
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The objects a parse keeps until it ends — spans, leaves, default nodes, field
3
+ * captures, capture buffers — built by `new` calls instead of object literals.
4
+ *
5
+ * WHY. V8 keeps an allocation site per object literal and decides, per site, whether to
6
+ * allocate straight into old space (pretenuring). The decision is taken during warm-up
7
+ * from where scavenges happen to fall, so identical processes split into a fast and a
8
+ * slow mode, and any change in bundle layout re-rolls it: on Node 26 a pretenured
9
+ * process ran 34–61 mark-compacts per run where a fast one ran 1. A `new` call has no
10
+ * allocation site, so these objects are never pretenured. Each constructor's
11
+ * `prototype` is `Object.prototype`, so what it builds is a plain object: same
12
+ * prototype, same `constructor`, same keys in the same order as the literal it replaces.
13
+ *
14
+ * ONE MODULE. Every constructor defines its own hidden class, so two copies of this
15
+ * module build two maps for the same shape, and every site that reads both turns
16
+ * polymorphic. The build therefore emits it once (`dist/cst/plain.js`) and every public
17
+ * entry imports that file (`scripts/build.mjs`). The emitted engine receives the same
18
+ * functions as factory parameters (`EMITTED_PARAMS`).
19
+ */
20
+ import type { Span } from '../types.ts'
21
+ import type { CstCaptureBuf } from './capture-buffer.ts'
22
+
23
+ export type PlainLeafObject = { _tag: 'leaf'; value: unknown; span: Span }
24
+ export type PlainNodeObject = { _tag: 'node'; type: string; span: Span; state: unknown; children: unknown[] }
25
+ export type PlainFieldObject = { name: string; value: unknown; span: Span }
26
+
27
+ export declare const PlainSpan: new (start: number, end: number) => Span
28
+ export declare const PlainLeaf: new (value: unknown, span: Span) => PlainLeafObject
29
+ export type PlainLineSpanObject = { start: number; end: number; startLine: number; startColumn: number; endLine: number; endColumn: number }
30
+ export declare const PlainLineSpan: new (start: number, end: number, startLine: number, startColumn: number, endLine: number, endColumn: number) => PlainLineSpanObject
31
+ export declare const PlainTaggedNode: new (type: string, tags: readonly string[], span: Span, state: unknown, children: unknown[]) => { _tag: 'node'; type: string; tags: readonly string[]; span: Span; state: unknown; children: unknown[] }
32
+ export declare const PlainTriviaField: new (name: string, value: unknown, span: Span, leading: string, trailing: string) => { name: string; value: unknown; span: Span; leading: string; trailing: string }
33
+ export declare const PlainNode: new (type: string, span: Span, state: unknown, children: unknown[]) => PlainNodeObject
34
+ export declare const PlainField: new (name: string, value: unknown, span: Span) => PlainFieldObject
35
+ export declare const PlainBuf: new (rawOnly: true | undefined, noRaw: true | undefined, rawLen: number) => CstCaptureBuf