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.js
CHANGED
|
@@ -44,6 +44,13 @@ function empty() {
|
|
|
44
44
|
function matchesEmpty(p, seen = /* @__PURE__ */ new Set(), resolve) {
|
|
45
45
|
if (seen.has(p)) return true;
|
|
46
46
|
seen.add(p);
|
|
47
|
+
try {
|
|
48
|
+
return matchesEmptyBody(p, seen, resolve);
|
|
49
|
+
} finally {
|
|
50
|
+
seen.delete(p);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function matchesEmptyBody(p, seen, resolve) {
|
|
47
54
|
const me = (c) => matchesEmpty(c, seen, resolve);
|
|
48
55
|
const d = p._def;
|
|
49
56
|
switch (d.tag) {
|
|
@@ -145,6 +152,13 @@ function sequenceFirstSet(parsers) {
|
|
|
145
152
|
function firstSetOf(p, seen = /* @__PURE__ */ new Set(), resolve) {
|
|
146
153
|
if (seen.has(p)) return any();
|
|
147
154
|
seen.add(p);
|
|
155
|
+
try {
|
|
156
|
+
return firstSetBody(p, seen, resolve);
|
|
157
|
+
} finally {
|
|
158
|
+
seen.delete(p);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function firstSetBody(p, seen, resolve) {
|
|
148
162
|
const fs = (c) => firstSetOf(c, seen, resolve);
|
|
149
163
|
const empties = (c) => matchesEmpty(c, /* @__PURE__ */ new Set(), resolve);
|
|
150
164
|
const d = p._def;
|
|
@@ -2084,6 +2098,23 @@ function rollbackTrivia(ctx, mark) {
|
|
|
2084
2098
|
if (ctx._triviaLog && ctx._triviaLog.length !== mark.log) ctx._triviaLog.length = mark.log;
|
|
2085
2099
|
if (ctx._rootTriviaLog && ctx._rootTriviaLog.length !== mark.rootLog) ctx._rootTriviaLog.length = mark.rootLog;
|
|
2086
2100
|
}
|
|
2101
|
+
function removeNumberRange(values, start, end) {
|
|
2102
|
+
if (values === void 0 || end <= start) return;
|
|
2103
|
+
if (values.length > end) values.copyWithin(start, end);
|
|
2104
|
+
values.length -= end - start;
|
|
2105
|
+
}
|
|
2106
|
+
function rollbackScannedTriviaAt(ctx, tlogStart, tlogEnd, logStart, logEnd, rootLogStart, rootLogEnd) {
|
|
2107
|
+
const b = ctx._cstBuf;
|
|
2108
|
+
if (b !== void 0) {
|
|
2109
|
+
const tlog = b.tl;
|
|
2110
|
+
removeNumberRange(tlog, tlogStart, tlogEnd);
|
|
2111
|
+
if (tlog !== void 0 && tlog.length === 0) b.tl = void 0;
|
|
2112
|
+
} else {
|
|
2113
|
+
removeNumberRange(ctx._cstTriviaLog, tlogStart, tlogEnd);
|
|
2114
|
+
}
|
|
2115
|
+
removeNumberRange(ctx._triviaLog, logStart, logEnd);
|
|
2116
|
+
removeNumberRange(ctx._rootTriviaLog, rootLogStart, rootLogEnd);
|
|
2117
|
+
}
|
|
2087
2118
|
function parseTriviaNoCapture(triviaP, input, cur, ctx) {
|
|
2088
2119
|
const probeCtx = createDetachedParseContext(ctx.trackLines, ctx.state);
|
|
2089
2120
|
probeCtx._lineIndex = ctx._lineIndex;
|
|
@@ -2777,7 +2808,9 @@ function sequence(...parsers) {
|
|
|
2777
2808
|
continue;
|
|
2778
2809
|
}
|
|
2779
2810
|
if (ctx.trivia && i > 0) {
|
|
2780
|
-
const
|
|
2811
|
+
const mTlog = cstTlLen(ctx);
|
|
2812
|
+
const mLog = ctx._triviaLog?.length ?? 0;
|
|
2813
|
+
const mRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2781
2814
|
let scanEnd;
|
|
2782
2815
|
if (needsDeferredTriviaCommit(ctx)) {
|
|
2783
2816
|
const scan = scanTrivia(input, cur, ctx);
|
|
@@ -2786,10 +2819,13 @@ function sequence(...parsers) {
|
|
|
2786
2819
|
} else {
|
|
2787
2820
|
scanEnd = advanceTrivia(input, cur, ctx);
|
|
2788
2821
|
}
|
|
2822
|
+
const scanTlog = cstTlLen(ctx);
|
|
2823
|
+
const scanLog = ctx._triviaLog?.length ?? 0;
|
|
2824
|
+
const scanRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2789
2825
|
const result2 = parsers[i].parse(input, scanEnd, ctx);
|
|
2790
2826
|
if (!result2.ok) return result2;
|
|
2791
2827
|
if (result2.span.end > scanEnd) cur = result2.span.end;
|
|
2792
|
-
else
|
|
2828
|
+
else rollbackScannedTriviaAt(ctx, mTlog, scanTlog, mLog, scanLog, mRootLog, scanRootLog);
|
|
2793
2829
|
if (values !== void 0) values.push(result2.value);
|
|
2794
2830
|
continue;
|
|
2795
2831
|
}
|
|
@@ -2820,7 +2856,9 @@ function sequence(...parsers) {
|
|
|
2820
2856
|
}
|
|
2821
2857
|
if (ctx.trivia && i > 0) {
|
|
2822
2858
|
let scanEnd;
|
|
2823
|
-
const
|
|
2859
|
+
const mTlog = cstTlLen(ctx);
|
|
2860
|
+
const mLog = ctx._triviaLog?.length ?? 0;
|
|
2861
|
+
const mRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2824
2862
|
if (needsDeferredTriviaCommit(ctx)) {
|
|
2825
2863
|
const scan = scanTrivia(input, cur, ctx);
|
|
2826
2864
|
scan.commit();
|
|
@@ -2828,10 +2866,13 @@ function sequence(...parsers) {
|
|
|
2828
2866
|
} else {
|
|
2829
2867
|
scanEnd = advanceTrivia(input, cur, ctx);
|
|
2830
2868
|
}
|
|
2869
|
+
const scanTlog = cstTlLen(ctx);
|
|
2870
|
+
const scanLog = ctx._triviaLog?.length ?? 0;
|
|
2871
|
+
const scanRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2831
2872
|
const result2 = parsers[i].parse(input, scanEnd, ctx);
|
|
2832
2873
|
if (!result2.ok) return result2;
|
|
2833
2874
|
if (result2.span.end > scanEnd) cur = result2.span.end;
|
|
2834
|
-
else
|
|
2875
|
+
else rollbackScannedTriviaAt(ctx, mTlog, scanTlog, mLog, scanLog, mRootLog, scanRootLog);
|
|
2835
2876
|
if (values !== void 0) values.push(result2.value);
|
|
2836
2877
|
continue;
|
|
2837
2878
|
}
|
|
@@ -2859,7 +2900,9 @@ function sequence(...parsers) {
|
|
|
2859
2900
|
for (let i = 0; i < parsers.length; i++) {
|
|
2860
2901
|
if (ctx.trivia && i > 0) {
|
|
2861
2902
|
let scanEnd;
|
|
2862
|
-
|
|
2903
|
+
const mTlog = cstTlLen(ctx);
|
|
2904
|
+
const mLog = ctx._triviaLog?.length ?? 0;
|
|
2905
|
+
const mRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2863
2906
|
if (needsDeferredTriviaCommit(ctx)) {
|
|
2864
2907
|
const scan = scanTrivia(input, cur, ctx);
|
|
2865
2908
|
scan.commit();
|
|
@@ -2867,12 +2910,15 @@ function sequence(...parsers) {
|
|
|
2867
2910
|
} else {
|
|
2868
2911
|
scanEnd = advanceTrivia(input, cur, ctx);
|
|
2869
2912
|
}
|
|
2913
|
+
const scanTlog = cstTlLen(ctx);
|
|
2914
|
+
const scanLog = ctx._triviaLog?.length ?? 0;
|
|
2915
|
+
const scanRootLog = ctx._rootTriviaLog?.length ?? 0;
|
|
2870
2916
|
const result2 = parsers[i].parse(input, scanEnd, ctx);
|
|
2871
2917
|
if (!result2.ok) return result2;
|
|
2872
2918
|
if (result2.span.end > scanEnd) {
|
|
2873
2919
|
cur = result2.span.end;
|
|
2874
2920
|
} else {
|
|
2875
|
-
|
|
2921
|
+
rollbackScannedTriviaAt(ctx, mTlog, scanTlog, mLog, scanLog, mRootLog, scanRootLog);
|
|
2876
2922
|
}
|
|
2877
2923
|
if (values !== void 0) values.push(result2.value);
|
|
2878
2924
|
continue;
|
|
@@ -4810,6 +4856,7 @@ var OP_LIVE = 37;
|
|
|
4810
4856
|
var OP_ATTEMPT = 38;
|
|
4811
4857
|
var OP_LABEL = 39;
|
|
4812
4858
|
var OP_COV = 40;
|
|
4859
|
+
var OP_SCOPE_PLAIN = 41;
|
|
4813
4860
|
var OP_DISPATCH = 25;
|
|
4814
4861
|
var OP_ROUTED = 26;
|
|
4815
4862
|
var OP_NAMES = {
|
|
@@ -4852,7 +4899,8 @@ var OP_NAMES = {
|
|
|
4852
4899
|
[OP_LIVE]: "LIVE",
|
|
4853
4900
|
[OP_ATTEMPT]: "ATTEMPT",
|
|
4854
4901
|
[OP_LABEL]: "LABEL",
|
|
4855
|
-
[OP_COV]: "COV"
|
|
4902
|
+
[OP_COV]: "COV",
|
|
4903
|
+
[OP_SCOPE_PLAIN]: "SCOPE_PLAIN"
|
|
4856
4904
|
};
|
|
4857
4905
|
|
|
4858
4906
|
// src/table/scan-shapes.ts
|