parseman 0.47.0 → 0.47.1
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.cjs +133 -45
- package/dist/analysis/diagnostics.cjs.map +2 -2
- package/dist/analysis/diagnostics.js +133 -45
- package/dist/analysis/diagnostics.js.map +2 -2
- package/dist/cli/index.cjs +133 -45
- package/dist/cli/index.cjs.map +2 -2
- package/dist/cli/index.js +133 -45
- package/dist/cli/index.js.map +2 -2
- package/dist/combinators/first-set.d.ts.map +1 -1
- package/dist/combinators/sequence.d.ts.map +1 -1
- package/dist/combinators/trivia-skip.d.ts +5 -0
- package/dist/combinators/trivia-skip.d.ts.map +1 -1
- package/dist/index.cjs +134 -46
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +134 -46
- package/dist/index.js.map +2 -2
- package/dist/language-service/index.cjs +3 -1
- package/dist/language-service/index.cjs.map +1 -1
- package/dist/language-service/index.js +3 -1
- package/dist/language-service/index.js.map +1 -1
- package/dist/plugin/index.cjs +134 -46
- package/dist/plugin/index.cjs.map +2 -2
- package/dist/plugin/index.js +134 -46
- package/dist/plugin/index.js.map +2 -2
- package/dist/spec/index.cjs +55 -7
- package/dist/spec/index.cjs.map +1 -1
- package/dist/spec/index.js +55 -7
- package/dist/spec/index.js.map +1 -1
- package/dist/table/assemble.d.ts.map +1 -1
- package/dist/table/emit-assembly.d.ts +2 -2
- package/dist/table/emit-assembly.d.ts.map +1 -1
- package/dist/table/emit.d.ts.map +1 -1
- package/dist/table/exec.d.ts.map +1 -1
- package/dist/table/index.cjs +1566 -1478
- package/dist/table/index.cjs.map +3 -3
- package/dist/table/index.js +1566 -1478
- package/dist/table/index.js.map +3 -3
- package/dist/table/ops.d.ts +8 -1
- package/dist/table/ops.d.ts.map +1 -1
- package/dist/table/program.d.ts +4 -1
- package/dist/table/program.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +2 -1
- package/src/combinators/first-set.ts +29 -3
- package/src/combinators/sequence.ts +23 -7
- package/src/combinators/trivia-skip.ts +31 -0
- package/src/table/assemble.ts +30 -18
- package/src/table/child-slots.ts +2 -2
- package/src/table/emit-assembly.ts +36 -25
- package/src/table/emit.ts +12 -1
- package/src/table/encode.ts +4 -4
- package/src/table/exec.ts +20 -12
- package/src/table/ops.ts +9 -1
- package/src/table/program.ts +22 -1
- package/src/table/site-labels.ts +2 -2
- package/src/table/stamp.ts +2 -2
- package/src/version.ts +1 -1
package/dist/spec/index.cjs
CHANGED
|
@@ -78,6 +78,13 @@ function empty() {
|
|
|
78
78
|
function matchesEmpty(p, seen = /* @__PURE__ */ new Set(), resolve) {
|
|
79
79
|
if (seen.has(p)) return true;
|
|
80
80
|
seen.add(p);
|
|
81
|
+
try {
|
|
82
|
+
return matchesEmptyBody(p, seen, resolve);
|
|
83
|
+
} finally {
|
|
84
|
+
seen.delete(p);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function matchesEmptyBody(p, seen, resolve) {
|
|
81
88
|
const me = (c) => matchesEmpty(c, seen, resolve);
|
|
82
89
|
const d = p._def;
|
|
83
90
|
switch (d.tag) {
|
|
@@ -179,6 +186,13 @@ function sequenceFirstSet(parsers) {
|
|
|
179
186
|
function firstSetOf(p, seen = /* @__PURE__ */ new Set(), resolve) {
|
|
180
187
|
if (seen.has(p)) return any();
|
|
181
188
|
seen.add(p);
|
|
189
|
+
try {
|
|
190
|
+
return firstSetBody(p, seen, resolve);
|
|
191
|
+
} finally {
|
|
192
|
+
seen.delete(p);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function firstSetBody(p, seen, resolve) {
|
|
182
196
|
const fs = (c) => firstSetOf(c, seen, resolve);
|
|
183
197
|
const empties = (c) => matchesEmpty(c, /* @__PURE__ */ new Set(), resolve);
|
|
184
198
|
const d = p._def;
|
|
@@ -2118,6 +2132,23 @@ function rollbackTrivia(ctx, mark) {
|
|
|
2118
2132
|
if (ctx._triviaLog && ctx._triviaLog.length !== mark.log) ctx._triviaLog.length = mark.log;
|
|
2119
2133
|
if (ctx._rootTriviaLog && ctx._rootTriviaLog.length !== mark.rootLog) ctx._rootTriviaLog.length = mark.rootLog;
|
|
2120
2134
|
}
|
|
2135
|
+
function removeNumberRange(values, start, end) {
|
|
2136
|
+
if (values === void 0 || end <= start) return;
|
|
2137
|
+
if (values.length > end) values.copyWithin(start, end);
|
|
2138
|
+
values.length -= end - start;
|
|
2139
|
+
}
|
|
2140
|
+
function rollbackScannedTriviaAt(ctx, tlogStart, tlogEnd, logStart, logEnd, rootLogStart, rootLogEnd) {
|
|
2141
|
+
const b = ctx._cstBuf;
|
|
2142
|
+
if (b !== void 0) {
|
|
2143
|
+
const tlog = b.tl;
|
|
2144
|
+
removeNumberRange(tlog, tlogStart, tlogEnd);
|
|
2145
|
+
if (tlog !== void 0 && tlog.length === 0) b.tl = void 0;
|
|
2146
|
+
} else {
|
|
2147
|
+
removeNumberRange(ctx._cstTriviaLog, tlogStart, tlogEnd);
|
|
2148
|
+
}
|
|
2149
|
+
removeNumberRange(ctx._triviaLog, logStart, logEnd);
|
|
2150
|
+
removeNumberRange(ctx._rootTriviaLog, rootLogStart, rootLogEnd);
|
|
2151
|
+
}
|
|
2121
2152
|
function parseTriviaNoCapture(triviaP, input, cur, ctx) {
|
|
2122
2153
|
const probeCtx = createDetachedParseContext(ctx.trackLines, ctx.state);
|
|
2123
2154
|
probeCtx._lineIndex = ctx._lineIndex;
|
|
@@ -2811,7 +2842,9 @@ function sequence(...parsers) {
|
|
|
2811
2842
|
continue;
|
|
2812
2843
|
}
|
|
2813
2844
|
if (ctx.trivia && i > 0) {
|
|
2814
|
-
const
|
|
2845
|
+
const mTlog = cstTlLen(ctx);
|
|
2846
|
+
const mLog = ctx._triviaLog?.length ?? 0;
|
|
2847
|
+
const mRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2815
2848
|
let scanEnd;
|
|
2816
2849
|
if (needsDeferredTriviaCommit(ctx)) {
|
|
2817
2850
|
const scan = scanTrivia(input, cur, ctx);
|
|
@@ -2820,10 +2853,13 @@ function sequence(...parsers) {
|
|
|
2820
2853
|
} else {
|
|
2821
2854
|
scanEnd = advanceTrivia(input, cur, ctx);
|
|
2822
2855
|
}
|
|
2856
|
+
const scanTlog = cstTlLen(ctx);
|
|
2857
|
+
const scanLog = ctx._triviaLog?.length ?? 0;
|
|
2858
|
+
const scanRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2823
2859
|
const result2 = parsers[i].parse(input, scanEnd, ctx);
|
|
2824
2860
|
if (!result2.ok) return result2;
|
|
2825
2861
|
if (result2.span.end > scanEnd) cur = result2.span.end;
|
|
2826
|
-
else
|
|
2862
|
+
else rollbackScannedTriviaAt(ctx, mTlog, scanTlog, mLog, scanLog, mRootLog, scanRootLog);
|
|
2827
2863
|
if (values !== void 0) values.push(result2.value);
|
|
2828
2864
|
continue;
|
|
2829
2865
|
}
|
|
@@ -2854,7 +2890,9 @@ function sequence(...parsers) {
|
|
|
2854
2890
|
}
|
|
2855
2891
|
if (ctx.trivia && i > 0) {
|
|
2856
2892
|
let scanEnd;
|
|
2857
|
-
const
|
|
2893
|
+
const mTlog = cstTlLen(ctx);
|
|
2894
|
+
const mLog = ctx._triviaLog?.length ?? 0;
|
|
2895
|
+
const mRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2858
2896
|
if (needsDeferredTriviaCommit(ctx)) {
|
|
2859
2897
|
const scan = scanTrivia(input, cur, ctx);
|
|
2860
2898
|
scan.commit();
|
|
@@ -2862,10 +2900,13 @@ function sequence(...parsers) {
|
|
|
2862
2900
|
} else {
|
|
2863
2901
|
scanEnd = advanceTrivia(input, cur, ctx);
|
|
2864
2902
|
}
|
|
2903
|
+
const scanTlog = cstTlLen(ctx);
|
|
2904
|
+
const scanLog = ctx._triviaLog?.length ?? 0;
|
|
2905
|
+
const scanRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2865
2906
|
const result2 = parsers[i].parse(input, scanEnd, ctx);
|
|
2866
2907
|
if (!result2.ok) return result2;
|
|
2867
2908
|
if (result2.span.end > scanEnd) cur = result2.span.end;
|
|
2868
|
-
else
|
|
2909
|
+
else rollbackScannedTriviaAt(ctx, mTlog, scanTlog, mLog, scanLog, mRootLog, scanRootLog);
|
|
2869
2910
|
if (values !== void 0) values.push(result2.value);
|
|
2870
2911
|
continue;
|
|
2871
2912
|
}
|
|
@@ -2893,7 +2934,9 @@ function sequence(...parsers) {
|
|
|
2893
2934
|
for (let i = 0; i < parsers.length; i++) {
|
|
2894
2935
|
if (ctx.trivia && i > 0) {
|
|
2895
2936
|
let scanEnd;
|
|
2896
|
-
|
|
2937
|
+
const mTlog = cstTlLen(ctx);
|
|
2938
|
+
const mLog = ctx._triviaLog?.length ?? 0;
|
|
2939
|
+
const mRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2897
2940
|
if (needsDeferredTriviaCommit(ctx)) {
|
|
2898
2941
|
const scan = scanTrivia(input, cur, ctx);
|
|
2899
2942
|
scan.commit();
|
|
@@ -2901,12 +2944,15 @@ function sequence(...parsers) {
|
|
|
2901
2944
|
} else {
|
|
2902
2945
|
scanEnd = advanceTrivia(input, cur, ctx);
|
|
2903
2946
|
}
|
|
2947
|
+
const scanTlog = cstTlLen(ctx);
|
|
2948
|
+
const scanLog = ctx._triviaLog?.length ?? 0;
|
|
2949
|
+
const scanRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2904
2950
|
const result2 = parsers[i].parse(input, scanEnd, ctx);
|
|
2905
2951
|
if (!result2.ok) return result2;
|
|
2906
2952
|
if (result2.span.end > scanEnd) {
|
|
2907
2953
|
cur = result2.span.end;
|
|
2908
2954
|
} else {
|
|
2909
|
-
|
|
2955
|
+
rollbackScannedTriviaAt(ctx, mTlog, scanTlog, mLog, scanLog, mRootLog, scanRootLog);
|
|
2910
2956
|
}
|
|
2911
2957
|
if (values !== void 0) values.push(result2.value);
|
|
2912
2958
|
continue;
|
|
@@ -4844,6 +4890,7 @@ var OP_LIVE = 37;
|
|
|
4844
4890
|
var OP_ATTEMPT = 38;
|
|
4845
4891
|
var OP_LABEL = 39;
|
|
4846
4892
|
var OP_COV = 40;
|
|
4893
|
+
var OP_SCOPE_PLAIN = 41;
|
|
4847
4894
|
var OP_DISPATCH = 25;
|
|
4848
4895
|
var OP_ROUTED = 26;
|
|
4849
4896
|
var OP_NAMES = {
|
|
@@ -4886,7 +4933,8 @@ var OP_NAMES = {
|
|
|
4886
4933
|
[OP_LIVE]: "LIVE",
|
|
4887
4934
|
[OP_ATTEMPT]: "ATTEMPT",
|
|
4888
4935
|
[OP_LABEL]: "LABEL",
|
|
4889
|
-
[OP_COV]: "COV"
|
|
4936
|
+
[OP_COV]: "COV",
|
|
4937
|
+
[OP_SCOPE_PLAIN]: "SCOPE_PLAIN"
|
|
4890
4938
|
};
|
|
4891
4939
|
|
|
4892
4940
|
// src/table/scan-shapes.ts
|