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/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":
|
|
@@ -4537,7 +4543,7 @@ function parser(opts, root) {
|
|
|
4537
4543
|
ctx.triviaKindLabels = void 0;
|
|
4538
4544
|
} else if (scopeTrivia !== void 0) {
|
|
4539
4545
|
ctx.trivia = scopeTrivia;
|
|
4540
|
-
|
|
4546
|
+
ctx.triviaKindLabels = scopeLabels;
|
|
4541
4547
|
}
|
|
4542
4548
|
if (forceCaptureTrivia || _ctx?.captureTrivia) ctx.captureTrivia = true;
|
|
4543
4549
|
if (ownCaptureMask !== void 0) ctx._triviaCaptureMask = ownCaptureMask;
|
|
@@ -7518,6 +7524,7 @@ var OP_LIT_CI = 27;
|
|
|
7518
7524
|
var OP_LIT_CI_TRACK = 28;
|
|
7519
7525
|
var OP_TOKEN = 29;
|
|
7520
7526
|
var OP_SCOPE_CAP = 30;
|
|
7527
|
+
var SCOPE_INHERIT = -2;
|
|
7521
7528
|
var OP_WITHCTX = 31;
|
|
7522
7529
|
var OP_GUARD = 32;
|
|
7523
7530
|
var OP_ADJ = 33;
|
|
@@ -9550,7 +9557,7 @@ var Encoder = class {
|
|
|
9550
9557
|
this.triviaKnown = savedKnown;
|
|
9551
9558
|
if (d.clearTrivia === true) return this.emit(op, -1, bodyIp, flags);
|
|
9552
9559
|
if (d.triviaParser === void 0) {
|
|
9553
|
-
return cap
|
|
9560
|
+
return cap ? this.emit(op, SCOPE_INHERIT, bodyIp, flags) : bodyIp;
|
|
9554
9561
|
}
|
|
9555
9562
|
return this.emit(op, this.triviaSlot(d.triviaParser), bodyIp, flags);
|
|
9556
9563
|
}
|
|
@@ -10945,7 +10952,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
10945
10952
|
const op = code[ip];
|
|
10946
10953
|
if (op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN) {
|
|
10947
10954
|
const ki = code[ip + 1];
|
|
10948
|
-
const tri = ki < 0 ? TRI_NONE : ki;
|
|
10955
|
+
const tri = ki === SCOPE_INHERIT ? at.tri : ki < 0 ? TRI_NONE : ki;
|
|
10949
10956
|
const cap = op === OP_SCOPE_CAP ? CAP_ON : at.cap;
|
|
10950
10957
|
if (tri === at.tri && cap === at.cap) return at;
|
|
10951
10958
|
return { tri, buf: at.buf, raw: at.raw, cap };
|
|
@@ -11019,7 +11026,7 @@ function scanHandoffNeeded(code, ip, labels) {
|
|
|
11019
11026
|
if (l.tri === TRI_UNKNOWN) return true;
|
|
11020
11027
|
const op = code[at];
|
|
11021
11028
|
if (op === OP_SCAN) return true;
|
|
11022
|
-
if (op === OP_TOKEN || op === OP_SCOPE_CAP) continue;
|
|
11029
|
+
if (op === OP_TOKEN || op === OP_SCOPE_CAP && code[at + 1] !== SCOPE_INHERIT) continue;
|
|
11023
11030
|
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
11031
|
kids.length = 0;
|
|
11025
11032
|
if (!childSlots(code, at, kids)) return true;
|
|
@@ -12314,6 +12321,15 @@ return r.value
|
|
|
12314
12321
|
const cap = op === OP_SCOPE_CAP;
|
|
12315
12322
|
const flags = op === OP_SCOPE_PLAIN ? 0 : code[ip + 3];
|
|
12316
12323
|
const child = link(code[ip + 2]);
|
|
12324
|
+
if (ki === SCOPE_INHERIT) {
|
|
12325
|
+
return `${head}
|
|
12326
|
+
const sC=ctx.captureTrivia
|
|
12327
|
+
ctx.captureTrivia=true
|
|
12328
|
+
const v=${child}(input,pos,ctx)
|
|
12329
|
+
ctx.captureTrivia=sC
|
|
12330
|
+
return v
|
|
12331
|
+
}`;
|
|
12332
|
+
}
|
|
12317
12333
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? hoist("ts", `TRIVIASCAN[${ki}]`) : "null";
|
|
12318
12334
|
const tri = ki < 0 ? "undefined" : hoist("tv", `TRIVIA[${ki}]`);
|
|
12319
12335
|
const lab = ki < 0 ? "undefined" : hoist("tl", `TRIVIA[${ki}]._meta.triviaKindLabels`);
|
|
@@ -13903,7 +13919,7 @@ function clearOf(ranges, input, from, to) {
|
|
|
13903
13919
|
}
|
|
13904
13920
|
|
|
13905
13921
|
// src/version.ts
|
|
13906
|
-
var PARSEMAN_VERSION = "0.60.
|
|
13922
|
+
var PARSEMAN_VERSION = "0.60.6";
|
|
13907
13923
|
|
|
13908
13924
|
// src/table/assemble.ts
|
|
13909
13925
|
import { PlainBuf as PlainBuf2, PlainField, PlainLeaf as PlainLeaf9, PlainNode as PlainNode2, PlainSpan as PlainSpan10 } from "./cst/plain.js";
|
|
@@ -15433,6 +15449,16 @@ function assemble(t, prog, cfg) {
|
|
|
15433
15449
|
case OP_SCOPE_CAP:
|
|
15434
15450
|
case OP_SCOPE_PLAIN: {
|
|
15435
15451
|
const ki = code[ip + 1];
|
|
15452
|
+
if (ki === SCOPE_INHERIT) {
|
|
15453
|
+
const body = link(code[ip + 2]);
|
|
15454
|
+
return (input, pos, ctx) => {
|
|
15455
|
+
const savedCap = ctx.captureTrivia;
|
|
15456
|
+
ctx.captureTrivia = true;
|
|
15457
|
+
const v = body(input, pos, ctx);
|
|
15458
|
+
ctx.captureTrivia = savedCap;
|
|
15459
|
+
return v;
|
|
15460
|
+
};
|
|
15461
|
+
}
|
|
15436
15462
|
const scopeTrivia = ki < 0 ? void 0 : trivia2[ki];
|
|
15437
15463
|
const scopeLabels = scopeTrivia?._meta.triviaKindLabels;
|
|
15438
15464
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? triviaScan[ki] : null;
|