parseman 0.60.5 → 0.61.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/diagnostics.js +77 -40
- package/dist/analysis/diagnostics.js.map +3 -3
- package/dist/cli/index.js +77 -40
- package/dist/cli/index.js.map +3 -3
- package/dist/combinators/choice.d.ts.map +1 -1
- package/dist/combinators/expect.d.ts.map +1 -1
- package/dist/combinators/link-scope.d.ts +7 -0
- package/dist/combinators/link-scope.d.ts.map +1 -0
- package/dist/combinators/node.d.ts.map +1 -1
- package/dist/combinators/parser.d.ts.map +1 -1
- package/dist/combinators/trivia-boundary.d.ts +5 -3
- package/dist/combinators/trivia-boundary.d.ts.map +1 -1
- package/dist/compiler/token-capability.js +7 -0
- package/dist/compiler/token-capability.js.map +1 -1
- package/dist/compiler/value-usage.d.ts.map +1 -1
- package/dist/functional/run.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +121 -70
- package/dist/index.js.map +3 -3
- package/dist/language-service/index.js +1 -1
- package/dist/language-service/index.js.map +1 -1
- package/dist/plugin/index.js +284 -233
- package/dist/plugin/index.js.map +3 -3
- package/dist/run/index.js +1 -1
- package/dist/run/index.js.map +1 -1
- 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/emit.d.ts.map +1 -1
- package/dist/table/encode.d.ts.map +1 -1
- package/dist/table/exec.d.ts.map +1 -1
- package/dist/table/index.js +41 -10
- package/dist/table/index.js.map +3 -3
- package/dist/table/ops.d.ts +6 -0
- package/dist/table/ops.d.ts.map +1 -1
- package/dist/table/program.d.ts +3 -1
- package/dist/table/program.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/combinators/choice.ts +3 -1
- package/src/combinators/expect.ts +1 -0
- package/src/combinators/grammar.ts +1 -1
- package/src/combinators/link-scope.ts +19 -0
- package/src/combinators/node.ts +11 -2
- package/src/combinators/parser.ts +37 -31
- package/src/combinators/trivia-boundary.ts +11 -3
- package/src/compiler/value-usage.ts +16 -29
- package/src/functional/run.ts +3 -1
- package/src/index.ts +1 -1
- package/src/table/assemble.ts +11 -1
- package/src/table/emit-assembly.ts +10 -1
- package/src/table/emit.ts +5 -1
- package/src/table/encode.ts +16 -9
- package/src/table/exec.ts +11 -9
- package/src/table/ops.ts +6 -0
- package/src/table/program.ts +8 -2
- package/src/table/site-labels.ts +3 -3
- package/src/version.ts +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export type { AnalysableGrammar } from './analysis/grammar.ts';
|
|
|
49
49
|
export { analyzeDuplication, analyzeDuplicationRules, formatDuplicationFindings, duplicationFindingCount, siteToString, alternationGroups, keywordRegexShape, extractCharClasses, charClassMembers, keywordAlternationHazards, } from './analysis/duplication.ts';
|
|
50
50
|
export type { DuplicationReport, AnalyzeDuplicationOptions, DuplicationWarnLevel, Site, DuplicateFinding, NearDuplicateFinding, RegexFragmentFinding, RegexClassFinding, RegexClassVariant, ArmOverlapFinding, RewriteFinding, RewriteKind, SepByVerdict, KeywordRegexFinding, DivergentNodeFinding, StructureLossFinding, } from './analysis/duplication.ts';
|
|
51
51
|
export { compose, composeLeaf, cstBuildHost } from './compiler/linker.ts';
|
|
52
|
-
export type { CstBuildHostOptions, FusedRule } from './compiler/linker.ts';
|
|
52
|
+
export type { ComposedRules, CstBuildHostOptions, FusedRule } from './compiler/linker.ts';
|
|
53
53
|
export { buildLineIndex, createLineIndex, recordLineRange, normalizeLineIndex, offsetToLineCol, annotateSpan, annotateTreeSpans } from './line-index.ts';
|
|
54
54
|
export type { LineIndex } from './line-index.ts';
|
|
55
55
|
export { gate } from './combinators/gate.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
|
@@ -40,6 +40,12 @@ function hasOwnTriviaBoundary(p, depth = MAX_DEPTH) {
|
|
|
40
40
|
case "oneOrMore":
|
|
41
41
|
case "sepBy":
|
|
42
42
|
return true;
|
|
43
|
+
// A scope that names or clears trivia keeps an outer install out of its body.
|
|
44
|
+
// Any other inherits, so it falls through at no cost in depth: line tracking
|
|
45
|
+
// wraps every rule in one, and must not change what this walk sees.
|
|
46
|
+
case "grammar":
|
|
47
|
+
if (d.triviaParser || d.clearTrivia) return false;
|
|
48
|
+
depth++;
|
|
43
49
|
// Transparent wrappers — they add no position, so ask what they wrap.
|
|
44
50
|
case "node":
|
|
45
51
|
case "transform":
|
|
@@ -3197,6 +3203,7 @@ function derive(c, seen) {
|
|
|
3197
3203
|
case "optional":
|
|
3198
3204
|
case "many":
|
|
3199
3205
|
case "oneOrMore":
|
|
3206
|
+
case "sepBy":
|
|
3200
3207
|
case "transform":
|
|
3201
3208
|
case "not":
|
|
3202
3209
|
case "peek":
|
|
@@ -3347,7 +3354,7 @@ function choice(...args) {
|
|
|
3347
3354
|
const result = parsers[idx].parse(input, pos, ctx);
|
|
3348
3355
|
if (result.ok) return result;
|
|
3349
3356
|
expected.push(...result.expected);
|
|
3350
|
-
if (result.committed) return { ok: false, expected, span:
|
|
3357
|
+
if (result.committed) return { ok: false, expected, span: result.span, committed: true };
|
|
3351
3358
|
return { ok: false, expected, span: { start: pos, end: pos } };
|
|
3352
3359
|
}
|
|
3353
3360
|
if (ctx._probe !== void 0 || ctx._tolerant) for (const p of parsers) p.parse(input, pos, ctx);
|
|
@@ -4342,15 +4349,20 @@ function markUnusedValues(root) {
|
|
|
4342
4349
|
case "many":
|
|
4343
4350
|
case "oneOrMore":
|
|
4344
4351
|
mark(def, consumed);
|
|
4345
|
-
visit(def.parser, consumed);
|
|
4346
|
-
return;
|
|
4347
4352
|
case "optional":
|
|
4353
|
+
// `optional` returns `inner | null` — no aggregate array/tuple to elide, so
|
|
4354
|
+
// it carries no valueUnused flag. Still descend so an inner many/sequence
|
|
4355
|
+
// under a node() is analyzed (it benefits even when its optional wrapper
|
|
4356
|
+
// doesn't).
|
|
4357
|
+
case "label":
|
|
4358
|
+
case "trivia":
|
|
4359
|
+
case "attempt":
|
|
4360
|
+
case "withCtx":
|
|
4361
|
+
case "expect":
|
|
4348
4362
|
visit(def.parser, consumed);
|
|
4349
4363
|
return;
|
|
4350
4364
|
case "sequence":
|
|
4351
4365
|
mark(def, consumed);
|
|
4352
|
-
for (const p of def.parsers) visit(p, consumed);
|
|
4353
|
-
return;
|
|
4354
4366
|
case "choice":
|
|
4355
4367
|
for (const p of def.parsers) visit(p, consumed);
|
|
4356
4368
|
return;
|
|
@@ -4361,22 +4373,24 @@ function markUnusedValues(root) {
|
|
|
4361
4373
|
if (def.otherwise) visit(def.otherwise, consumed);
|
|
4362
4374
|
return;
|
|
4363
4375
|
case "node":
|
|
4376
|
+
// builds from captured children, NOT the inner parser value.
|
|
4377
|
+
case "not":
|
|
4378
|
+
case "peek":
|
|
4379
|
+
// lookahead — value never observed
|
|
4380
|
+
case "token":
|
|
4364
4381
|
visit(def.parser, false);
|
|
4365
4382
|
return;
|
|
4366
4383
|
case "transform":
|
|
4367
|
-
|
|
4368
|
-
return;
|
|
4384
|
+
// the map fn reads the value → always consumed.
|
|
4369
4385
|
case "field":
|
|
4386
|
+
// the field capture records the parsed value → always consumed.
|
|
4387
|
+
case "leaf":
|
|
4370
4388
|
visit(def.parser, true);
|
|
4371
4389
|
return;
|
|
4372
4390
|
case "sepBy":
|
|
4373
4391
|
visit(def.parser, true);
|
|
4374
4392
|
visit(def.separator, false);
|
|
4375
4393
|
return;
|
|
4376
|
-
case "not":
|
|
4377
|
-
case "peek":
|
|
4378
|
-
visit(def.parser, false);
|
|
4379
|
-
return;
|
|
4380
4394
|
case "grammar":
|
|
4381
4395
|
visit(def.parser, consumed);
|
|
4382
4396
|
if (def.triviaParser) visit(def.triviaParser, false);
|
|
@@ -4385,19 +4399,6 @@ function markUnusedValues(root) {
|
|
|
4385
4399
|
visit(def.parser, consumed);
|
|
4386
4400
|
visit(def.sentinel, false);
|
|
4387
4401
|
return;
|
|
4388
|
-
case "token":
|
|
4389
|
-
visit(def.parser, false);
|
|
4390
|
-
return;
|
|
4391
|
-
case "label":
|
|
4392
|
-
case "trivia":
|
|
4393
|
-
case "attempt":
|
|
4394
|
-
case "withCtx":
|
|
4395
|
-
case "expect":
|
|
4396
|
-
visit(def.parser, consumed);
|
|
4397
|
-
return;
|
|
4398
|
-
case "leaf":
|
|
4399
|
-
visit(def.parser, true);
|
|
4400
|
-
return;
|
|
4401
4402
|
case "lazy":
|
|
4402
4403
|
return;
|
|
4403
4404
|
default:
|
|
@@ -4427,6 +4428,21 @@ function markUnusedValues(root) {
|
|
|
4427
4428
|
visit(resolveRoot2(root), true);
|
|
4428
4429
|
}
|
|
4429
4430
|
|
|
4431
|
+
// src/combinators/link-scope.ts
|
|
4432
|
+
var scope;
|
|
4433
|
+
function afterLink(settle) {
|
|
4434
|
+
scope?.push(settle);
|
|
4435
|
+
}
|
|
4436
|
+
function collectAfterLink(pending, build) {
|
|
4437
|
+
const outer = scope;
|
|
4438
|
+
scope = outer ?? pending;
|
|
4439
|
+
try {
|
|
4440
|
+
return build();
|
|
4441
|
+
} finally {
|
|
4442
|
+
scope = outer;
|
|
4443
|
+
}
|
|
4444
|
+
}
|
|
4445
|
+
|
|
4430
4446
|
// src/cst/root-trivia-scope.ts
|
|
4431
4447
|
var ROOT_TRIVIA_SCOPE_REFUSAL = "parser(): selected root trivia requires classifiedTrivia() for every local trivia scope, or rootCapture: 'opaque'.";
|
|
4432
4448
|
function refuseUnclassifiedRootScope(strict) {
|
|
@@ -4537,7 +4553,7 @@ function parser(opts, root) {
|
|
|
4537
4553
|
ctx.triviaKindLabels = void 0;
|
|
4538
4554
|
} else if (scopeTrivia !== void 0) {
|
|
4539
4555
|
ctx.trivia = scopeTrivia;
|
|
4540
|
-
|
|
4556
|
+
ctx.triviaKindLabels = scopeLabels;
|
|
4541
4557
|
}
|
|
4542
4558
|
if (forceCaptureTrivia || _ctx?.captureTrivia) ctx.captureTrivia = true;
|
|
4543
4559
|
if (ownCaptureMask !== void 0) ctx._triviaCaptureMask = ownCaptureMask;
|
|
@@ -4773,6 +4789,7 @@ function linkRules(recipes, link) {
|
|
|
4773
4789
|
}
|
|
4774
4790
|
});
|
|
4775
4791
|
const winners = /* @__PURE__ */ new Map();
|
|
4792
|
+
const afterLink2 = [];
|
|
4776
4793
|
const priorHoles = /* @__PURE__ */ new Map();
|
|
4777
4794
|
const prior = new Proxy({}, {
|
|
4778
4795
|
get(_target, key) {
|
|
@@ -4785,38 +4802,42 @@ function linkRules(recipes, link) {
|
|
|
4785
4802
|
return hole;
|
|
4786
4803
|
}
|
|
4787
4804
|
});
|
|
4788
|
-
for (const recipe of recipes) {
|
|
4789
|
-
const definitions = recipe.factory(proxy, prior);
|
|
4790
|
-
for (const key of Object.keys(definitions)) {
|
|
4791
|
-
winners.set(key, { parser: definitions[key], options: recipe.options });
|
|
4792
|
-
}
|
|
4793
|
-
}
|
|
4794
|
-
const keys = [...winners.keys()];
|
|
4795
4805
|
const copies = /* @__PURE__ */ new Map();
|
|
4796
|
-
|
|
4797
|
-
const
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
placeholder
|
|
4805
|
-
|
|
4806
|
-
placeholder
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4814
|
-
|
|
4815
|
-
|
|
4816
|
-
|
|
4817
|
-
|
|
4806
|
+
try {
|
|
4807
|
+
for (const recipe of recipes) {
|
|
4808
|
+
const definitions = collectAfterLink(afterLink2, () => recipe.factory(proxy, prior));
|
|
4809
|
+
for (const key of Object.keys(definitions)) {
|
|
4810
|
+
winners.set(key, { parser: definitions[key], options: recipe.options });
|
|
4811
|
+
}
|
|
4812
|
+
}
|
|
4813
|
+
for (const [key, { parser: defined }] of winners) {
|
|
4814
|
+
const placeholder = cache[key];
|
|
4815
|
+
const parser2 = ownRule(defined, copies);
|
|
4816
|
+
if (placeholder === parser2) {
|
|
4817
|
+
throw new Error(`rules(): rule "${key}" cannot be a direct alias to itself`);
|
|
4818
|
+
}
|
|
4819
|
+
if (isDefinableRef(placeholder)) {
|
|
4820
|
+
if (!isNamedRuleRefForAnotherRule(parser2, key)) tagRule(parser2, key);
|
|
4821
|
+
placeholder.define(parser2);
|
|
4822
|
+
placeholder._meta.firstSet = parser2._meta.firstSet;
|
|
4823
|
+
placeholder._meta.canMatchNewline = parser2._meta.canMatchNewline;
|
|
4824
|
+
} else if (isNamedRuleRefForAnotherRule(parser2, key) || link !== void 0) {
|
|
4825
|
+
if (!isNamedRuleRefForAnotherRule(parser2, key)) tagRule(parser2, key);
|
|
4826
|
+
const alias = ref();
|
|
4827
|
+
tagRule(alias, key);
|
|
4828
|
+
alias.define(parser2);
|
|
4829
|
+
alias._meta.firstSet = parser2._meta.firstSet;
|
|
4830
|
+
alias._meta.canMatchNewline = parser2._meta.canMatchNewline;
|
|
4831
|
+
cache[key] = alias;
|
|
4832
|
+
} else {
|
|
4833
|
+
tagRule(parser2, key);
|
|
4834
|
+
cache[key] = parser2;
|
|
4835
|
+
}
|
|
4818
4836
|
}
|
|
4837
|
+
} finally {
|
|
4838
|
+
for (const settle of afterLink2) settle();
|
|
4819
4839
|
}
|
|
4840
|
+
const keys = [...winners.keys()];
|
|
4820
4841
|
for (const key of keys) {
|
|
4821
4842
|
const options = winners.get(key).options;
|
|
4822
4843
|
let rule = cache[key];
|
|
@@ -5301,8 +5322,14 @@ function node(typeOrCombinator, combinatorOrBuild, buildOrOpts, maybeOpts) {
|
|
|
5301
5322
|
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;
|
|
5302
5323
|
const capturesTrivia = captureTrivia || (build ? buildReadsTrivia(def) : project === void 0);
|
|
5303
5324
|
const readsState = build ? buildReadsState(def) : project === void 0;
|
|
5304
|
-
|
|
5305
|
-
|
|
5325
|
+
let hasOwnFields = parserHasOwnFields(combinator);
|
|
5326
|
+
let capturesFields = hasOwnFields && (build ? buildReadsFields(def) : project === void 0);
|
|
5327
|
+
if (!hasOwnFields) {
|
|
5328
|
+
afterLink(() => {
|
|
5329
|
+
hasOwnFields = parserHasOwnFields(combinator);
|
|
5330
|
+
capturesFields = hasOwnFields && (build ? buildReadsFields(def) : project === void 0);
|
|
5331
|
+
});
|
|
5332
|
+
}
|
|
5306
5333
|
const guardable = combinator._meta.firstSet.kind !== "any" && !matchesEmpty(combinator);
|
|
5307
5334
|
let failExpected;
|
|
5308
5335
|
return {
|
|
@@ -5615,6 +5642,9 @@ function sourceLeaf(root, fn) {
|
|
|
5615
5642
|
return makeLeaf(root, fn, true);
|
|
5616
5643
|
}
|
|
5617
5644
|
|
|
5645
|
+
// src/version.ts
|
|
5646
|
+
var PARSEMAN_VERSION = "0.61.0";
|
|
5647
|
+
|
|
5618
5648
|
// src/table/lex-body.ts
|
|
5619
5649
|
function buildLexBodyRecognizer(spec, constants) {
|
|
5620
5650
|
const raw = constants[spec[0]];
|
|
@@ -6230,11 +6260,12 @@ function assemblyExtraIps(prog) {
|
|
|
6230
6260
|
}
|
|
6231
6261
|
function expandCompact(p) {
|
|
6232
6262
|
if ("code" in p) return p;
|
|
6263
|
+
if (p.es === void 0) throw new Error(`parseman: this parser was printed by an earlier parseman; reprint it with parseman ${PARSEMAN_VERSION}`);
|
|
6233
6264
|
return ownTableProgram({
|
|
6234
6265
|
code: p.c,
|
|
6235
6266
|
k: p.k,
|
|
6236
6267
|
cc: p.x,
|
|
6237
|
-
fx: p.e,
|
|
6268
|
+
fx: p.e.map((set) => set.map((i) => p.es[i])),
|
|
6238
6269
|
disp: p.d,
|
|
6239
6270
|
rules: p.r,
|
|
6240
6271
|
fns: p.f,
|
|
@@ -7518,6 +7549,7 @@ var OP_LIT_CI = 27;
|
|
|
7518
7549
|
var OP_LIT_CI_TRACK = 28;
|
|
7519
7550
|
var OP_TOKEN = 29;
|
|
7520
7551
|
var OP_SCOPE_CAP = 30;
|
|
7552
|
+
var SCOPE_INHERIT = -2;
|
|
7521
7553
|
var OP_WITHCTX = 31;
|
|
7522
7554
|
var OP_GUARD = 32;
|
|
7523
7555
|
var OP_ADJ = 33;
|
|
@@ -7642,7 +7674,7 @@ function selectOptionalSuffixLexBody(ir) {
|
|
|
7642
7674
|
function reinstallsRuleTrivia(reference, target) {
|
|
7643
7675
|
return (reference._meta.grammarTrivia ?? target._meta.grammarTrivia) !== void 0 && hasOwnTriviaBoundary(target);
|
|
7644
7676
|
}
|
|
7645
|
-
function directTokenBodyParser(parser2, resolve,
|
|
7677
|
+
function directTokenBodyParser(parser2, resolve, scope2) {
|
|
7646
7678
|
const outer = parser2._def;
|
|
7647
7679
|
if (outer.tag !== "token") return void 0;
|
|
7648
7680
|
let body = outer.parser;
|
|
@@ -7652,7 +7684,7 @@ function directTokenBodyParser(parser2, resolve, scope) {
|
|
|
7652
7684
|
const wrapper = body._def;
|
|
7653
7685
|
if (wrapper.tag === "grammar") {
|
|
7654
7686
|
if (wrapper.clearTrivia !== true || wrapper.triviaParser !== void 0 || wrapper.captureTrivia === true || wrapper.rootCapture === "opaque" || wrapper.constructionTrackLines !== "inherit" || wrapper.constructionCaptureTriviaKinds !== void 0) return void 0;
|
|
7655
|
-
if (
|
|
7687
|
+
if (scope2 !== void 0) scope2.cleared = true;
|
|
7656
7688
|
body = wrapper.parser;
|
|
7657
7689
|
continue;
|
|
7658
7690
|
}
|
|
@@ -7909,10 +7941,10 @@ function directFixedLexNode(parser2, resolve, active, pureOnly = false, cleared
|
|
|
7909
7941
|
}
|
|
7910
7942
|
}
|
|
7911
7943
|
function directFixedTokenBody(parser2, resolve) {
|
|
7912
|
-
const
|
|
7913
|
-
const body = directTokenBodyParser(parser2, resolve,
|
|
7944
|
+
const scope2 = { cleared: false };
|
|
7945
|
+
const body = directTokenBodyParser(parser2, resolve, scope2);
|
|
7914
7946
|
if (body === void 0) return void 0;
|
|
7915
|
-
const root = directFixedLexNode(body, resolve, /* @__PURE__ */ new Set(), false,
|
|
7947
|
+
const root = directFixedLexNode(body, resolve, /* @__PURE__ */ new Set(), false, scope2.cleared);
|
|
7916
7948
|
return root === void 0 ? void 0 : { kind: "fixed-tree", root };
|
|
7917
7949
|
}
|
|
7918
7950
|
function directBalancedTokenBody(parser2, resolve) {
|
|
@@ -9550,7 +9582,7 @@ var Encoder = class {
|
|
|
9550
9582
|
this.triviaKnown = savedKnown;
|
|
9551
9583
|
if (d.clearTrivia === true) return this.emit(op, -1, bodyIp, flags);
|
|
9552
9584
|
if (d.triviaParser === void 0) {
|
|
9553
|
-
return cap
|
|
9585
|
+
return cap ? this.emit(op, SCOPE_INHERIT, bodyIp, flags) : bodyIp;
|
|
9554
9586
|
}
|
|
9555
9587
|
return this.emit(op, this.triviaSlot(d.triviaParser), bodyIp, flags);
|
|
9556
9588
|
}
|
|
@@ -10945,7 +10977,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
10945
10977
|
const op = code[ip];
|
|
10946
10978
|
if (op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN) {
|
|
10947
10979
|
const ki = code[ip + 1];
|
|
10948
|
-
const tri = ki < 0 ? TRI_NONE : ki;
|
|
10980
|
+
const tri = ki === SCOPE_INHERIT ? at.tri : ki < 0 ? TRI_NONE : ki;
|
|
10949
10981
|
const cap = op === OP_SCOPE_CAP ? CAP_ON : at.cap;
|
|
10950
10982
|
if (tri === at.tri && cap === at.cap) return at;
|
|
10951
10983
|
return { tri, buf: at.buf, raw: at.raw, cap };
|
|
@@ -11019,7 +11051,7 @@ function scanHandoffNeeded(code, ip, labels) {
|
|
|
11019
11051
|
if (l.tri === TRI_UNKNOWN) return true;
|
|
11020
11052
|
const op = code[at];
|
|
11021
11053
|
if (op === OP_SCAN) return true;
|
|
11022
|
-
if (op === OP_TOKEN || op === OP_SCOPE_CAP) continue;
|
|
11054
|
+
if (op === OP_TOKEN || op === OP_SCOPE_CAP && code[at + 1] !== SCOPE_INHERIT) continue;
|
|
11023
11055
|
if ((op === OP_SCOPE_PLAIN || op === OP_SCOPE) && !(code[at + 1] >= 0 && l.tri === code[at + 1] && (op === OP_SCOPE_PLAIN || code[at + 3] === 0))) continue;
|
|
11024
11056
|
kids.length = 0;
|
|
11025
11057
|
if (!childSlots(code, at, kids)) return true;
|
|
@@ -12314,6 +12346,15 @@ return r.value
|
|
|
12314
12346
|
const cap = op === OP_SCOPE_CAP;
|
|
12315
12347
|
const flags = op === OP_SCOPE_PLAIN ? 0 : code[ip + 3];
|
|
12316
12348
|
const child = link(code[ip + 2]);
|
|
12349
|
+
if (ki === SCOPE_INHERIT) {
|
|
12350
|
+
return `${head}
|
|
12351
|
+
const sC=ctx.captureTrivia
|
|
12352
|
+
ctx.captureTrivia=true
|
|
12353
|
+
const v=${child}(input,pos,ctx)
|
|
12354
|
+
ctx.captureTrivia=sC
|
|
12355
|
+
return v
|
|
12356
|
+
}`;
|
|
12357
|
+
}
|
|
12317
12358
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? hoist("ts", `TRIVIASCAN[${ki}]`) : "null";
|
|
12318
12359
|
const tri = ki < 0 ? "undefined" : hoist("tv", `TRIVIA[${ki}]`);
|
|
12319
12360
|
const lab = ki < 0 ? "undefined" : hoist("tl", `TRIVIA[${ki}]._meta.triviaKindLabels`);
|
|
@@ -13902,9 +13943,6 @@ function clearOf(ranges, input, from, to) {
|
|
|
13902
13943
|
return true;
|
|
13903
13944
|
}
|
|
13904
13945
|
|
|
13905
|
-
// src/version.ts
|
|
13906
|
-
var PARSEMAN_VERSION = "0.60.5";
|
|
13907
|
-
|
|
13908
13946
|
// src/table/assemble.ts
|
|
13909
13947
|
import { PlainBuf as PlainBuf2, PlainField, PlainLeaf as PlainLeaf9, PlainNode as PlainNode2, PlainSpan as PlainSpan10 } from "./cst/plain.js";
|
|
13910
13948
|
|
|
@@ -15433,6 +15471,16 @@ function assemble(t, prog, cfg) {
|
|
|
15433
15471
|
case OP_SCOPE_CAP:
|
|
15434
15472
|
case OP_SCOPE_PLAIN: {
|
|
15435
15473
|
const ki = code[ip + 1];
|
|
15474
|
+
if (ki === SCOPE_INHERIT) {
|
|
15475
|
+
const body = link(code[ip + 2]);
|
|
15476
|
+
return (input, pos, ctx) => {
|
|
15477
|
+
const savedCap = ctx.captureTrivia;
|
|
15478
|
+
ctx.captureTrivia = true;
|
|
15479
|
+
const v = body(input, pos, ctx);
|
|
15480
|
+
ctx.captureTrivia = savedCap;
|
|
15481
|
+
return v;
|
|
15482
|
+
};
|
|
15483
|
+
}
|
|
15436
15484
|
const scopeTrivia = ki < 0 ? void 0 : trivia2[ki];
|
|
15437
15485
|
const scopeLabels = scopeTrivia?._meta.triviaKindLabels;
|
|
15438
15486
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? triviaScan[ki] : null;
|
|
@@ -17902,12 +17950,15 @@ function assertPrintable(prog, who) {
|
|
|
17902
17950
|
}
|
|
17903
17951
|
}
|
|
17904
17952
|
function programFields(prog, fns, opts = {}) {
|
|
17953
|
+
const tokens = [...new Set(prog.fx.flat())];
|
|
17954
|
+
const tokenAt = new Map(tokens.map((token2, i) => [token2, i]));
|
|
17905
17955
|
return [
|
|
17906
17956
|
...emitAssemblies(prog, opts.assemblies ?? []),
|
|
17907
17957
|
`c:[${prog.code.join(",")}],`,
|
|
17908
17958
|
`k:[${prog.k.map(emitConst).join(",")}],`,
|
|
17909
17959
|
`x:${emitClassPool(prog.cc)},`,
|
|
17910
|
-
`e:[${prog.fx.map((f) => `[${f.map(
|
|
17960
|
+
`e:[${prog.fx.map((f) => `[${f.map((token2) => tokenAt.get(token2)).join(",")}]`).join(",")}],`,
|
|
17961
|
+
`es:[${tokens.map(jsString).join(",")}],`,
|
|
17911
17962
|
`d:[${prog.disp.map((a) => `[${a.join(",")}]`).join(",")}],`,
|
|
17912
17963
|
`r:${JSON.stringify(prog.rules)},`,
|
|
17913
17964
|
...prog.lines === 1 ? ["l:1,"] : [],
|
|
@@ -21030,7 +21081,7 @@ function runOnce(entry, input, options) {
|
|
|
21030
21081
|
const r = invoke(entry, input, 0, ctx);
|
|
21031
21082
|
const value = r.ok ? r.value : void 0;
|
|
21032
21083
|
let span = r.span ?? { start: 0, end: 0 };
|
|
21033
|
-
const expected = r.ok ? [] : r.expected ?? [];
|
|
21084
|
+
const expected = r.ok ? [] : [...new Set(r.expected ?? [])];
|
|
21034
21085
|
let unconsumedFrom = null;
|
|
21035
21086
|
if (r.ok) {
|
|
21036
21087
|
let pos = span.end;
|