parseman 0.60.5 → 0.60.6
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 +31 -5
- package/dist/analysis/diagnostics.js.map +1 -1
- package/dist/cli/index.js +31 -5
- package/dist/cli/index.js.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 +6 -0
- package/dist/compiler/token-capability.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -5
- package/dist/index.js.map +1 -1
- package/dist/plugin/index.js +31 -5
- package/dist/plugin/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.d.ts.map +1 -1
- package/dist/table/exec.d.ts.map +1 -1
- package/dist/table/index.js +31 -5
- package/dist/table/index.js.map +1 -1
- package/dist/table/ops.d.ts +6 -0
- package/dist/table/ops.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/combinators/grammar.ts +1 -1
- package/src/combinators/trivia-boundary.ts +11 -3
- package/src/index.ts +1 -1
- package/src/table/assemble.ts +11 -1
- package/src/table/emit-assembly.ts +10 -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/site-labels.ts +3 -3
- package/src/version.ts +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -48,6 +48,12 @@ function hasOwnTriviaBoundary(p, depth = MAX_DEPTH) {
|
|
|
48
48
|
case "oneOrMore":
|
|
49
49
|
case "sepBy":
|
|
50
50
|
return true;
|
|
51
|
+
// A scope that names or clears trivia keeps an outer install out of its body.
|
|
52
|
+
// Any other inherits, so it falls through at no cost in depth: line tracking
|
|
53
|
+
// wraps every rule in one, and must not change what this walk sees.
|
|
54
|
+
case "grammar":
|
|
55
|
+
if (d.triviaParser || d.clearTrivia) return false;
|
|
56
|
+
depth++;
|
|
51
57
|
// Transparent wrappers — they add no position, so ask what they wrap.
|
|
52
58
|
case "node":
|
|
53
59
|
case "transform":
|
|
@@ -4446,7 +4452,7 @@ function parser(opts, root) {
|
|
|
4446
4452
|
ctx.triviaKindLabels = void 0;
|
|
4447
4453
|
} else if (scopeTrivia !== void 0) {
|
|
4448
4454
|
ctx.trivia = scopeTrivia;
|
|
4449
|
-
|
|
4455
|
+
ctx.triviaKindLabels = scopeLabels;
|
|
4450
4456
|
}
|
|
4451
4457
|
if (forceCaptureTrivia || _ctx?.captureTrivia) ctx.captureTrivia = true;
|
|
4452
4458
|
if (ownCaptureMask !== void 0) ctx._triviaCaptureMask = ownCaptureMask;
|
|
@@ -7177,6 +7183,7 @@ var OP_LIT_CI = 27;
|
|
|
7177
7183
|
var OP_LIT_CI_TRACK = 28;
|
|
7178
7184
|
var OP_TOKEN = 29;
|
|
7179
7185
|
var OP_SCOPE_CAP = 30;
|
|
7186
|
+
var SCOPE_INHERIT = -2;
|
|
7180
7187
|
var OP_WITHCTX = 31;
|
|
7181
7188
|
var OP_GUARD = 32;
|
|
7182
7189
|
var OP_ADJ = 33;
|
|
@@ -8976,7 +8983,7 @@ var Encoder = class {
|
|
|
8976
8983
|
this.triviaKnown = savedKnown;
|
|
8977
8984
|
if (d.clearTrivia === true) return this.emit(op, -1, bodyIp, flags);
|
|
8978
8985
|
if (d.triviaParser === void 0) {
|
|
8979
|
-
return cap
|
|
8986
|
+
return cap ? this.emit(op, SCOPE_INHERIT, bodyIp, flags) : bodyIp;
|
|
8980
8987
|
}
|
|
8981
8988
|
return this.emit(op, this.triviaSlot(d.triviaParser), bodyIp, flags);
|
|
8982
8989
|
}
|
|
@@ -10368,7 +10375,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
10368
10375
|
const op = code[ip];
|
|
10369
10376
|
if (op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN) {
|
|
10370
10377
|
const ki = code[ip + 1];
|
|
10371
|
-
const tri = ki < 0 ? TRI_NONE : ki;
|
|
10378
|
+
const tri = ki === SCOPE_INHERIT ? at.tri : ki < 0 ? TRI_NONE : ki;
|
|
10372
10379
|
const cap = op === OP_SCOPE_CAP ? CAP_ON : at.cap;
|
|
10373
10380
|
if (tri === at.tri && cap === at.cap) return at;
|
|
10374
10381
|
return { tri, buf: at.buf, raw: at.raw, cap };
|
|
@@ -10442,7 +10449,7 @@ function scanHandoffNeeded(code, ip, labels) {
|
|
|
10442
10449
|
if (l.tri === TRI_UNKNOWN) return true;
|
|
10443
10450
|
const op = code[at];
|
|
10444
10451
|
if (op === OP_SCAN) return true;
|
|
10445
|
-
if (op === OP_TOKEN || op === OP_SCOPE_CAP) continue;
|
|
10452
|
+
if (op === OP_TOKEN || op === OP_SCOPE_CAP && code[at + 1] !== SCOPE_INHERIT) continue;
|
|
10446
10453
|
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;
|
|
10447
10454
|
kids.length = 0;
|
|
10448
10455
|
if (!childSlots(code, at, kids)) return true;
|
|
@@ -11737,6 +11744,15 @@ return r.value
|
|
|
11737
11744
|
const cap = op === OP_SCOPE_CAP;
|
|
11738
11745
|
const flags = op === OP_SCOPE_PLAIN ? 0 : code[ip + 3];
|
|
11739
11746
|
const child = link(code[ip + 2]);
|
|
11747
|
+
if (ki === SCOPE_INHERIT) {
|
|
11748
|
+
return `${head}
|
|
11749
|
+
const sC=ctx.captureTrivia
|
|
11750
|
+
ctx.captureTrivia=true
|
|
11751
|
+
const v=${child}(input,pos,ctx)
|
|
11752
|
+
ctx.captureTrivia=sC
|
|
11753
|
+
return v
|
|
11754
|
+
}`;
|
|
11755
|
+
}
|
|
11740
11756
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? hoist("ts", `TRIVIASCAN[${ki}]`) : "null";
|
|
11741
11757
|
const tri = ki < 0 ? "undefined" : hoist("tv", `TRIVIA[${ki}]`);
|
|
11742
11758
|
const lab = ki < 0 ? "undefined" : hoist("tl", `TRIVIA[${ki}]._meta.triviaKindLabels`);
|
|
@@ -13415,7 +13431,7 @@ function clearOf(ranges, input, from, to) {
|
|
|
13415
13431
|
}
|
|
13416
13432
|
|
|
13417
13433
|
// src/version.ts
|
|
13418
|
-
var PARSEMAN_VERSION = "0.60.
|
|
13434
|
+
var PARSEMAN_VERSION = "0.60.6";
|
|
13419
13435
|
|
|
13420
13436
|
// src/table/assemble.ts
|
|
13421
13437
|
import { PlainBuf as PlainBuf2, PlainField, PlainLeaf as PlainLeaf9, PlainNode as PlainNode2, PlainSpan as PlainSpan10 } from "../cst/plain.js";
|
|
@@ -14928,6 +14944,16 @@ function assemble(t2, prog, cfg) {
|
|
|
14928
14944
|
case OP_SCOPE_CAP:
|
|
14929
14945
|
case OP_SCOPE_PLAIN: {
|
|
14930
14946
|
const ki = code[ip + 1];
|
|
14947
|
+
if (ki === SCOPE_INHERIT) {
|
|
14948
|
+
const body = link(code[ip + 2]);
|
|
14949
|
+
return (input, pos, ctx) => {
|
|
14950
|
+
const savedCap = ctx.captureTrivia;
|
|
14951
|
+
ctx.captureTrivia = true;
|
|
14952
|
+
const v = body(input, pos, ctx);
|
|
14953
|
+
ctx.captureTrivia = savedCap;
|
|
14954
|
+
return v;
|
|
14955
|
+
};
|
|
14956
|
+
}
|
|
14931
14957
|
const scopeTrivia = ki < 0 ? void 0 : trivia2[ki];
|
|
14932
14958
|
const scopeLabels = scopeTrivia?._meta.triviaKindLabels;
|
|
14933
14959
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? triviaScan[ki] : null;
|