parseman 0.51.1 → 0.52.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/analysis/commitment.d.ts.map +1 -1
- package/dist/analysis/diagnostics.js +101 -35
- package/dist/analysis/diagnostics.js.map +1 -1
- package/dist/cli/index.js +103 -37
- package/dist/cli/index.js.map +1 -1
- package/dist/combinators/attempt.d.ts +11 -1
- package/dist/combinators/attempt.d.ts.map +1 -1
- package/dist/combinators/map.d.ts.map +1 -1
- package/dist/combinators/node.d.ts +6 -2
- package/dist/combinators/node.d.ts.map +1 -1
- package/dist/combinators/token.d.ts +8 -8
- package/dist/combinators/token.d.ts.map +1 -1
- package/dist/compiler/token-capability.js +4 -0
- package/dist/compiler/token-capability.js.map +1 -1
- package/dist/coverage.d.ts.map +1 -1
- package/dist/cst/trivia-kinds.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +107 -40
- package/dist/index.js.map +1 -1
- package/dist/plugin/evaluator.d.ts.map +1 -1
- package/dist/plugin/index.js +107 -41
- package/dist/plugin/index.js.map +1 -1
- package/dist/spec/index.js +55 -10
- package/dist/spec/index.js.map +1 -1
- package/dist/table/assemble.d.ts.map +1 -1
- package/dist/table/emit-assembly.d.ts.map +1 -1
- package/dist/table/encode-baseline.d.ts.map +1 -1
- package/dist/table/exec-baseline.d.ts.map +1 -1
- package/dist/table/exec.d.ts.map +1 -1
- package/dist/table/index.js +404 -371
- package/dist/table/index.js.map +2 -2
- package/dist/table/ops.d.ts +9 -5
- package/dist/table/ops.d.ts.map +1 -1
- package/dist/table/site-labels.d.ts.map +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/analysis/commitment.ts +3 -1
- package/src/analysis/duplication.ts +1 -1
- package/src/analysis/rebuild.ts +3 -3
- package/src/combinators/attempt.ts +26 -3
- package/src/combinators/first-set.ts +5 -1
- package/src/combinators/map.ts +5 -1
- package/src/combinators/node.ts +12 -3
- package/src/combinators/token.ts +46 -3
- package/src/compiler/ir-serialize.ts +5 -5
- package/src/coverage.ts +3 -4
- package/src/cst/trivia-kinds.ts +6 -0
- package/src/index.ts +2 -1
- package/src/plugin/evaluator.ts +8 -5
- package/src/table/assemble.ts +30 -11
- package/src/table/child-slots.ts +2 -2
- package/src/table/emit-assembly.ts +13 -6
- package/src/table/encode-baseline.ts +8 -3
- package/src/table/encode.ts +16 -16
- package/src/table/exec-baseline.ts +30 -4
- package/src/table/exec.ts +14 -5
- package/src/table/ops.ts +10 -6
- package/src/table/scalar-terminal.ts +5 -5
- package/src/table/site-labels.ts +5 -3
- package/src/types.ts +9 -2
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/plugin/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EACV,UAAU,EAAE,IAAI,EAMjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAmG5D,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,EAAE,WAAW,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI,CAGrG;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAA;AAEjG,uGAAuG;AACvG,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAE9E;AAWD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AACD,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAM3C,KAAK,gBAAgB,GAAG;IAAE,GAAG,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAA;AAC1F,KAAK,gBAAgB,GAAG;IAAE,GAAG,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAA;AAuHxE;;;;;;;;;;;;;;;yCAeyC;AACzC,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAM/F;
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/plugin/evaluator.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -265,6 +265,10 @@ function firstSetBody(p, seen, resolve3, activeTrivia) {
|
|
|
265
265
|
case "node":
|
|
266
266
|
case "sepBy":
|
|
267
267
|
case "expect":
|
|
268
|
+
// A transaction accepts exactly what its inner accepts. Its own `_meta` is
|
|
269
|
+
// the inner's construction-time set, which reads `any` when the inner opens
|
|
270
|
+
// with a rule reference — resolve through it like any other wrapper.
|
|
271
|
+
case "attempt":
|
|
268
272
|
return fs3(d.parser);
|
|
269
273
|
case "grammar":
|
|
270
274
|
return firstSetOf(
|
|
@@ -1404,6 +1408,10 @@ function peelLabel(p) {
|
|
|
1404
1408
|
return null;
|
|
1405
1409
|
}
|
|
1406
1410
|
function analyzeLabeledTrivia(trivia2) {
|
|
1411
|
+
if (trivia2._def.tag === "trivia") {
|
|
1412
|
+
const own = trivia2._meta.labeledTriviaSpec;
|
|
1413
|
+
if (own !== void 0) return own;
|
|
1414
|
+
}
|
|
1407
1415
|
if (trivia2 === labeledTrivia0) return labeledSpec0;
|
|
1408
1416
|
if (trivia2 === labeledTrivia1) return labeledSpec1;
|
|
1409
1417
|
if (trivia2 === labeledTrivia2) return labeledSpec2;
|
|
@@ -4061,13 +4069,24 @@ function dispatch(selector, ...arms) {
|
|
|
4061
4069
|
}
|
|
4062
4070
|
|
|
4063
4071
|
// src/combinators/attempt.ts
|
|
4064
|
-
function
|
|
4072
|
+
function containOption(options) {
|
|
4073
|
+
if (options === void 0) return false;
|
|
4074
|
+
for (const key of Object.keys(options)) {
|
|
4075
|
+
if (key !== "contain") throw new TypeError(`attempt(): unknown option ${JSON.stringify(key)}`);
|
|
4076
|
+
}
|
|
4077
|
+
if (options.contain !== void 0 && typeof options.contain !== "boolean") {
|
|
4078
|
+
throw new TypeError("attempt(): `contain` must be a boolean");
|
|
4079
|
+
}
|
|
4080
|
+
return options.contain === true;
|
|
4081
|
+
}
|
|
4082
|
+
function attempt(parser2, options) {
|
|
4083
|
+
const contain = containOption(options);
|
|
4065
4084
|
const guardable = parser2._meta.firstSet.kind !== "any" && !matchesEmpty(parser2);
|
|
4066
4085
|
let failExpected;
|
|
4067
4086
|
return {
|
|
4068
4087
|
_tag: "attempt",
|
|
4069
4088
|
_meta: parser2._meta,
|
|
4070
|
-
_def: { tag: "attempt", parser: parser2 },
|
|
4089
|
+
_def: contain ? { tag: "attempt", parser: parser2, contain: true } : { tag: "attempt", parser: parser2 },
|
|
4071
4090
|
parse(input, pos, ctx) {
|
|
4072
4091
|
if (guardable && ctx._probe === void 0 && !ctx._tolerant && !startsFirstSet(parser2, input, pos)) {
|
|
4073
4092
|
if (failExpected === void 0) {
|
|
@@ -4084,7 +4103,7 @@ function attempt(parser2) {
|
|
|
4084
4103
|
rollbackCstCapture(ctx, mark);
|
|
4085
4104
|
if (log !== void 0 && ctx._triviaLog && ctx._triviaLog.length !== log) ctx._triviaLog.length = log;
|
|
4086
4105
|
if (rootLog !== void 0 && ctx._rootTriviaLog && ctx._rootTriviaLog.length !== rootLog) ctx._rootTriviaLog.length = rootLog;
|
|
4087
|
-
if (result.committed) return result;
|
|
4106
|
+
if (result.committed && !contain) return result;
|
|
4088
4107
|
return { ok: false, expected: result.expected, span: { start: pos, end: pos } };
|
|
4089
4108
|
}
|
|
4090
4109
|
};
|
|
@@ -4939,7 +4958,7 @@ function node(typeOrCombinator, combinatorOrBuild, buildOrOpts, maybeOpts) {
|
|
|
4939
4958
|
throw new Error("node() options cannot combine project with unwrap or collapse");
|
|
4940
4959
|
}
|
|
4941
4960
|
const def = unwrap || collapse || project !== void 0 || captureTrivia || trailingTrivia || buildArity !== void 0 || tags !== void 0 && tags.length > 0 ? { ...baseDef, ...unwrap ? { unwrap: true } : {}, ...collapse ? { collapse: true } : {}, ...project !== void 0 ? { project } : {}, ...captureTrivia ? { captureTrivia: true } : {}, ...trailingTrivia ? { trailingTrivia: true } : {}, ...buildArity !== void 0 ? { buildArity } : {}, ...tags !== void 0 && tags.length > 0 ? { tags } : {} } : baseDef;
|
|
4942
|
-
const capturesTrivia = captureTrivia ||
|
|
4961
|
+
const capturesTrivia = captureTrivia || (build ? buildReadsTrivia(def) : project === void 0);
|
|
4943
4962
|
const clonesState = build ? buildReadsState(def) : project === void 0;
|
|
4944
4963
|
const hasOwnFields = parserHasOwnFields(combinator);
|
|
4945
4964
|
const capturesFields = hasOwnFields && (build ? buildReadsFields(def) : project === void 0);
|
|
@@ -5053,13 +5072,17 @@ function transform(combinator, fn) {
|
|
|
5053
5072
|
};
|
|
5054
5073
|
}
|
|
5055
5074
|
function trivia(combinator) {
|
|
5056
|
-
const
|
|
5075
|
+
const labeled = analyzeLabeledTrivia(combinator);
|
|
5076
|
+
const kindLabels = labeled?.labels;
|
|
5057
5077
|
return {
|
|
5058
5078
|
_tag: combinator._tag,
|
|
5059
5079
|
_meta: {
|
|
5060
5080
|
...combinator._meta,
|
|
5061
5081
|
isTrivia: true,
|
|
5062
5082
|
triviaScanner: fastTriviaScanner(combinator),
|
|
5083
|
+
// Every labeled scan of this trivia reads its spec; the module's four-slot
|
|
5084
|
+
// memo alone thrashes on a grammar with more than four trivia tables.
|
|
5085
|
+
labeledTriviaSpec: labeled,
|
|
5063
5086
|
...kindLabels ? { triviaKindLabels: kindLabels } : {}
|
|
5064
5087
|
},
|
|
5065
5088
|
_def: { tag: "trivia", parser: combinator },
|
|
@@ -5113,6 +5136,12 @@ function field(name, combinator) {
|
|
|
5113
5136
|
}
|
|
5114
5137
|
|
|
5115
5138
|
// src/combinators/token.ts
|
|
5139
|
+
function semanticLeafValue(_ctx, _input, _start, _end, value) {
|
|
5140
|
+
return value;
|
|
5141
|
+
}
|
|
5142
|
+
function sourceLeafValue(ctx, input, start, end, value) {
|
|
5143
|
+
return cstOutputHost(ctx.build) ? input.slice(start, end) : value;
|
|
5144
|
+
}
|
|
5116
5145
|
function token(root) {
|
|
5117
5146
|
const meta = {
|
|
5118
5147
|
firstSet: root._meta.firstSet,
|
|
@@ -5165,7 +5194,8 @@ function token(root) {
|
|
|
5165
5194
|
}
|
|
5166
5195
|
};
|
|
5167
5196
|
}
|
|
5168
|
-
function
|
|
5197
|
+
function makeLeaf(root, fn, sourceCstValue) {
|
|
5198
|
+
const cstValue = sourceCstValue ? sourceLeafValue : semanticLeafValue;
|
|
5169
5199
|
const meta = {
|
|
5170
5200
|
firstSet: root._meta.firstSet,
|
|
5171
5201
|
canMatchNewline: root._meta.canMatchNewline,
|
|
@@ -5174,7 +5204,12 @@ function leaf(root, fn) {
|
|
|
5174
5204
|
return {
|
|
5175
5205
|
_tag: "leaf",
|
|
5176
5206
|
_meta: meta,
|
|
5177
|
-
_def: {
|
|
5207
|
+
_def: {
|
|
5208
|
+
tag: "leaf",
|
|
5209
|
+
parser: root,
|
|
5210
|
+
fn,
|
|
5211
|
+
...sourceCstValue ? { cstValue: "source" } : {}
|
|
5212
|
+
},
|
|
5178
5213
|
parse(input, pos, ctx) {
|
|
5179
5214
|
const savedBuf = ctx._cstBuf;
|
|
5180
5215
|
const savedChildren = ctx._cstChildren;
|
|
@@ -5202,11 +5237,21 @@ function leaf(root, fn) {
|
|
|
5202
5237
|
}
|
|
5203
5238
|
if (!result.ok) return result;
|
|
5204
5239
|
const value = fn(result.value, result.span);
|
|
5205
|
-
if (wasCapturing) pushCstLeaf(ctx, {
|
|
5240
|
+
if (wasCapturing) pushCstLeaf(ctx, {
|
|
5241
|
+
_tag: "leaf",
|
|
5242
|
+
value: cstValue(ctx, input, pos, result.span.end, value),
|
|
5243
|
+
span: result.span
|
|
5244
|
+
});
|
|
5206
5245
|
return { ok: true, value, span: result.span };
|
|
5207
5246
|
}
|
|
5208
5247
|
};
|
|
5209
5248
|
}
|
|
5249
|
+
function leaf(root, fn) {
|
|
5250
|
+
return makeLeaf(root, fn, false);
|
|
5251
|
+
}
|
|
5252
|
+
function sourceLeaf(root, fn) {
|
|
5253
|
+
return makeLeaf(root, fn, true);
|
|
5254
|
+
}
|
|
5210
5255
|
|
|
5211
5256
|
// src/analysis/gating.ts
|
|
5212
5257
|
function childrenOf2(d) {
|
|
@@ -5570,10 +5615,12 @@ function mayCommitFailure(p, seen = /* @__PURE__ */ new Set(), resolve3) {
|
|
|
5570
5615
|
case "choice":
|
|
5571
5616
|
case "sequence":
|
|
5572
5617
|
return d.parsers.some((x) => mayCommitFailure(x, seen, resolve3));
|
|
5618
|
+
// A contained transaction reports every failure uncommitted.
|
|
5619
|
+
case "attempt":
|
|
5620
|
+
return d.contain !== true && mayCommitFailure(d.parser, seen, resolve3);
|
|
5573
5621
|
case "many":
|
|
5574
5622
|
case "oneOrMore":
|
|
5575
5623
|
case "optional":
|
|
5576
|
-
case "attempt":
|
|
5577
5624
|
case "transform":
|
|
5578
5625
|
case "label":
|
|
5579
5626
|
case "field":
|
|
@@ -5698,6 +5745,7 @@ var OP_COV = 40;
|
|
|
5698
5745
|
var OP_SCOPE_PLAIN = 41;
|
|
5699
5746
|
var OP_LEX_BODY = 42;
|
|
5700
5747
|
var OP_LEX_PROGRAM = 43;
|
|
5748
|
+
var OP_SOURCE_LEAF = 44;
|
|
5701
5749
|
var OP_DISPATCH = 25;
|
|
5702
5750
|
var OP_ROUTED = 26;
|
|
5703
5751
|
var OP_NAMES = {
|
|
@@ -5716,6 +5764,7 @@ var OP_NAMES = {
|
|
|
5716
5764
|
[OP_NOT]: "NOT",
|
|
5717
5765
|
[OP_PEEK]: "PEEK",
|
|
5718
5766
|
[OP_LEAF]: "LEAF",
|
|
5767
|
+
[OP_SOURCE_LEAF]: "SOURCE_LEAF",
|
|
5719
5768
|
[OP_EMPTY]: "EMPTY",
|
|
5720
5769
|
[OP_LIT_TRACK]: "LIT_TRACK",
|
|
5721
5770
|
[OP_RX_TRACK]: "RX_TRACK",
|
|
@@ -7668,7 +7717,7 @@ var Encoder = class {
|
|
|
7668
7717
|
}
|
|
7669
7718
|
case "leaf": {
|
|
7670
7719
|
const child = this.node(d.parser).ip;
|
|
7671
|
-
return this.emit(OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
|
|
7720
|
+
return this.emit(d.cstValue === "source" ? OP_SOURCE_LEAF : OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
|
|
7672
7721
|
}
|
|
7673
7722
|
case "node": {
|
|
7674
7723
|
if (d.type === void 0) missingInferredType();
|
|
@@ -7680,7 +7729,7 @@ var Encoder = class {
|
|
|
7680
7729
|
const derivedState = d.build !== void 0 ? buildReadsState(d) : noBuildCaptures;
|
|
7681
7730
|
const derivedFields = d.build !== void 0 ? buildReadsFields(d) : noBuildCaptures;
|
|
7682
7731
|
const wantsFields = parserHasOwnFields(d.parser) && (cstOut || derivedFields);
|
|
7683
|
-
const flags = (cstOut || d.captureTrivia === true ||
|
|
7732
|
+
const flags = (cstOut || d.captureTrivia === true || derivedTrivia ? 4 : 0) | (!cstOut && omitsRaw ? 2 : 0) | (cstOut || derivedState ? 8 : 0) | (wantsFields ? 16 : 0) | (d.collapse === true ? 32 : 0) | (d.unwrap === true ? 64 : 0) | (d.trailingTrivia === true ? 128 : 0) | (d.captureTrivia === true ? 1 : 0);
|
|
7684
7733
|
const body = this.emit(
|
|
7685
7734
|
this.track ? OP_NODE_TRACK : OP_NODE,
|
|
7686
7735
|
d.build === void 0 ? -1 : this.fn(d.build, d.buildSrc ?? null),
|
|
@@ -7806,7 +7855,7 @@ var Encoder = class {
|
|
|
7806
7855
|
// A TRANSACTION IS A ROW. See `OP_ATTEMPT` for why the transparent
|
|
7807
7856
|
// lowering was correct only for a choice arm.
|
|
7808
7857
|
case "attempt": {
|
|
7809
|
-
const inner = this.emit(OP_ATTEMPT, this.node(d.parser).ip);
|
|
7858
|
+
const inner = this.emit(OP_ATTEMPT, this.node(d.parser).ip, d.contain === true ? 1 : 0);
|
|
7810
7859
|
if (!this.failureNeedsRollback(d.parser, void 0)) this.failureRollbackCleanSites.add(inner);
|
|
7811
7860
|
const fs3 = d.parser._def.tag === "lazy" ? firstSetOf(d.parser, /* @__PURE__ */ new Set(), this.refResolver(), this.activeTrivia) : d.parser._meta.firstSet;
|
|
7812
7861
|
if (fs3.kind === "any" || matchesEmpty(d.parser)) return inner;
|
|
@@ -7893,6 +7942,7 @@ var Encoder = class {
|
|
|
7893
7942
|
case OP_WITHCTX:
|
|
7894
7943
|
case OP_XFORM:
|
|
7895
7944
|
case OP_LEAF:
|
|
7945
|
+
case OP_SOURCE_LEAF:
|
|
7896
7946
|
case OP_NODE:
|
|
7897
7947
|
case OP_NODE_TRACK:
|
|
7898
7948
|
return [ip + 2];
|
|
@@ -9102,6 +9152,7 @@ function childSlots(code, ip, out) {
|
|
|
9102
9152
|
case OP_NODE_TRACK:
|
|
9103
9153
|
case OP_FIELD:
|
|
9104
9154
|
case OP_LEAF:
|
|
9155
|
+
case OP_SOURCE_LEAF:
|
|
9105
9156
|
case OP_ARMGATE:
|
|
9106
9157
|
out.push(code[ip + 2]);
|
|
9107
9158
|
return true;
|
|
@@ -9197,7 +9248,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
9197
9248
|
}
|
|
9198
9249
|
if (op === OP_NODE || op === OP_NODE_TRACK) {
|
|
9199
9250
|
const flags = code[ip + 3];
|
|
9200
|
-
const directChildren = !hostCst && op === OP_NODE && code[ip + 1] >= 0 && code[ip + 4] < 0 && (flags === 2 || flags === 18 || flags === 34);
|
|
9251
|
+
const directChildren = !hostCst && op === OP_NODE && code[ip + 1] >= 0 && code[ip + 4] < 0 && ((flags & ~128) === 2 || flags === 18 || flags === 34);
|
|
9201
9252
|
if (directChildren) {
|
|
9202
9253
|
return { tri: at.tri, buf: false, raw: RAW_UNKNOWN, cap: CAP_OFF };
|
|
9203
9254
|
}
|
|
@@ -9210,7 +9261,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
9210
9261
|
if (at.tri === TRI_NONE && !at.buf) return at;
|
|
9211
9262
|
return { tri: TRI_NONE, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
|
|
9212
9263
|
}
|
|
9213
|
-
if (op === OP_LEAF) {
|
|
9264
|
+
if (op === OP_LEAF || op === OP_SOURCE_LEAF) {
|
|
9214
9265
|
if (!at.buf) return at;
|
|
9215
9266
|
return { tri: at.tri, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
|
|
9216
9267
|
}
|
|
@@ -9297,7 +9348,7 @@ function leadingScalarTerminal(code, ip, minDepth = 2, throughAttempt = true, th
|
|
|
9297
9348
|
depth++;
|
|
9298
9349
|
continue;
|
|
9299
9350
|
}
|
|
9300
|
-
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) {
|
|
9351
|
+
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)) {
|
|
9301
9352
|
at = code[at + 2];
|
|
9302
9353
|
depth++;
|
|
9303
9354
|
continue;
|
|
@@ -9330,7 +9381,7 @@ function leadingScalarSequence(code, ip) {
|
|
|
9330
9381
|
at2 = code[at2 + 1];
|
|
9331
9382
|
continue;
|
|
9332
9383
|
}
|
|
9333
|
-
if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9384
|
+
if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9334
9385
|
at2 = code[at2 + 2];
|
|
9335
9386
|
continue;
|
|
9336
9387
|
}
|
|
@@ -9363,7 +9414,7 @@ function leadingScalarSequence(code, ip) {
|
|
|
9363
9414
|
at = code[at + 2];
|
|
9364
9415
|
continue;
|
|
9365
9416
|
}
|
|
9366
|
-
if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9417
|
+
if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9367
9418
|
at = code[at + 2];
|
|
9368
9419
|
continue;
|
|
9369
9420
|
}
|
|
@@ -9393,7 +9444,7 @@ function leadingLiteralFamily(code, constants, ip, minDepth = 2, limit = 4) {
|
|
|
9393
9444
|
if (op === OP_RULE || op === OP_LABEL || op === OP_TOKEN || op === OP_ATTEMPT || op === OP_PEEK) {
|
|
9394
9445
|
return walk(code[at + 1], depth + 1);
|
|
9395
9446
|
}
|
|
9396
|
-
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) {
|
|
9447
|
+
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)) {
|
|
9397
9448
|
return walk(code[at + 2], depth + 1);
|
|
9398
9449
|
}
|
|
9399
9450
|
if (op === OP_SEQ || op === OP_SEQV) {
|
|
@@ -10279,8 +10330,10 @@ ${rootCap ? "ctx._rootTriviaCapture=sR\n" : ""}return v
|
|
|
10279
10330
|
}
|
|
10280
10331
|
/* ── boundaries ──────────────────────────────────────────────────────── */
|
|
10281
10332
|
case OP_TOKEN:
|
|
10282
|
-
case OP_LEAF:
|
|
10333
|
+
case OP_LEAF:
|
|
10334
|
+
case OP_SOURCE_LEAF: {
|
|
10283
10335
|
const isToken = op === OP_TOKEN;
|
|
10336
|
+
const capturesSource = isToken || op === OP_SOURCE_LEAF && hostCst;
|
|
10284
10337
|
const fn = isToken ? void 0 : fnRef(code[ip + 1]);
|
|
10285
10338
|
const child = link(isToken ? code[ip + 1] : code[ip + 2]);
|
|
10286
10339
|
const wasCap = L.buf ? "true" : "(ctx._cstBuf!==undefined||ctx._cstLeaves!==undefined)";
|
|
@@ -10313,7 +10366,7 @@ ctx._triviaLog=sOtl
|
|
|
10313
10366
|
if(v===FAIL)return FAIL
|
|
10314
10367
|
const e=EC.e
|
|
10315
10368
|
const out=${isToken ? "input.slice(pos,e)" : `${fn}(v,{start:pos,end:e})`}
|
|
10316
|
-
if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:out,span:{start:pos,end:e}})
|
|
10369
|
+
if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:${capturesSource ? "input.slice(pos,e)" : "out"},span:{start:pos,end:e}})
|
|
10317
10370
|
EC.e=e
|
|
10318
10371
|
return out
|
|
10319
10372
|
}`;
|
|
@@ -10399,7 +10452,7 @@ ${clean ? "" : emitMark(p, L.buf, L.raw, sinks)}
|
|
|
10399
10452
|
const v=${child}(input,pos,ctx)
|
|
10400
10453
|
if(v!==FAIL)return v
|
|
10401
10454
|
${clean ? "" : emitRollback(p, L.buf, L.raw, sinks)}
|
|
10402
|
-
if(ctx._fc===true)return FAIL
|
|
10455
|
+
${code[ip + 2] === 1 ? "ctx._fc=false" : "if(ctx._fc===true)return FAIL"}
|
|
10403
10456
|
ctx._fe=pos
|
|
10404
10457
|
return FAIL
|
|
10405
10458
|
}`;
|
|
@@ -10988,7 +11041,8 @@ return nd
|
|
|
10988
11041
|
const unwrap = (flags & 64) !== 0;
|
|
10989
11042
|
const trailingTrivia = (flags & 128) !== 0;
|
|
10990
11043
|
const build = buildIdx >= 0 ? fnRef(buildIdx) : void 0;
|
|
10991
|
-
|
|
11044
|
+
const leanFlags = flags & ~128;
|
|
11045
|
+
if (!hostCst && !tracked && build !== void 0 && proj < 0 && (leanFlags === 2 || (flags === 18 || flags === 34))) {
|
|
10992
11046
|
const fields = flags === 18;
|
|
10993
11047
|
const collapseChildren = flags === 34;
|
|
10994
11048
|
const publish = L.buf && L.raw === RAW_OMIT ? "_pushNodeNoRawBuf(ctx,nd)" : L.buf && L.raw === RAW_CAPTURE ? `if(sBuf!==undefined){
|
|
@@ -11033,7 +11087,8 @@ ctx._cstTriviaLog=undefined
|
|
|
11033
11087
|
ctx.captureTrivia=false
|
|
11034
11088
|
ctx._fields=${fields ? "[]" : "undefined"}
|
|
11035
11089
|
const v=${child}(input,pos,ctx)
|
|
11036
|
-
|
|
11090
|
+
${trailingTrivia && L.tri !== TRI_NONE ? `if(v!==FAIL${L.tri === TRI_UNKNOWN ? "&&ctx.trivia!==undefined" : ""})EC.e=consumeTrivia(input,EC.e,ctx)
|
|
11091
|
+
` : ""}const captured=_capturedFlatChildren(flat)
|
|
11037
11092
|
${fields ? "const fieldMap=buildFieldMap(ctx._fields)\n" : ""}ctx._fields=sFields
|
|
11038
11093
|
ctx._cstBuf=sBuf
|
|
11039
11094
|
ctx._cstChildren=sCh
|
|
@@ -11653,7 +11708,7 @@ function assemble(t, prog, cfg) {
|
|
|
11653
11708
|
const lf = { _tag: "leaf", value, span: { start: s, end: e } };
|
|
11654
11709
|
pushCstLeaf(ctx, lf);
|
|
11655
11710
|
}
|
|
11656
|
-
function plainBuildNode(child, build) {
|
|
11711
|
+
function plainBuildNode(child, build, trailing) {
|
|
11657
11712
|
return (input, pos, ctx) => {
|
|
11658
11713
|
const sCh = ctx._cstChildren;
|
|
11659
11714
|
const sLv = ctx._cstLeaves;
|
|
@@ -11671,6 +11726,7 @@ function assemble(t, prog, cfg) {
|
|
|
11671
11726
|
ctx.captureTrivia = false;
|
|
11672
11727
|
ctx._fields = void 0;
|
|
11673
11728
|
const value = child(input, pos, ctx);
|
|
11729
|
+
if (trailing && value !== FAIL && ctx.trivia !== void 0) EC.e = consumeTrivia(input, EC.e, ctx);
|
|
11674
11730
|
const kids = buf.ch ?? (buf.single !== void 0 ? [buf.single] : EMPTY_CH);
|
|
11675
11731
|
const rawKids = buf.raw ?? (buf.rawSingle !== void 0 ? [buf.rawSingle] : EMPTY_CH);
|
|
11676
11732
|
ctx._fields = savedFields;
|
|
@@ -11698,7 +11754,7 @@ function assemble(t, prog, cfg) {
|
|
|
11698
11754
|
while (first < children3.length && children3[first] === void 0) first++;
|
|
11699
11755
|
return first === children3.length ? EMPTY_CH : children3.slice(first);
|
|
11700
11756
|
}
|
|
11701
|
-
function childrenOnlyBuildNode(child, build) {
|
|
11757
|
+
function childrenOnlyBuildNode(child, build, trailing) {
|
|
11702
11758
|
return (input, pos, ctx) => {
|
|
11703
11759
|
const sCh = ctx._cstChildren;
|
|
11704
11760
|
const sLv = ctx._cstLeaves;
|
|
@@ -11716,6 +11772,7 @@ function assemble(t, prog, cfg) {
|
|
|
11716
11772
|
ctx.captureTrivia = false;
|
|
11717
11773
|
ctx._fields = void 0;
|
|
11718
11774
|
const value = child(input, pos, ctx);
|
|
11775
|
+
if (trailing && value !== FAIL && ctx.trivia !== void 0) EC.e = consumeTrivia(input, EC.e, ctx);
|
|
11719
11776
|
const captured = capturedFlatChildren(kids);
|
|
11720
11777
|
ctx._fields = savedFields;
|
|
11721
11778
|
ctx._cstBuf = sBuf;
|
|
@@ -12740,6 +12797,7 @@ function assemble(t, prog, cfg) {
|
|
|
12740
12797
|
/* ── transaction ─────────────────────────────────────────────────────── */
|
|
12741
12798
|
case OP_ATTEMPT: {
|
|
12742
12799
|
const child = link(code[ip + 1]);
|
|
12800
|
+
const contain = code[ip + 2] === 1;
|
|
12743
12801
|
return (input, pos, ctx) => {
|
|
12744
12802
|
const need = markCst(ctx);
|
|
12745
12803
|
const mRaw = MRAW;
|
|
@@ -12752,7 +12810,10 @@ function assemble(t, prog, cfg) {
|
|
|
12752
12810
|
const v = child(input, pos, ctx);
|
|
12753
12811
|
if (v !== FAIL) return v;
|
|
12754
12812
|
if (need) rollbackTriviaAt(ctx, mRaw, mTl, mLv, mFl, mEr, mLog, mRoot);
|
|
12755
|
-
if (committed3(ctx))
|
|
12813
|
+
if (committed3(ctx)) {
|
|
12814
|
+
if (!contain) return FAIL;
|
|
12815
|
+
ctx._fc = false;
|
|
12816
|
+
}
|
|
12756
12817
|
ctx._fe = pos;
|
|
12757
12818
|
return FAIL;
|
|
12758
12819
|
};
|
|
@@ -12970,7 +13031,8 @@ function assemble(t, prog, cfg) {
|
|
|
12970
13031
|
return value;
|
|
12971
13032
|
};
|
|
12972
13033
|
}
|
|
12973
|
-
case OP_LEAF:
|
|
13034
|
+
case OP_LEAF:
|
|
13035
|
+
case OP_SOURCE_LEAF: {
|
|
12974
13036
|
const fn = fns[code[ip + 1]];
|
|
12975
13037
|
const child = link(code[ip + 2]);
|
|
12976
13038
|
return (input, pos, ctx) => {
|
|
@@ -12998,7 +13060,11 @@ function assemble(t, prog, cfg) {
|
|
|
12998
13060
|
if (v === FAIL) return FAIL;
|
|
12999
13061
|
const end = EC.e;
|
|
13000
13062
|
const out = fn(v, { start: pos, end });
|
|
13001
|
-
if (wasCapturing) pushCstLeaf(ctx, {
|
|
13063
|
+
if (wasCapturing) pushCstLeaf(ctx, {
|
|
13064
|
+
_tag: "leaf",
|
|
13065
|
+
value: op === OP_SOURCE_LEAF && hostCst ? input.slice(pos, end) : out,
|
|
13066
|
+
span: { start: pos, end }
|
|
13067
|
+
});
|
|
13002
13068
|
EC.e = end;
|
|
13003
13069
|
return out;
|
|
13004
13070
|
};
|
|
@@ -14198,11 +14264,11 @@ function assemble(t, prog, cfg) {
|
|
|
14198
14264
|
const trailingTrivia = (flags & 128) !== 0;
|
|
14199
14265
|
const build = buildIdx >= 0 ? fns[buildIdx] : void 0;
|
|
14200
14266
|
if (!hostCst && !tracked) {
|
|
14201
|
-
if (build !== void 0 && proj < 0 && flags === 0) {
|
|
14202
|
-
return plainBuildNode(child, build);
|
|
14267
|
+
if (build !== void 0 && proj < 0 && (flags & ~128) === 0) {
|
|
14268
|
+
return plainBuildNode(child, build, trailingTrivia);
|
|
14203
14269
|
}
|
|
14204
|
-
if (build !== void 0 && proj < 0 && flags === 2) {
|
|
14205
|
-
return childrenOnlyBuildNode(child, build);
|
|
14270
|
+
if (build !== void 0 && proj < 0 && (flags & ~128) === 2) {
|
|
14271
|
+
return childrenOnlyBuildNode(child, build, trailingTrivia);
|
|
14206
14272
|
}
|
|
14207
14273
|
if (build !== void 0 && proj < 0 && flags === 18) {
|
|
14208
14274
|
return childrenOnlyFieldsBuildNode(child, build);
|
|
@@ -15039,7 +15105,7 @@ function payloadKey(p, d) {
|
|
|
15039
15105
|
case "transform":
|
|
15040
15106
|
return `transform\0${fnKey(d.fnSrc, d.fn)}\0${d.recognitionOnly === true}`;
|
|
15041
15107
|
case "leaf":
|
|
15042
|
-
return `leaf\0${fnKey(d.fnSrc, d.fn)}`;
|
|
15108
|
+
return `leaf\0${d.cstValue ?? "value"}\0${fnKey(d.fnSrc, d.fn)}`;
|
|
15043
15109
|
case "many":
|
|
15044
15110
|
case "oneOrMore":
|
|
15045
15111
|
return `${d.tag}\0${d.min}\0${d.max ?? ""}`;
|
|
@@ -16528,7 +16594,7 @@ function evalRuleMapIR(ir) {
|
|
|
16528
16594
|
if (recognitionOnly) t._def.recognitionOnly = true;
|
|
16529
16595
|
return t;
|
|
16530
16596
|
};
|
|
16531
|
-
const _lf = (child, src) => {
|
|
16597
|
+
const _lf = (child, src, source = false) => {
|
|
16532
16598
|
let fn2;
|
|
16533
16599
|
try {
|
|
16534
16600
|
fn2 = (0, eval)(`(${src})`);
|
|
@@ -16537,7 +16603,7 @@ function evalRuleMapIR(ir) {
|
|
|
16537
16603
|
throw new Error("IR leaf fn not materialized");
|
|
16538
16604
|
};
|
|
16539
16605
|
}
|
|
16540
|
-
const l = leaf(child, fn2);
|
|
16606
|
+
const l = source ? sourceLeaf(child, fn2) : leaf(child, fn2);
|
|
16541
16607
|
l._def.fnSrc = src;
|
|
16542
16608
|
return l;
|
|
16543
16609
|
};
|
|
@@ -16921,7 +16987,7 @@ ${outerDecls.map((d) => " " + d).join("\n")}
|
|
|
16921
16987
|
case "optional":
|
|
16922
16988
|
return `optional(${kid(def.parser)})`;
|
|
16923
16989
|
case "attempt":
|
|
16924
|
-
return `attempt(${kid(def.parser)})`;
|
|
16990
|
+
return `attempt(${kid(def.parser)}${def.contain === true ? ", { contain: true }" : ""})`;
|
|
16925
16991
|
// `keepSeparators` is an opt-in expressed at the SEPARATOR, not in the options
|
|
16926
16992
|
// bag, so it must round-trip as `keepSeparator(sep)` — serializing it as an
|
|
16927
16993
|
// option would reconstruct a grammar whose call site no longer states its own
|
|
@@ -16940,7 +17006,7 @@ ${outerDecls.map((d) => " " + d).join("\n")}
|
|
|
16940
17006
|
return `token(${kid(def.parser)})`;
|
|
16941
17007
|
case "leaf": {
|
|
16942
17008
|
if (def.fnSrc === void 0) throw new Unserializable("leaf without fnSrc");
|
|
16943
|
-
return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)})`;
|
|
17009
|
+
return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)}${def.cstValue === "source" ? ", true" : ""})`;
|
|
16944
17010
|
}
|
|
16945
17011
|
case "label":
|
|
16946
17012
|
return `label(${JSON.stringify(def.label)}, ${kid(def.parser)})`;
|
|
@@ -17129,7 +17195,7 @@ function compileRuleMap(ruleMap, opts = {}) {
|
|
|
17129
17195
|
}
|
|
17130
17196
|
|
|
17131
17197
|
// src/version.ts
|
|
17132
|
-
var PARSEMAN_VERSION = "0.
|
|
17198
|
+
var PARSEMAN_VERSION = "0.52.0";
|
|
17133
17199
|
|
|
17134
17200
|
// src/compiler/compile-linkable-table.ts
|
|
17135
17201
|
function isLocal(rule) {
|
|
@@ -17578,7 +17644,7 @@ var SUPPORTED = {
|
|
|
17578
17644
|
word: (...a) => word(a[0], a[1], a[2]),
|
|
17579
17645
|
sequence: (...a) => sequence(...a),
|
|
17580
17646
|
choice: (...a) => choice(...a),
|
|
17581
|
-
attempt: (...a) => attempt(a[0]),
|
|
17647
|
+
attempt: (...a) => attempt(a[0], a[1]),
|
|
17582
17648
|
optional: (...a) => optional(a[0]),
|
|
17583
17649
|
trivia: (...a) => trivia(a[0]),
|
|
17584
17650
|
classifiedTrivia: (...a) => classifiedTrivia(
|
|
@@ -17852,7 +17918,7 @@ function exprToCombi(node2, scope, code, mfs) {
|
|
|
17852
17918
|
return null;
|
|
17853
17919
|
}
|
|
17854
17920
|
}
|
|
17855
|
-
if (callee.name === "leaf" && code !== void 0 && mfs !== void 0) {
|
|
17921
|
+
if ((callee.name === "leaf" || callee.name === "sourceLeaf") && code !== void 0 && mfs !== void 0) {
|
|
17856
17922
|
const [parserArg, fnArg] = node2.arguments;
|
|
17857
17923
|
if (!parserArg || !fnArg || parserArg.type === "SpreadElement" || fnArg.type === "SpreadElement") return null;
|
|
17858
17924
|
const inner = anyValue(parserArg, scope, code, mfs);
|
|
@@ -17860,7 +17926,7 @@ function exprToCombi(node2, scope, code, mfs) {
|
|
|
17860
17926
|
const fnSrc = stripTsFromSource(fnArg, code);
|
|
17861
17927
|
mfs.push(fnSrc);
|
|
17862
17928
|
try {
|
|
17863
|
-
const combi = leaf(inner, (v) => v);
|
|
17929
|
+
const combi = callee.name === "sourceLeaf" ? sourceLeaf(inner, (v) => v) : leaf(inner, (v) => v);
|
|
17864
17930
|
if (combi._def.tag === "leaf") combi._def.fnSrc = fnSrc;
|
|
17865
17931
|
return combi;
|
|
17866
17932
|
} catch {
|