parseman 0.26.1 → 0.26.3
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/compiler/codegen.d.ts.map +1 -1
- package/dist/compiler/ir-serialize.d.ts.map +1 -1
- package/dist/index.cjs +78 -24
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +78 -24
- package/dist/index.js.map +3 -3
- package/dist/plugin/evaluator.d.ts.map +1 -1
- package/dist/plugin/index.cjs +121 -25
- package/dist/plugin/index.cjs.map +4 -4
- package/dist/plugin/index.js +121 -25
- package/dist/plugin/index.js.map +4 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAa,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAA4B,MAAM,aAAa,CAAA;AA0BnI;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,uTAC0R,CAAA;AActT,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAI7C;AAudD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,MAAM,CAQlE;AAcD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAA0B;
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/compiler/codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir-serialize.d.ts","sourceRoot":"","sources":["../../src/compiler/ir-serialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"ir-serialize.d.ts","sourceRoot":"","sources":["../../src/compiler/ir-serialize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;AAkBxD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AA4C/B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAC9C,MAAM,GAAG,IAAI,CAUf;AAED;;oFAEoF;AACpF,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAiF/D"}
|
package/dist/index.cjs
CHANGED
|
@@ -5635,7 +5635,7 @@ function emitDispatch(p, ctx, pos) {
|
|
|
5635
5635
|
ctx.indent = 1;
|
|
5636
5636
|
ctx.failLabel = "_pfail";
|
|
5637
5637
|
ctx.recordFail = true;
|
|
5638
|
-
const innerR =
|
|
5638
|
+
const innerR = emitDispatch(innerParser, ctx, "_pos");
|
|
5639
5639
|
ctx.indent = savedIndent;
|
|
5640
5640
|
ctx.failLabel = savedFailLabel;
|
|
5641
5641
|
ctx.recordFail = savedRecord;
|
|
@@ -6267,6 +6267,23 @@ function escapeClassChar(ch) {
|
|
|
6267
6267
|
return ch.replace(/[\\\]^-]/g, "\\$&");
|
|
6268
6268
|
}
|
|
6269
6269
|
|
|
6270
|
+
// src/combinators/withCtx.ts
|
|
6271
|
+
function withCtx(extra, combinator) {
|
|
6272
|
+
const meta = {
|
|
6273
|
+
firstSet: combinator._meta.firstSet,
|
|
6274
|
+
canMatchNewline: combinator._meta.canMatchNewline,
|
|
6275
|
+
isTrivia: false
|
|
6276
|
+
};
|
|
6277
|
+
return {
|
|
6278
|
+
_tag: "withCtx",
|
|
6279
|
+
_meta: meta,
|
|
6280
|
+
_def: { tag: "withCtx", extra, parser: combinator },
|
|
6281
|
+
parse(input, pos, ctx) {
|
|
6282
|
+
return combinator.parse(input, pos, { ...ctx, state: extra });
|
|
6283
|
+
}
|
|
6284
|
+
};
|
|
6285
|
+
}
|
|
6286
|
+
|
|
6270
6287
|
// src/compiler/ir-serialize.ts
|
|
6271
6288
|
function childrenOf2(def) {
|
|
6272
6289
|
switch (def.tag) {
|
|
@@ -6283,6 +6300,7 @@ function childrenOf2(def) {
|
|
|
6283
6300
|
case "field":
|
|
6284
6301
|
case "not":
|
|
6285
6302
|
case "node":
|
|
6303
|
+
case "withCtx":
|
|
6286
6304
|
case "expect":
|
|
6287
6305
|
return [def.parser];
|
|
6288
6306
|
case "grammar":
|
|
@@ -6298,7 +6316,6 @@ function childrenOf2(def) {
|
|
|
6298
6316
|
case "regex":
|
|
6299
6317
|
case "keywords":
|
|
6300
6318
|
case "guard":
|
|
6301
|
-
case "withCtx":
|
|
6302
6319
|
case "recover":
|
|
6303
6320
|
case "unknown":
|
|
6304
6321
|
return [];
|
|
@@ -6345,6 +6362,45 @@ function evalRuleMapIR(ir) {
|
|
|
6345
6362
|
n._def.buildSrc = src;
|
|
6346
6363
|
return n;
|
|
6347
6364
|
};
|
|
6365
|
+
const _gch = (items) => {
|
|
6366
|
+
const gateSrcs = [];
|
|
6367
|
+
const arms = items.map((it) => {
|
|
6368
|
+
if (Array.isArray(it)) {
|
|
6369
|
+
const [src, comb] = it;
|
|
6370
|
+
gateSrcs.push(src);
|
|
6371
|
+
let gate;
|
|
6372
|
+
try {
|
|
6373
|
+
gate = (0, eval)(`(${src})`);
|
|
6374
|
+
} catch {
|
|
6375
|
+
gate = () => {
|
|
6376
|
+
throw new Error("IR gate fn not materialized");
|
|
6377
|
+
};
|
|
6378
|
+
}
|
|
6379
|
+
return { gate, combinator: comb };
|
|
6380
|
+
}
|
|
6381
|
+
gateSrcs.push(null);
|
|
6382
|
+
return it;
|
|
6383
|
+
});
|
|
6384
|
+
const c = choice(...arms);
|
|
6385
|
+
const gates = c._def.gates;
|
|
6386
|
+
if (gates && gates.length !== gateSrcs.length) {
|
|
6387
|
+
throw new Error(`_gch: gateSrcs length ${gateSrcs.length} != choice gates length ${gates.length}`);
|
|
6388
|
+
}
|
|
6389
|
+
;
|
|
6390
|
+
c._def.gateSrcs = gateSrcs;
|
|
6391
|
+
return c;
|
|
6392
|
+
};
|
|
6393
|
+
const _wc = (src, inner) => {
|
|
6394
|
+
let extra;
|
|
6395
|
+
try {
|
|
6396
|
+
extra = (0, eval)(`(${src})`);
|
|
6397
|
+
} catch {
|
|
6398
|
+
extra = void 0;
|
|
6399
|
+
}
|
|
6400
|
+
const w = withCtx(extra, inner);
|
|
6401
|
+
w._def.extraSrc = src;
|
|
6402
|
+
return w;
|
|
6403
|
+
};
|
|
6348
6404
|
const fn = new Function(
|
|
6349
6405
|
"rules",
|
|
6350
6406
|
"ref",
|
|
@@ -6370,6 +6426,8 @@ function evalRuleMapIR(ir) {
|
|
|
6370
6426
|
"expect",
|
|
6371
6427
|
"_tf",
|
|
6372
6428
|
"_nd",
|
|
6429
|
+
"_gch",
|
|
6430
|
+
"_wc",
|
|
6373
6431
|
`return (${ir})`
|
|
6374
6432
|
);
|
|
6375
6433
|
const map = fn(
|
|
@@ -6396,7 +6454,9 @@ function evalRuleMapIR(ir) {
|
|
|
6396
6454
|
field,
|
|
6397
6455
|
expect,
|
|
6398
6456
|
_tf,
|
|
6399
|
-
_nd
|
|
6457
|
+
_nd,
|
|
6458
|
+
_gch,
|
|
6459
|
+
_wc
|
|
6400
6460
|
);
|
|
6401
6461
|
return Object.entries(map);
|
|
6402
6462
|
}
|
|
@@ -6452,7 +6512,7 @@ ${body}
|
|
|
6452
6512
|
this.analyze(target, active);
|
|
6453
6513
|
return;
|
|
6454
6514
|
}
|
|
6455
|
-
if (def.tag === "guard" || def.tag === "
|
|
6515
|
+
if (def.tag === "guard" || def.tag === "recover" || def.tag === "unknown") {
|
|
6456
6516
|
throw new Unserializable(`unsupported tag ${def.tag}`);
|
|
6457
6517
|
}
|
|
6458
6518
|
this.counts.set(c, (this.counts.get(c) ?? 0) + 1);
|
|
@@ -6508,8 +6568,16 @@ ${body}
|
|
|
6508
6568
|
case "sequence":
|
|
6509
6569
|
return `sequence(${def.parsers.map(kid).join(", ")})`;
|
|
6510
6570
|
case "choice": {
|
|
6511
|
-
|
|
6512
|
-
return `choice(${def.parsers.map(kid).join(", ")})`;
|
|
6571
|
+
const gates = def.gates;
|
|
6572
|
+
if (gates.every((g) => g === null)) return `choice(${def.parsers.map(kid).join(", ")})`;
|
|
6573
|
+
const gateSrcs = def.gateSrcs;
|
|
6574
|
+
const items = def.parsers.map((p, i) => {
|
|
6575
|
+
if (gates[i] === null) return kid(p);
|
|
6576
|
+
const src = gateSrcs?.[i];
|
|
6577
|
+
if (src == null) throw new Unserializable("choice gate() has no captured source");
|
|
6578
|
+
return `[${JSON.stringify(src)}, ${kid(p)}]`;
|
|
6579
|
+
});
|
|
6580
|
+
return `_gch([${items.join(", ")}])`;
|
|
6513
6581
|
}
|
|
6514
6582
|
case "many":
|
|
6515
6583
|
return `many(${kid(def.parser)})`;
|
|
@@ -6553,8 +6621,11 @@ ${body}
|
|
|
6553
6621
|
const trivia2 = def.clearTrivia ? "null" : def.triviaParser ? kid(def.triviaParser) : "undefined";
|
|
6554
6622
|
return `parser({ trivia: ${trivia2}${def.trackLines ? ", trackLines: true" : ""} }, ${kid(def.parser)})`;
|
|
6555
6623
|
}
|
|
6624
|
+
case "withCtx": {
|
|
6625
|
+
if (def.extraSrc === void 0) throw new Unserializable("withCtx without extraSrc");
|
|
6626
|
+
return `_wc(${JSON.stringify(def.extraSrc)}, ${kid(def.parser)})`;
|
|
6627
|
+
}
|
|
6556
6628
|
case "guard":
|
|
6557
|
-
case "withCtx":
|
|
6558
6629
|
case "recover":
|
|
6559
6630
|
case "unknown":
|
|
6560
6631
|
throw new Unserializable(`unsupported tag ${def.tag}`);
|
|
@@ -6728,23 +6799,6 @@ function guard(predicate) {
|
|
|
6728
6799
|
};
|
|
6729
6800
|
}
|
|
6730
6801
|
|
|
6731
|
-
// src/combinators/withCtx.ts
|
|
6732
|
-
function withCtx(extra, combinator) {
|
|
6733
|
-
const meta = {
|
|
6734
|
-
firstSet: combinator._meta.firstSet,
|
|
6735
|
-
canMatchNewline: combinator._meta.canMatchNewline,
|
|
6736
|
-
isTrivia: false
|
|
6737
|
-
};
|
|
6738
|
-
return {
|
|
6739
|
-
_tag: "withCtx",
|
|
6740
|
-
_meta: meta,
|
|
6741
|
-
_def: { tag: "withCtx", extra, parser: combinator },
|
|
6742
|
-
parse(input, pos, ctx) {
|
|
6743
|
-
return combinator.parse(input, pos, { ...ctx, state: extra });
|
|
6744
|
-
}
|
|
6745
|
-
};
|
|
6746
|
-
}
|
|
6747
|
-
|
|
6748
6802
|
// src/combinators/completions.ts
|
|
6749
6803
|
function completionsAt(target, input, offset, options = {}) {
|
|
6750
6804
|
const probe = { offset, best: null };
|