parseman 0.20.0 → 0.22.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.
- package/dist/combinators/grammar.d.ts +8 -0
- package/dist/combinators/grammar.d.ts.map +1 -1
- package/dist/combinators/parser.d.ts +12 -0
- package/dist/combinators/parser.d.ts.map +1 -1
- package/dist/compiler/codegen.d.ts +3 -1
- package/dist/compiler/codegen.d.ts.map +1 -1
- package/dist/cst/trivia-kinds.d.ts +16 -0
- package/dist/cst/trivia-kinds.d.ts.map +1 -1
- package/dist/functional/run.d.ts +9 -0
- package/dist/functional/run.d.ts.map +1 -1
- package/dist/index.cjs +51 -11
- package/dist/index.cjs.map +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -11
- package/dist/index.js.map +2 -2
- package/dist/plugin/index.cjs +65 -15
- package/dist/plugin/index.cjs.map +2 -2
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +65 -15
- package/dist/plugin/index.js.map +2 -2
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export { walk, createVisitor } from './cst/walk.ts';
|
|
|
41
41
|
export type { Walkable, WalkVisitor, VisitApi, VisitorHandlers } from './cst/walk.ts';
|
|
42
42
|
export { triviaEntries } from './cst/trivia-entries.ts';
|
|
43
43
|
export type { TriviaEntriesView } from './cst/trivia-entries.ts';
|
|
44
|
+
export { triviaKindMask } from './cst/trivia-kinds.ts';
|
|
44
45
|
export { OffsetIndex, buildOffsetIndex, collectLeafSlots, gapText, lineBreaksIn, blankLinesIn, lineStartWithin, indentWidth, indentMixed, commentsIn, gapIsSignificant, } from './cst/offset-model.ts';
|
|
45
46
|
export type { Slot, Gap } from './cst/offset-model.ts';
|
|
46
47
|
export { relativize, absolutize, absoluteSpanAt, shiftAbsolute, applyEdit, } from './cst/relative-spans.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -1178,13 +1178,25 @@ function tryFastLabeledScan(input, cur, trivia2) {
|
|
|
1178
1178
|
}
|
|
1179
1179
|
function recordTriviaChunks(ctx, chunks) {
|
|
1180
1180
|
const kinds = ctx.triviaKindLabels;
|
|
1181
|
+
const mask = ctx._triviaCaptureMask;
|
|
1181
1182
|
for (const ch of chunks) {
|
|
1182
1183
|
pushTriviaLogEntry(ctx, ch.start, ch.end, kinds ? ch.kindIndex : void 0);
|
|
1183
1184
|
if (ctx.captureTrivia && (ctx._cstBuf !== void 0 || ctx._cstTriviaLog !== void 0)) {
|
|
1184
|
-
|
|
1185
|
+
if (mask === void 0 || kinds === void 0 || (mask & 1 << ch.kindIndex) !== 0) {
|
|
1186
|
+
pushCstTriviaEntry(ctx, ch.start, ch.end, kinds ? ch.kindIndex : void 0);
|
|
1187
|
+
}
|
|
1185
1188
|
}
|
|
1186
1189
|
}
|
|
1187
1190
|
}
|
|
1191
|
+
function triviaKindMask(labels, keep) {
|
|
1192
|
+
if (!labels) return void 0;
|
|
1193
|
+
let mask = 0;
|
|
1194
|
+
for (const name of keep) {
|
|
1195
|
+
const idx = labels.indexOf(name);
|
|
1196
|
+
if (idx >= 0) mask |= 1 << idx;
|
|
1197
|
+
}
|
|
1198
|
+
return mask;
|
|
1199
|
+
}
|
|
1188
1200
|
|
|
1189
1201
|
// src/combinators/trivia-skip.ts
|
|
1190
1202
|
var NOOP_COMMIT = () => {
|
|
@@ -1678,7 +1690,9 @@ function tagRule(r, key) {
|
|
|
1678
1690
|
r._ruleName = key;
|
|
1679
1691
|
if (r._def.tag === "node" && r._def.type === void 0) r._def.type = key;
|
|
1680
1692
|
}
|
|
1681
|
-
function rules(
|
|
1693
|
+
function rules(a, b) {
|
|
1694
|
+
const factory = typeof a === "function" ? a : b;
|
|
1695
|
+
const options = typeof a === "function" ? b : a;
|
|
1682
1696
|
const cache = {};
|
|
1683
1697
|
const proxy = new Proxy(cache, {
|
|
1684
1698
|
get(target, key) {
|
|
@@ -1706,6 +1720,12 @@ function rules(factory) {
|
|
|
1706
1720
|
cache[key] = parser2;
|
|
1707
1721
|
}
|
|
1708
1722
|
}
|
|
1723
|
+
if (options?.trivia !== void 0) {
|
|
1724
|
+
for (const key of Object.keys(definitions)) {
|
|
1725
|
+
const rule = cache[key];
|
|
1726
|
+
if (rule && !rule._meta.isTrivia) rule._meta.grammarTrivia = options.trivia;
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1709
1729
|
for (const key of Object.keys(definitions)) {
|
|
1710
1730
|
markUnusedValues(cache[key]);
|
|
1711
1731
|
}
|
|
@@ -1873,10 +1893,15 @@ function node(typeOrCombinator, combinatorOrBuild, buildOrOpts, maybeOpts) {
|
|
|
1873
1893
|
const saved = beginCstNodeCapture(ctx);
|
|
1874
1894
|
const savedFields = ctx._fields;
|
|
1875
1895
|
ctx._fields = capturesFields ? [] : void 0;
|
|
1896
|
+
const savedMask = ctx._triviaCaptureMask;
|
|
1897
|
+
if (build === void 0 && ctx.build?._parsemanTriviaKinds !== void 0 && def.type !== void 0) {
|
|
1898
|
+
ctx._triviaCaptureMask = ctx.build._parsemanTriviaKinds(def.type);
|
|
1899
|
+
}
|
|
1876
1900
|
if (!capturesTrivia) ctx.captureTrivia = false;
|
|
1877
1901
|
const r = combinator.parse(input, pos, ctx);
|
|
1878
1902
|
const fields = capturesFields ? buildFieldMap(ctx._fields) : void 0;
|
|
1879
1903
|
ctx._fields = savedFields;
|
|
1904
|
+
ctx._triviaCaptureMask = savedMask;
|
|
1880
1905
|
const { children, rawChildren, triviaLog } = endCstNodeCapture(ctx, saved);
|
|
1881
1906
|
if (!r.ok) return r;
|
|
1882
1907
|
const st = clonesState && ctx.state !== void 0 ? Object.assign({}, ctx.state) : void 0;
|
|
@@ -2014,7 +2039,13 @@ function parser(opts, root) {
|
|
|
2014
2039
|
trivia: opts.trivia,
|
|
2015
2040
|
...opts.trivia._meta.triviaKindLabels ? { triviaKindLabels: opts.trivia._meta.triviaKindLabels } : {}
|
|
2016
2041
|
} : {},
|
|
2017
|
-
...opts.captureTrivia || _ctx?.captureTrivia ? { captureTrivia: true } : {}
|
|
2042
|
+
...opts.captureTrivia || _ctx?.captureTrivia ? { captureTrivia: true } : {},
|
|
2043
|
+
// Kind-filter for per-node capture. Resolve against this scope's trivia
|
|
2044
|
+
// labels — this parser's own trivia if it declares one, else the INHERITED
|
|
2045
|
+
// labels (`_ctx.triviaKindLabels`), so captureTriviaKinds still applies when
|
|
2046
|
+
// trivia is inherited rather than re-declared here. No labels → undefined
|
|
2047
|
+
// (capture all).
|
|
2048
|
+
...opts.captureTriviaKinds && !clearTrivia ? { _triviaCaptureMask: triviaKindMask(opts.trivia?._meta.triviaKindLabels ?? _ctx?.triviaKindLabels, opts.captureTriviaKinds) } : {}
|
|
2018
2049
|
};
|
|
2019
2050
|
const result = root.parse(input, pos ?? 0, ctx);
|
|
2020
2051
|
if (trackLines) {
|
|
@@ -2037,8 +2068,10 @@ function parse(combinator, input, opts = {}) {
|
|
|
2037
2068
|
const trackLines = opts.trackLines ?? false;
|
|
2038
2069
|
const _errors = opts.recover ? [] : void 0;
|
|
2039
2070
|
const _probe = opts.recover ? { offset: input.length, best: null } : void 0;
|
|
2071
|
+
const grammarTrivia = combinator._meta.grammarTrivia;
|
|
2040
2072
|
const ctx = {
|
|
2041
2073
|
trackLines,
|
|
2074
|
+
...grammarTrivia !== void 0 ? { trivia: grammarTrivia, ...grammarTrivia._meta.triviaKindLabels ? { triviaKindLabels: grammarTrivia._meta.triviaKindLabels } : {} } : {},
|
|
2042
2075
|
..._errors !== void 0 ? { _errors } : {},
|
|
2043
2076
|
..._probe !== void 0 ? { _probe } : {}
|
|
2044
2077
|
};
|
|
@@ -3187,7 +3220,7 @@ function scanBranchLabeled(shape, kindIndex, mint) {
|
|
|
3187
3220
|
` if (${m.end} > _e) {`,
|
|
3188
3221
|
` if (_cap) {`,
|
|
3189
3222
|
` if (_ctx._triviaLog !== undefined) _ctx._triviaLog.push(_e, ${m.end}, ${kindIndex})`,
|
|
3190
|
-
` if (_ctx._cstTriviaLog !== undefined) _ctx._cstTriviaLog.push(_e, ${m.end}, _ctx._cstRawChildren ? _ctx._cstRawChildren.length : 0, ${kindIndex})`,
|
|
3223
|
+
` if (_ctx._cstTriviaLog !== undefined && (_ctx._triviaCaptureMask === undefined || (_ctx._triviaCaptureMask & ${1 << kindIndex}))) _ctx._cstTriviaLog.push(_e, ${m.end}, _ctx._cstRawChildren ? _ctx._cstRawChildren.length : 0, ${kindIndex})`,
|
|
3191
3224
|
` }`,
|
|
3192
3225
|
` _e = ${m.end}`,
|
|
3193
3226
|
` continue`,
|
|
@@ -3303,7 +3336,7 @@ function buildLabeledRegexTriviaFnDecl(fnName, spec, reNames) {
|
|
|
3303
3336
|
` const _ce = _e + _m${i}[0].length`,
|
|
3304
3337
|
` if (_cap) {`,
|
|
3305
3338
|
` if (_ctx._triviaLog !== undefined) _ctx._triviaLog.push(_e, _ce, ${k})`,
|
|
3306
|
-
` if (_ctx._cstTriviaLog !== undefined) _ctx._cstTriviaLog.push(_e, _ce, _ctx._cstRawChildren ? _ctx._cstRawChildren.length : 0, ${k})`,
|
|
3339
|
+
` if (_ctx._cstTriviaLog !== undefined && (_ctx._triviaCaptureMask === undefined || (_ctx._triviaCaptureMask & ${1 << k}))) _ctx._cstTriviaLog.push(_e, _ce, _ctx._cstRawChildren ? _ctx._cstRawChildren.length : 0, ${k})`,
|
|
3307
3340
|
` }`,
|
|
3308
3341
|
` _e = _ce`,
|
|
3309
3342
|
` _matched = true`,
|
|
@@ -3341,7 +3374,7 @@ function buildLabeledRuntimeTriviaFnDecl(fnName, spec, rpStartIndex) {
|
|
|
3341
3374
|
` const _ce = _r${i}.span.end`,
|
|
3342
3375
|
` if (_cap) {`,
|
|
3343
3376
|
` if (_ctx._triviaLog !== undefined) _ctx._triviaLog.push(_e, _ce, ${k})`,
|
|
3344
|
-
` if (_ctx._cstTriviaLog !== undefined) _ctx._cstTriviaLog.push(_e, _ce, _ctx._cstRawChildren ? _ctx._cstRawChildren.length : 0, ${k})`,
|
|
3377
|
+
` if (_ctx._cstTriviaLog !== undefined && (_ctx._triviaCaptureMask === undefined || (_ctx._triviaCaptureMask & ${1 << k}))) _ctx._cstTriviaLog.push(_e, _ce, _ctx._cstRawChildren ? _ctx._cstRawChildren.length : 0, ${k})`,
|
|
3345
3378
|
` }`,
|
|
3346
3379
|
` _e = _ce`,
|
|
3347
3380
|
` _matched = true`,
|
|
@@ -4731,6 +4764,7 @@ function emitNode(def, ctx, pos) {
|
|
|
4731
4764
|
const tlV = capturesTrivia || structural ? v(ctx, "_tl") : "_EMPTY_TL";
|
|
4732
4765
|
if (!capturesTrivia) ctx.needsEmptyTl = true;
|
|
4733
4766
|
const sc = v(ctx, "_sc"), sl = v(ctx, "_sl"), sr = v(ctx, "_sr"), st = v(ctx, "_st"), stl = v(ctx, "_stl");
|
|
4767
|
+
const smk = structural ? v(ctx, "_smk") : null;
|
|
4734
4768
|
if (structural) ctx.needsHostReads = true;
|
|
4735
4769
|
const hostTriviaGate = `_ctx.build !== undefined && (_ctx.build._parsemanCaptureTrivia !== undefined ? _ctx.build._parsemanCaptureTrivia(${JSON.stringify(def.type)}) : (_ctx._pmCapTL ??= _hostReads(_ctx.build, 5)))`;
|
|
4736
4770
|
const allocStmt = structural ? `${i}const ${capTLv} = ${hostTriviaGate}, ${capSTv} = _ctx._pmCapST ??= (_ctx.build === undefined || _hostReads(_ctx.build, 6))${capFv ? `, ${capFv} = _ctx.build !== undefined && _hostReads(_ctx.build, 2)` : ""}
|
|
@@ -4742,15 +4776,15 @@ ${i}const ${chV} = [], ${rawV} = [], ${tlV} = ${capTLv} ? [] : _EMPTY_TL` : capt
|
|
|
4742
4776
|
const fObj = hasFields ? v(ctx, "_fields") : "undefined";
|
|
4743
4777
|
const stmts = [
|
|
4744
4778
|
allocStmt,
|
|
4745
|
-
`${i}const ${sc} = _ctx._cstChildren, ${sl} = _ctx._cstLeaves, ${sr} = _ctx._cstRawChildren, ${st} = _ctx.captureTrivia, ${stl} = _ctx._cstTriviaLog${sf ? `, ${sf} = _ctx._fields` : ""}`,
|
|
4746
|
-
`${i}_ctx._cstChildren = ${chV}; _ctx._cstLeaves = ${chV}; _ctx._cstRawChildren = ${rawV}; _ctx.captureTrivia = true; _ctx._cstTriviaLog = ${innerTl}${sf ? `; _ctx._fields = ${fieldsOn} ? [] : undefined` : ""}`
|
|
4779
|
+
`${i}const ${sc} = _ctx._cstChildren, ${sl} = _ctx._cstLeaves, ${sr} = _ctx._cstRawChildren, ${st} = _ctx.captureTrivia, ${stl} = _ctx._cstTriviaLog${smk ? `, ${smk} = _ctx._triviaCaptureMask` : ""}${sf ? `, ${sf} = _ctx._fields` : ""}`,
|
|
4780
|
+
`${i}_ctx._cstChildren = ${chV}; _ctx._cstLeaves = ${chV}; _ctx._cstRawChildren = ${rawV}; _ctx.captureTrivia = true; _ctx._cstTriviaLog = ${innerTl}${smk ? `; _ctx._triviaCaptureMask = ${capTLv} && _ctx.build._parsemanTriviaKinds !== undefined ? _ctx.build._parsemanTriviaKinds(${JSON.stringify(def.type)}) : ${smk}` : ""}${sf ? `; _ctx._fields = ${fieldsOn} ? [] : undefined` : ""}`
|
|
4747
4781
|
];
|
|
4748
4782
|
const { stmts: innerStmts, okVar, endVar } = emitFallible(def.parser, ctx, pos);
|
|
4749
4783
|
stmts.push(...innerStmts);
|
|
4750
4784
|
if (sf && fArr) {
|
|
4751
4785
|
stmts.push(`${i}const ${fArr} = _ctx._fields`);
|
|
4752
4786
|
}
|
|
4753
|
-
stmts.push(`${i}_ctx._cstChildren = ${sc}; _ctx._cstLeaves = ${sl}; _ctx._cstRawChildren = ${sr}; _ctx.captureTrivia = ${st}; _ctx._cstTriviaLog = ${stl}${sf ? `; _ctx._fields = ${sf}` : ""}`);
|
|
4787
|
+
stmts.push(`${i}_ctx._cstChildren = ${sc}; _ctx._cstLeaves = ${sl}; _ctx._cstRawChildren = ${sr}; _ctx.captureTrivia = ${st}; _ctx._cstTriviaLog = ${stl}${smk ? `; _ctx._triviaCaptureMask = ${smk}` : ""}${sf ? `; _ctx._fields = ${sf}` : ""}`);
|
|
4754
4788
|
stmts.push(...emitIfFail(ctx, `!${okVar}`, propagateFailBody(ctx)));
|
|
4755
4789
|
let stV = "undefined";
|
|
4756
4790
|
if (structural) {
|
|
@@ -5303,6 +5337,7 @@ function ruleDependencies(ruleMap) {
|
|
|
5303
5337
|
}
|
|
5304
5338
|
function compile(combinator, mapFnSources) {
|
|
5305
5339
|
markUnusedValues(combinator);
|
|
5340
|
+
const grammarTrivia = combinator._meta.grammarTrivia;
|
|
5306
5341
|
const ctx = {
|
|
5307
5342
|
vars: 0,
|
|
5308
5343
|
indent: 1,
|
|
@@ -5321,7 +5356,8 @@ function compile(combinator, mapFnSources) {
|
|
|
5321
5356
|
triviaFnNames: /* @__PURE__ */ new Map(),
|
|
5322
5357
|
namedFnDecls: [],
|
|
5323
5358
|
capturing: hasNodeDef(combinator),
|
|
5324
|
-
lazyUsage: analyzeLazyUsage(combinator)
|
|
5359
|
+
lazyUsage: analyzeLazyUsage(combinator),
|
|
5360
|
+
...grammarTrivia ? { activeTrivia: grammarTrivia, triviaKindLabels: grammarTrivia._meta.triviaKindLabels } : {}
|
|
5325
5361
|
};
|
|
5326
5362
|
const r = emit(combinator, ctx, "_pos");
|
|
5327
5363
|
const namedPrelude = ctx.namedFnDecls.length > 0 ? [...namedFnPrelude(), ""] : [];
|
|
@@ -6179,12 +6215,15 @@ function run(entry, input, options = {}) {
|
|
|
6179
6215
|
}
|
|
6180
6216
|
const triviaLog = [];
|
|
6181
6217
|
const errors = [];
|
|
6218
|
+
const grammarTrivia = typeof entry !== "function" ? entry._meta.grammarTrivia : void 0;
|
|
6182
6219
|
const ctx = {
|
|
6183
6220
|
trackLines: false,
|
|
6184
6221
|
_triviaLog: triviaLog,
|
|
6185
6222
|
_errors: errors,
|
|
6186
6223
|
build: options.build,
|
|
6187
|
-
state: options.state
|
|
6224
|
+
state: options.state,
|
|
6225
|
+
...grammarTrivia !== void 0 ? { trivia: grammarTrivia, ...grammarTrivia._meta.triviaKindLabels ? { triviaKindLabels: grammarTrivia._meta.triviaKindLabels } : {} } : {},
|
|
6226
|
+
...options.triviaCaptureMask !== void 0 ? { _triviaCaptureMask: options.triviaCaptureMask } : {}
|
|
6188
6227
|
};
|
|
6189
6228
|
const r = invoke(entry, input, 0, ctx);
|
|
6190
6229
|
let unconsumedFrom = null;
|
|
@@ -6661,6 +6700,7 @@ export {
|
|
|
6661
6700
|
transform,
|
|
6662
6701
|
trivia,
|
|
6663
6702
|
triviaEntries,
|
|
6703
|
+
triviaKindMask,
|
|
6664
6704
|
walk,
|
|
6665
6705
|
withCtx,
|
|
6666
6706
|
word
|