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/plugin/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":
|
|
@@ -1782,7 +1788,7 @@ function parser(opts, root) {
|
|
|
1782
1788
|
ctx.triviaKindLabels = void 0;
|
|
1783
1789
|
} else if (scopeTrivia !== void 0) {
|
|
1784
1790
|
ctx.trivia = scopeTrivia;
|
|
1785
|
-
|
|
1791
|
+
ctx.triviaKindLabels = scopeLabels;
|
|
1786
1792
|
}
|
|
1787
1793
|
if (forceCaptureTrivia || _ctx?.captureTrivia) ctx.captureTrivia = true;
|
|
1788
1794
|
if (ownCaptureMask !== void 0) ctx._triviaCaptureMask = ownCaptureMask;
|
|
@@ -7148,6 +7154,7 @@ var OP_LIT_CI = 27;
|
|
|
7148
7154
|
var OP_LIT_CI_TRACK = 28;
|
|
7149
7155
|
var OP_TOKEN = 29;
|
|
7150
7156
|
var OP_SCOPE_CAP = 30;
|
|
7157
|
+
var SCOPE_INHERIT = -2;
|
|
7151
7158
|
var OP_WITHCTX = 31;
|
|
7152
7159
|
var OP_GUARD = 32;
|
|
7153
7160
|
var OP_ADJ = 33;
|
|
@@ -9180,7 +9187,7 @@ var Encoder = class {
|
|
|
9180
9187
|
this.triviaKnown = savedKnown;
|
|
9181
9188
|
if (d.clearTrivia === true) return this.emit(op, -1, bodyIp, flags);
|
|
9182
9189
|
if (d.triviaParser === void 0) {
|
|
9183
|
-
return cap
|
|
9190
|
+
return cap ? this.emit(op, SCOPE_INHERIT, bodyIp, flags) : bodyIp;
|
|
9184
9191
|
}
|
|
9185
9192
|
return this.emit(op, this.triviaSlot(d.triviaParser), bodyIp, flags);
|
|
9186
9193
|
}
|
|
@@ -10572,7 +10579,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
10572
10579
|
const op = code[ip];
|
|
10573
10580
|
if (op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN) {
|
|
10574
10581
|
const ki = code[ip + 1];
|
|
10575
|
-
const tri = ki < 0 ? TRI_NONE : ki;
|
|
10582
|
+
const tri = ki === SCOPE_INHERIT ? at.tri : ki < 0 ? TRI_NONE : ki;
|
|
10576
10583
|
const cap = op === OP_SCOPE_CAP ? CAP_ON : at.cap;
|
|
10577
10584
|
if (tri === at.tri && cap === at.cap) return at;
|
|
10578
10585
|
return { tri, buf: at.buf, raw: at.raw, cap };
|
|
@@ -10646,7 +10653,7 @@ function scanHandoffNeeded(code, ip, labels) {
|
|
|
10646
10653
|
if (l.tri === TRI_UNKNOWN) return true;
|
|
10647
10654
|
const op = code[at];
|
|
10648
10655
|
if (op === OP_SCAN) return true;
|
|
10649
|
-
if (op === OP_TOKEN || op === OP_SCOPE_CAP) continue;
|
|
10656
|
+
if (op === OP_TOKEN || op === OP_SCOPE_CAP && code[at + 1] !== SCOPE_INHERIT) continue;
|
|
10650
10657
|
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;
|
|
10651
10658
|
kids.length = 0;
|
|
10652
10659
|
if (!childSlots(code, at, kids)) return true;
|
|
@@ -11941,6 +11948,15 @@ return r.value
|
|
|
11941
11948
|
const cap = op === OP_SCOPE_CAP;
|
|
11942
11949
|
const flags = op === OP_SCOPE_PLAIN ? 0 : code[ip + 3];
|
|
11943
11950
|
const child = link(code[ip + 2]);
|
|
11951
|
+
if (ki === SCOPE_INHERIT) {
|
|
11952
|
+
return `${head}
|
|
11953
|
+
const sC=ctx.captureTrivia
|
|
11954
|
+
ctx.captureTrivia=true
|
|
11955
|
+
const v=${child}(input,pos,ctx)
|
|
11956
|
+
ctx.captureTrivia=sC
|
|
11957
|
+
return v
|
|
11958
|
+
}`;
|
|
11959
|
+
}
|
|
11944
11960
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? hoist("ts", `TRIVIASCAN[${ki}]`) : "null";
|
|
11945
11961
|
const tri = ki < 0 ? "undefined" : hoist("tv", `TRIVIA[${ki}]`);
|
|
11946
11962
|
const lab = ki < 0 ? "undefined" : hoist("tl", `TRIVIA[${ki}]._meta.triviaKindLabels`);
|
|
@@ -13530,7 +13546,7 @@ function clearOf(ranges, input, from, to) {
|
|
|
13530
13546
|
}
|
|
13531
13547
|
|
|
13532
13548
|
// src/version.ts
|
|
13533
|
-
var PARSEMAN_VERSION = "0.60.
|
|
13549
|
+
var PARSEMAN_VERSION = "0.60.6";
|
|
13534
13550
|
|
|
13535
13551
|
// src/table/assemble.ts
|
|
13536
13552
|
import { PlainBuf as PlainBuf2, PlainField, PlainLeaf as PlainLeaf9, PlainNode as PlainNode2, PlainSpan as PlainSpan10 } from "../cst/plain.js";
|
|
@@ -15060,6 +15076,16 @@ function assemble(t, prog, cfg) {
|
|
|
15060
15076
|
case OP_SCOPE_CAP:
|
|
15061
15077
|
case OP_SCOPE_PLAIN: {
|
|
15062
15078
|
const ki = code[ip + 1];
|
|
15079
|
+
if (ki === SCOPE_INHERIT) {
|
|
15080
|
+
const body = link(code[ip + 2]);
|
|
15081
|
+
return (input, pos, ctx) => {
|
|
15082
|
+
const savedCap = ctx.captureTrivia;
|
|
15083
|
+
ctx.captureTrivia = true;
|
|
15084
|
+
const v = body(input, pos, ctx);
|
|
15085
|
+
ctx.captureTrivia = savedCap;
|
|
15086
|
+
return v;
|
|
15087
|
+
};
|
|
15088
|
+
}
|
|
15063
15089
|
const scopeTrivia = ki < 0 ? void 0 : trivia2[ki];
|
|
15064
15090
|
const scopeLabels = scopeTrivia?._meta.triviaKindLabels;
|
|
15065
15091
|
const scanFor = swapLegal && ki >= 0 && !triviaLabelled[ki] ? triviaScan[ki] : null;
|