parseman 0.51.1 → 0.51.2
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 +48 -15
- package/dist/analysis/diagnostics.js.map +1 -1
- package/dist/cli/index.js +50 -17
- package/dist/cli/index.js.map +1 -1
- package/dist/combinators/token.d.ts +8 -8
- package/dist/combinators/token.d.ts.map +1 -1
- package/dist/coverage.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -19
- package/dist/index.js.map +1 -1
- package/dist/plugin/evaluator.d.ts.map +1 -1
- package/dist/plugin/index.js +53 -20
- package/dist/plugin/index.js.map +1 -1
- package/dist/spec/index.js +27 -5
- package/dist/spec/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-baseline.d.ts.map +1 -1
- package/dist/table/exec-baseline.d.ts.map +1 -1
- package/dist/table/exec.d.ts.map +1 -1
- package/dist/table/index.js +373 -362
- package/dist/table/index.js.map +2 -2
- package/dist/table/ops.d.ts +2 -0
- package/dist/table/ops.d.ts.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/analysis/duplication.ts +1 -1
- package/src/analysis/rebuild.ts +2 -2
- package/src/combinators/token.ts +46 -3
- package/src/compiler/ir-serialize.ts +4 -4
- package/src/coverage.ts +2 -3
- package/src/index.ts +1 -1
- package/src/plugin/evaluator.ts +7 -4
- package/src/table/assemble.ts +8 -3
- package/src/table/child-slots.ts +2 -2
- package/src/table/emit-assembly.ts +5 -3
- package/src/table/encode-baseline.ts +3 -2
- package/src/table/encode.ts +3 -3
- package/src/table/exec-baseline.ts +30 -4
- package/src/table/exec.ts +8 -3
- package/src/table/ops.ts +3 -1
- package/src/table/scalar-terminal.ts +5 -5
- package/src/table/site-labels.ts +2 -2
- package/src/types.ts +1 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/plugin/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EACV,UAAU,EAAE,IAAI,EAMjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAmG5D,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,EAAE,WAAW,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI,CAGrG;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAA;AAEjG,uGAAuG;AACvG,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAE9E;AAWD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AACD,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAM3C,KAAK,gBAAgB,GAAG;IAAE,GAAG,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAA;AAC1F,KAAK,gBAAgB,GAAG;IAAE,GAAG,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAA;AAuHxE;;;;;;;;;;;;;;;yCAeyC;AACzC,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAM/F;
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/plugin/evaluator.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -5113,6 +5113,12 @@ function field(name, combinator) {
|
|
|
5113
5113
|
}
|
|
5114
5114
|
|
|
5115
5115
|
// src/combinators/token.ts
|
|
5116
|
+
function semanticLeafValue(_ctx, _input, _start, _end, value) {
|
|
5117
|
+
return value;
|
|
5118
|
+
}
|
|
5119
|
+
function sourceLeafValue(ctx, input, start, end, value) {
|
|
5120
|
+
return cstOutputHost(ctx.build) ? input.slice(start, end) : value;
|
|
5121
|
+
}
|
|
5116
5122
|
function token(root) {
|
|
5117
5123
|
const meta = {
|
|
5118
5124
|
firstSet: root._meta.firstSet,
|
|
@@ -5165,7 +5171,8 @@ function token(root) {
|
|
|
5165
5171
|
}
|
|
5166
5172
|
};
|
|
5167
5173
|
}
|
|
5168
|
-
function
|
|
5174
|
+
function makeLeaf(root, fn, sourceCstValue) {
|
|
5175
|
+
const cstValue = sourceCstValue ? sourceLeafValue : semanticLeafValue;
|
|
5169
5176
|
const meta = {
|
|
5170
5177
|
firstSet: root._meta.firstSet,
|
|
5171
5178
|
canMatchNewline: root._meta.canMatchNewline,
|
|
@@ -5174,7 +5181,12 @@ function leaf(root, fn) {
|
|
|
5174
5181
|
return {
|
|
5175
5182
|
_tag: "leaf",
|
|
5176
5183
|
_meta: meta,
|
|
5177
|
-
_def: {
|
|
5184
|
+
_def: {
|
|
5185
|
+
tag: "leaf",
|
|
5186
|
+
parser: root,
|
|
5187
|
+
fn,
|
|
5188
|
+
...sourceCstValue ? { cstValue: "source" } : {}
|
|
5189
|
+
},
|
|
5178
5190
|
parse(input, pos, ctx) {
|
|
5179
5191
|
const savedBuf = ctx._cstBuf;
|
|
5180
5192
|
const savedChildren = ctx._cstChildren;
|
|
@@ -5202,11 +5214,21 @@ function leaf(root, fn) {
|
|
|
5202
5214
|
}
|
|
5203
5215
|
if (!result.ok) return result;
|
|
5204
5216
|
const value = fn(result.value, result.span);
|
|
5205
|
-
if (wasCapturing) pushCstLeaf(ctx, {
|
|
5217
|
+
if (wasCapturing) pushCstLeaf(ctx, {
|
|
5218
|
+
_tag: "leaf",
|
|
5219
|
+
value: cstValue(ctx, input, pos, result.span.end, value),
|
|
5220
|
+
span: result.span
|
|
5221
|
+
});
|
|
5206
5222
|
return { ok: true, value, span: result.span };
|
|
5207
5223
|
}
|
|
5208
5224
|
};
|
|
5209
5225
|
}
|
|
5226
|
+
function leaf(root, fn) {
|
|
5227
|
+
return makeLeaf(root, fn, false);
|
|
5228
|
+
}
|
|
5229
|
+
function sourceLeaf(root, fn) {
|
|
5230
|
+
return makeLeaf(root, fn, true);
|
|
5231
|
+
}
|
|
5210
5232
|
|
|
5211
5233
|
// src/analysis/gating.ts
|
|
5212
5234
|
function childrenOf2(d) {
|
|
@@ -5698,6 +5720,7 @@ var OP_COV = 40;
|
|
|
5698
5720
|
var OP_SCOPE_PLAIN = 41;
|
|
5699
5721
|
var OP_LEX_BODY = 42;
|
|
5700
5722
|
var OP_LEX_PROGRAM = 43;
|
|
5723
|
+
var OP_SOURCE_LEAF = 44;
|
|
5701
5724
|
var OP_DISPATCH = 25;
|
|
5702
5725
|
var OP_ROUTED = 26;
|
|
5703
5726
|
var OP_NAMES = {
|
|
@@ -5716,6 +5739,7 @@ var OP_NAMES = {
|
|
|
5716
5739
|
[OP_NOT]: "NOT",
|
|
5717
5740
|
[OP_PEEK]: "PEEK",
|
|
5718
5741
|
[OP_LEAF]: "LEAF",
|
|
5742
|
+
[OP_SOURCE_LEAF]: "SOURCE_LEAF",
|
|
5719
5743
|
[OP_EMPTY]: "EMPTY",
|
|
5720
5744
|
[OP_LIT_TRACK]: "LIT_TRACK",
|
|
5721
5745
|
[OP_RX_TRACK]: "RX_TRACK",
|
|
@@ -7668,7 +7692,7 @@ var Encoder = class {
|
|
|
7668
7692
|
}
|
|
7669
7693
|
case "leaf": {
|
|
7670
7694
|
const child = this.node(d.parser).ip;
|
|
7671
|
-
return this.emit(OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
|
|
7695
|
+
return this.emit(d.cstValue === "source" ? OP_SOURCE_LEAF : OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
|
|
7672
7696
|
}
|
|
7673
7697
|
case "node": {
|
|
7674
7698
|
if (d.type === void 0) missingInferredType();
|
|
@@ -7893,6 +7917,7 @@ var Encoder = class {
|
|
|
7893
7917
|
case OP_WITHCTX:
|
|
7894
7918
|
case OP_XFORM:
|
|
7895
7919
|
case OP_LEAF:
|
|
7920
|
+
case OP_SOURCE_LEAF:
|
|
7896
7921
|
case OP_NODE:
|
|
7897
7922
|
case OP_NODE_TRACK:
|
|
7898
7923
|
return [ip + 2];
|
|
@@ -9102,6 +9127,7 @@ function childSlots(code, ip, out) {
|
|
|
9102
9127
|
case OP_NODE_TRACK:
|
|
9103
9128
|
case OP_FIELD:
|
|
9104
9129
|
case OP_LEAF:
|
|
9130
|
+
case OP_SOURCE_LEAF:
|
|
9105
9131
|
case OP_ARMGATE:
|
|
9106
9132
|
out.push(code[ip + 2]);
|
|
9107
9133
|
return true;
|
|
@@ -9210,7 +9236,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
9210
9236
|
if (at.tri === TRI_NONE && !at.buf) return at;
|
|
9211
9237
|
return { tri: TRI_NONE, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
|
|
9212
9238
|
}
|
|
9213
|
-
if (op === OP_LEAF) {
|
|
9239
|
+
if (op === OP_LEAF || op === OP_SOURCE_LEAF) {
|
|
9214
9240
|
if (!at.buf) return at;
|
|
9215
9241
|
return { tri: at.tri, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
|
|
9216
9242
|
}
|
|
@@ -9297,7 +9323,7 @@ function leadingScalarTerminal(code, ip, minDepth = 2, throughAttempt = true, th
|
|
|
9297
9323
|
depth++;
|
|
9298
9324
|
continue;
|
|
9299
9325
|
}
|
|
9300
|
-
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9326
|
+
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9301
9327
|
at = code[at + 2];
|
|
9302
9328
|
depth++;
|
|
9303
9329
|
continue;
|
|
@@ -9330,7 +9356,7 @@ function leadingScalarSequence(code, ip) {
|
|
|
9330
9356
|
at2 = code[at2 + 1];
|
|
9331
9357
|
continue;
|
|
9332
9358
|
}
|
|
9333
|
-
if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9359
|
+
if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9334
9360
|
at2 = code[at2 + 2];
|
|
9335
9361
|
continue;
|
|
9336
9362
|
}
|
|
@@ -9363,7 +9389,7 @@ function leadingScalarSequence(code, ip) {
|
|
|
9363
9389
|
at = code[at + 2];
|
|
9364
9390
|
continue;
|
|
9365
9391
|
}
|
|
9366
|
-
if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9392
|
+
if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9367
9393
|
at = code[at + 2];
|
|
9368
9394
|
continue;
|
|
9369
9395
|
}
|
|
@@ -9393,7 +9419,7 @@ function leadingLiteralFamily(code, constants, ip, minDepth = 2, limit = 4) {
|
|
|
9393
9419
|
if (op === OP_RULE || op === OP_LABEL || op === OP_TOKEN || op === OP_ATTEMPT || op === OP_PEEK) {
|
|
9394
9420
|
return walk(code[at + 1], depth + 1);
|
|
9395
9421
|
}
|
|
9396
|
-
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9422
|
+
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9397
9423
|
return walk(code[at + 2], depth + 1);
|
|
9398
9424
|
}
|
|
9399
9425
|
if (op === OP_SEQ || op === OP_SEQV) {
|
|
@@ -10279,8 +10305,10 @@ ${rootCap ? "ctx._rootTriviaCapture=sR\n" : ""}return v
|
|
|
10279
10305
|
}
|
|
10280
10306
|
/* ── boundaries ──────────────────────────────────────────────────────── */
|
|
10281
10307
|
case OP_TOKEN:
|
|
10282
|
-
case OP_LEAF:
|
|
10308
|
+
case OP_LEAF:
|
|
10309
|
+
case OP_SOURCE_LEAF: {
|
|
10283
10310
|
const isToken = op === OP_TOKEN;
|
|
10311
|
+
const capturesSource = isToken || op === OP_SOURCE_LEAF && hostCst;
|
|
10284
10312
|
const fn = isToken ? void 0 : fnRef(code[ip + 1]);
|
|
10285
10313
|
const child = link(isToken ? code[ip + 1] : code[ip + 2]);
|
|
10286
10314
|
const wasCap = L.buf ? "true" : "(ctx._cstBuf!==undefined||ctx._cstLeaves!==undefined)";
|
|
@@ -10313,7 +10341,7 @@ ctx._triviaLog=sOtl
|
|
|
10313
10341
|
if(v===FAIL)return FAIL
|
|
10314
10342
|
const e=EC.e
|
|
10315
10343
|
const out=${isToken ? "input.slice(pos,e)" : `${fn}(v,{start:pos,end:e})`}
|
|
10316
|
-
if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:out,span:{start:pos,end:e}})
|
|
10344
|
+
if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:${capturesSource ? "input.slice(pos,e)" : "out"},span:{start:pos,end:e}})
|
|
10317
10345
|
EC.e=e
|
|
10318
10346
|
return out
|
|
10319
10347
|
}`;
|
|
@@ -12970,7 +12998,8 @@ function assemble(t, prog, cfg) {
|
|
|
12970
12998
|
return value;
|
|
12971
12999
|
};
|
|
12972
13000
|
}
|
|
12973
|
-
case OP_LEAF:
|
|
13001
|
+
case OP_LEAF:
|
|
13002
|
+
case OP_SOURCE_LEAF: {
|
|
12974
13003
|
const fn = fns[code[ip + 1]];
|
|
12975
13004
|
const child = link(code[ip + 2]);
|
|
12976
13005
|
return (input, pos, ctx) => {
|
|
@@ -12998,7 +13027,11 @@ function assemble(t, prog, cfg) {
|
|
|
12998
13027
|
if (v === FAIL) return FAIL;
|
|
12999
13028
|
const end = EC.e;
|
|
13000
13029
|
const out = fn(v, { start: pos, end });
|
|
13001
|
-
if (wasCapturing) pushCstLeaf(ctx, {
|
|
13030
|
+
if (wasCapturing) pushCstLeaf(ctx, {
|
|
13031
|
+
_tag: "leaf",
|
|
13032
|
+
value: op === OP_SOURCE_LEAF && hostCst ? input.slice(pos, end) : out,
|
|
13033
|
+
span: { start: pos, end }
|
|
13034
|
+
});
|
|
13002
13035
|
EC.e = end;
|
|
13003
13036
|
return out;
|
|
13004
13037
|
};
|
|
@@ -15039,7 +15072,7 @@ function payloadKey(p, d) {
|
|
|
15039
15072
|
case "transform":
|
|
15040
15073
|
return `transform\0${fnKey(d.fnSrc, d.fn)}\0${d.recognitionOnly === true}`;
|
|
15041
15074
|
case "leaf":
|
|
15042
|
-
return `leaf\0${fnKey(d.fnSrc, d.fn)}`;
|
|
15075
|
+
return `leaf\0${d.cstValue ?? "value"}\0${fnKey(d.fnSrc, d.fn)}`;
|
|
15043
15076
|
case "many":
|
|
15044
15077
|
case "oneOrMore":
|
|
15045
15078
|
return `${d.tag}\0${d.min}\0${d.max ?? ""}`;
|
|
@@ -16528,7 +16561,7 @@ function evalRuleMapIR(ir) {
|
|
|
16528
16561
|
if (recognitionOnly) t._def.recognitionOnly = true;
|
|
16529
16562
|
return t;
|
|
16530
16563
|
};
|
|
16531
|
-
const _lf = (child, src) => {
|
|
16564
|
+
const _lf = (child, src, source = false) => {
|
|
16532
16565
|
let fn2;
|
|
16533
16566
|
try {
|
|
16534
16567
|
fn2 = (0, eval)(`(${src})`);
|
|
@@ -16537,7 +16570,7 @@ function evalRuleMapIR(ir) {
|
|
|
16537
16570
|
throw new Error("IR leaf fn not materialized");
|
|
16538
16571
|
};
|
|
16539
16572
|
}
|
|
16540
|
-
const l = leaf(child, fn2);
|
|
16573
|
+
const l = source ? sourceLeaf(child, fn2) : leaf(child, fn2);
|
|
16541
16574
|
l._def.fnSrc = src;
|
|
16542
16575
|
return l;
|
|
16543
16576
|
};
|
|
@@ -16940,7 +16973,7 @@ ${outerDecls.map((d) => " " + d).join("\n")}
|
|
|
16940
16973
|
return `token(${kid(def.parser)})`;
|
|
16941
16974
|
case "leaf": {
|
|
16942
16975
|
if (def.fnSrc === void 0) throw new Unserializable("leaf without fnSrc");
|
|
16943
|
-
return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)})`;
|
|
16976
|
+
return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)}${def.cstValue === "source" ? ", true" : ""})`;
|
|
16944
16977
|
}
|
|
16945
16978
|
case "label":
|
|
16946
16979
|
return `label(${JSON.stringify(def.label)}, ${kid(def.parser)})`;
|
|
@@ -17129,7 +17162,7 @@ function compileRuleMap(ruleMap, opts = {}) {
|
|
|
17129
17162
|
}
|
|
17130
17163
|
|
|
17131
17164
|
// src/version.ts
|
|
17132
|
-
var PARSEMAN_VERSION = "0.51.
|
|
17165
|
+
var PARSEMAN_VERSION = "0.51.2";
|
|
17133
17166
|
|
|
17134
17167
|
// src/compiler/compile-linkable-table.ts
|
|
17135
17168
|
function isLocal(rule) {
|
|
@@ -17852,7 +17885,7 @@ function exprToCombi(node2, scope, code, mfs) {
|
|
|
17852
17885
|
return null;
|
|
17853
17886
|
}
|
|
17854
17887
|
}
|
|
17855
|
-
if (callee.name === "leaf" && code !== void 0 && mfs !== void 0) {
|
|
17888
|
+
if ((callee.name === "leaf" || callee.name === "sourceLeaf") && code !== void 0 && mfs !== void 0) {
|
|
17856
17889
|
const [parserArg, fnArg] = node2.arguments;
|
|
17857
17890
|
if (!parserArg || !fnArg || parserArg.type === "SpreadElement" || fnArg.type === "SpreadElement") return null;
|
|
17858
17891
|
const inner = anyValue(parserArg, scope, code, mfs);
|
|
@@ -17860,7 +17893,7 @@ function exprToCombi(node2, scope, code, mfs) {
|
|
|
17860
17893
|
const fnSrc = stripTsFromSource(fnArg, code);
|
|
17861
17894
|
mfs.push(fnSrc);
|
|
17862
17895
|
try {
|
|
17863
|
-
const combi = leaf(inner, (v) => v);
|
|
17896
|
+
const combi = callee.name === "sourceLeaf" ? sourceLeaf(inner, (v) => v) : leaf(inner, (v) => v);
|
|
17864
17897
|
if (combi._def.tag === "leaf") combi._def.fnSrc = fnSrc;
|
|
17865
17898
|
return combi;
|
|
17866
17899
|
} catch {
|