parseman 0.50.7 → 0.51.0
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/choice-cost.d.ts.map +1 -1
- package/dist/analysis/commitment.d.ts.map +1 -1
- package/dist/analysis/diagnostics.js +165 -21
- package/dist/analysis/diagnostics.js.map +2 -2
- package/dist/analysis/duplication.d.ts.map +1 -1
- package/dist/analysis/gating.d.ts.map +1 -1
- package/dist/cli/index.js +171 -22
- package/dist/cli/index.js.map +2 -2
- package/dist/combinators/dispatch.d.ts.map +1 -1
- package/dist/combinators/scanTo.d.ts +23 -1
- package/dist/combinators/scanTo.d.ts.map +1 -1
- package/dist/compiler/fields.d.ts.map +1 -1
- package/dist/compiler/grammar-coverage-ids.d.ts.map +1 -1
- package/dist/compiler/ir-serialize.d.ts.map +1 -1
- package/dist/compiler/token-capability.js +2 -2
- package/dist/compiler/token-capability.js.map +1 -1
- package/dist/coverage.d.ts.map +1 -1
- package/dist/cst/reflection.d.ts.map +1 -1
- package/dist/index.js +192 -28
- package/dist/index.js.map +2 -2
- package/dist/plugin/index.js +179 -25
- package/dist/plugin/index.js.map +2 -2
- package/dist/spec/index.js +127 -12
- package/dist/spec/index.js.map +2 -2
- package/dist/table/assemble.d.ts.map +1 -1
- package/dist/table/emit.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 +171 -22
- package/dist/table/index.js.map +2 -2
- package/dist/table/program.d.ts +2 -0
- package/dist/table/program.d.ts.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/analysis/choice-cost.ts +6 -1
- package/src/analysis/commitment.ts +10 -2
- package/src/analysis/duplication.ts +7 -2
- package/src/analysis/gating.ts +6 -1
- package/src/analysis/rebuild.ts +1 -1
- package/src/combinators/dispatch.ts +4 -1
- package/src/combinators/scanTo.ts +163 -9
- package/src/compiler/fields.ts +8 -2
- package/src/compiler/grammar-coverage-ids.ts +6 -1
- package/src/compiler/ir-serialize.ts +7 -2
- package/src/compiler/token-alphabet.ts +1 -1
- package/src/coverage.ts +7 -1
- package/src/cst/reflection.ts +6 -1
- package/src/table/assemble.ts +11 -1
- package/src/table/emit.ts +4 -0
- package/src/table/encode.ts +6 -0
- package/src/table/exec.ts +7 -1
- package/src/table/program.ts +2 -0
- package/src/types.ts +1 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/table/assemble.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAsB,YAAY,EAA0B,MAAM,aAAa,CAAA;AAyCvG;;;;;;;;;;;;;GAaG;AACH,OAAO,EAGL,KAAK,cAAc,EAAsB,KAAK,aAAa,EAC1C,KAAK,YAAY,EAAE,KAAK,SAAS,EACnD,MAAM,cAAc,CAAA;AA4ErB;;;;;;;;;;;;;GAaG;AACH,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAA;AA+CvE;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;IACpE,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAA;AAiBD,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAA;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACrC;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/table/assemble.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAsB,YAAY,EAA0B,MAAM,aAAa,CAAA;AAyCvG;;;;;;;;;;;;;GAaG;AACH,OAAO,EAGL,KAAK,cAAc,EAAsB,KAAK,aAAa,EAC1C,KAAK,YAAY,EAAE,KAAK,SAAS,EACnD,MAAM,cAAc,CAAA;AA4ErB;;;;;;;;;;;;;GAaG;AACH,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAA;AA+CvE;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;IACpE,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAA;AAiBD,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAA;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACrC;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CA+7GpF;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0D;IAChF;;;;;;OAMG;IACH,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,cAAc,CAAyC;IAE/D,YAAY,IAAI,EAAE,YAAY,EAAE,QAAQ,GAAE,aAAkC,EAG3E;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CASzB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,QAAQ,CAkClC;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,YAAY,GAAG,cAAc,EACrC,gBAAgB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GACvD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAgD3B"}
|
package/dist/table/emit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/table/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG/D,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/table/emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG/D,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,eAAe,CAAA;AA2HnD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,CAMhE;AAoFD,MAAM,MAAM,WAAW,GAAG;IACxB,oCAAoC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAmED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,GAAE,WAAgB,GAAG,MAAM,CAYlF;AAED,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG;IAChD;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,GAAE,qBAA0B,GAAG,MAAM,CAWhG;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAClD,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CA0B5F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAExD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../src/table/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,UAAU,EAAuB,MAAM,aAAa,CAAA;AAwBhF,OAAO,KAAK,EAAmE,YAAY,EAAc,MAAM,cAAc,CAAA;AAS7H,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AA0B9E,8EAA8E;AAC9E,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,YAAY,GAAG,EAAE,MAAM,EAAqE;CAC7F;AAED,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CACxC,CAAA;
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../src/table/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,UAAU,EAAuB,MAAM,aAAa,CAAA;AAwBhF,OAAO,KAAK,EAAmE,YAAY,EAAc,MAAM,cAAc,CAAA;AAS7H,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AA0B9E,8EAA8E;AAC9E,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,YAAY,GAAG,EAAE,MAAM,EAAqE;CAC7F;AAED,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CACxC,CAAA;AA+tDD,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,EAC5C,QAAQ,GAAE,aAAkB,GAC3B,YAAY,CAEd;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,EAC5C,QAAQ,GAAE,aAAkB,GAC3B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;CAAE,CA+BnD"}
|
package/dist/table/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/table/exec.ts"],"names":[],"mappings":"AA6CA,OAAO,EAEL,KAAK,cAAc,EACF,KAAK,YAAY,EAAE,KAAK,SAAS,EACnD,MAAM,cAAc,CAAA;AA0BrB;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,+EAA+E;IAC/E,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAChC;;;;;;;;;;;OAWG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,sFAAsF;IACtF,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAA;CAC+H,CAAA;AAUrJ,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/table/exec.ts"],"names":[],"mappings":"AA6CA,OAAO,EAEL,KAAK,cAAc,EACF,KAAK,YAAY,EAAE,KAAK,SAAS,EACnD,MAAM,cAAc,CAAA;AA0BrB;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,+EAA+E;IAC/E,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAChC;;;;;;;;;;;OAWG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,sFAAsF;IACtF,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAA;CAC+H,CAAA;AAUrJ,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAkkDD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,YAAY,GAAG,cAAc;AACrC;;;;;;;;GAQG;AACH,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,EACjC,gBAAgB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GACvD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CA8B3B"}
|
package/dist/table/index.js
CHANGED
|
@@ -3500,7 +3500,7 @@ function resolveScanSkip(explicitSkip, raw, ctx) {
|
|
|
3500
3500
|
out.push(...explicitSkip);
|
|
3501
3501
|
return out;
|
|
3502
3502
|
}
|
|
3503
|
-
function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
|
|
3503
|
+
function scanTo(sentinel, { skip, raw = false, orEOF = false, recoverAt, stopAt } = {}) {
|
|
3504
3504
|
const meta = {
|
|
3505
3505
|
firstSet: any(),
|
|
3506
3506
|
canMatchNewline: true,
|
|
@@ -3510,7 +3510,15 @@ function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
|
|
|
3510
3510
|
return {
|
|
3511
3511
|
_tag: "scanTo",
|
|
3512
3512
|
_meta: meta,
|
|
3513
|
-
_def: {
|
|
3513
|
+
_def: {
|
|
3514
|
+
tag: "scanTo",
|
|
3515
|
+
sentinel,
|
|
3516
|
+
skip: explicitSkip,
|
|
3517
|
+
raw,
|
|
3518
|
+
orEOF,
|
|
3519
|
+
...recoverAt === void 0 ? {} : { recoverAt },
|
|
3520
|
+
...stopAt === void 0 ? {} : { stopAt }
|
|
3521
|
+
},
|
|
3514
3522
|
parse(input, pos, ctx) {
|
|
3515
3523
|
let cur = pos;
|
|
3516
3524
|
const skip2 = resolveScanSkip(explicitSkip, raw, ctx);
|
|
@@ -3522,28 +3530,130 @@ function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
|
|
|
3522
3530
|
pushCstLeaf(ctx, leaf);
|
|
3523
3531
|
}
|
|
3524
3532
|
};
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3533
|
+
if (recoverAt === void 0 && stopAt === void 0) {
|
|
3534
|
+
while (cur < input.length) {
|
|
3535
|
+
const s = sentinel.parse(input, cur, probeCtx);
|
|
3536
|
+
if (s.ok) {
|
|
3537
|
+
if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, cur);
|
|
3538
|
+
emit(cur);
|
|
3539
|
+
return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
|
|
3540
|
+
}
|
|
3541
|
+
let advanced = false;
|
|
3542
|
+
for (const skipper of skip2) {
|
|
3543
|
+
const r = skipper.parse(input, cur, probeCtx);
|
|
3544
|
+
if (r.ok && r.span.end > cur) {
|
|
3545
|
+
cur = r.span.end;
|
|
3546
|
+
advanced = true;
|
|
3547
|
+
break;
|
|
3548
|
+
}
|
|
3549
|
+
}
|
|
3550
|
+
if (!advanced) cur++;
|
|
3551
|
+
}
|
|
3552
|
+
if (orEOF) {
|
|
3528
3553
|
if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, cur);
|
|
3529
3554
|
emit(cur);
|
|
3530
3555
|
return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
|
|
3531
3556
|
}
|
|
3557
|
+
const sentDef2 = sentinel._def;
|
|
3558
|
+
const expected2 = sentDef2.tag === "literal" ? [JSON.stringify(sentDef2.value)] : ["sentinel"];
|
|
3559
|
+
return { ok: false, expected: expected2, span: { start: pos, end: cur } };
|
|
3560
|
+
}
|
|
3561
|
+
let recovery = -1;
|
|
3562
|
+
let firstSentinel = -1;
|
|
3563
|
+
let sentinelCount = 0;
|
|
3564
|
+
let recoveryErrorCount = -1;
|
|
3565
|
+
let sentinelErrorCount = -1;
|
|
3566
|
+
const succeed = (end) => {
|
|
3567
|
+
if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, end);
|
|
3568
|
+
emit(end);
|
|
3569
|
+
return { ok: true, value: input.slice(pos, end), span: { start: pos, end } };
|
|
3570
|
+
};
|
|
3571
|
+
const recoveredEnd = () => {
|
|
3572
|
+
const acceptSentinel = firstSentinel >= 0 && (sentinelCount & 1) === 1;
|
|
3573
|
+
const errors = ctx._errors;
|
|
3574
|
+
if (errors !== void 0) {
|
|
3575
|
+
const keep = acceptSentinel ? sentinelErrorCount : recoveryErrorCount;
|
|
3576
|
+
if (keep >= 0 && errors.length > keep) errors.length = keep;
|
|
3577
|
+
}
|
|
3578
|
+
return acceptSentinel ? firstSentinel : recovery;
|
|
3579
|
+
};
|
|
3580
|
+
while (cur < input.length) {
|
|
3581
|
+
const sentinelProbeErrorCount = ctx._errors?.length ?? -1;
|
|
3582
|
+
const s = sentinel.parse(input, cur, probeCtx);
|
|
3583
|
+
const sentinelProbeErrors = ctx._errors;
|
|
3584
|
+
if (sentinelProbeErrors !== void 0 && sentinelProbeErrorCount >= 0 && sentinelProbeErrors.length > sentinelProbeErrorCount) {
|
|
3585
|
+
sentinelProbeErrors.length = sentinelProbeErrorCount;
|
|
3586
|
+
}
|
|
3587
|
+
if (s.ok) {
|
|
3588
|
+
if (recovery < 0) return succeed(cur);
|
|
3589
|
+
if (s.span.end <= cur) {
|
|
3590
|
+
throw new TypeError("scanTo recovery requires a sentinel that consumes input");
|
|
3591
|
+
}
|
|
3592
|
+
if (firstSentinel < 0) {
|
|
3593
|
+
firstSentinel = cur;
|
|
3594
|
+
sentinelErrorCount = sentinelProbeErrorCount;
|
|
3595
|
+
}
|
|
3596
|
+
sentinelCount++;
|
|
3597
|
+
cur = s.span.end;
|
|
3598
|
+
continue;
|
|
3599
|
+
}
|
|
3600
|
+
if (stopAt !== void 0) {
|
|
3601
|
+
const errorCount = ctx._errors?.length ?? -1;
|
|
3602
|
+
const stop = stopAt.parse(input, cur, probeCtx);
|
|
3603
|
+
const errors = ctx._errors;
|
|
3604
|
+
if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
|
|
3605
|
+
errors.length = errorCount;
|
|
3606
|
+
}
|
|
3607
|
+
if (stop.ok) {
|
|
3608
|
+
if (recovery < 0) {
|
|
3609
|
+
recovery = cur;
|
|
3610
|
+
recoveryErrorCount = errorCount;
|
|
3611
|
+
}
|
|
3612
|
+
return succeed(recoveredEnd());
|
|
3613
|
+
}
|
|
3614
|
+
}
|
|
3532
3615
|
let advanced = false;
|
|
3533
3616
|
for (const skipper of skip2) {
|
|
3617
|
+
const errorCount = ctx._errors?.length ?? -1;
|
|
3534
3618
|
const r = skipper.parse(input, cur, probeCtx);
|
|
3535
3619
|
if (r.ok && r.span.end > cur) {
|
|
3536
3620
|
cur = r.span.end;
|
|
3537
3621
|
advanced = true;
|
|
3538
3622
|
break;
|
|
3539
3623
|
}
|
|
3624
|
+
const errors = ctx._errors;
|
|
3625
|
+
if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
|
|
3626
|
+
errors.length = errorCount;
|
|
3627
|
+
}
|
|
3540
3628
|
}
|
|
3541
|
-
if (
|
|
3629
|
+
if (advanced) continue;
|
|
3630
|
+
if (recoverAt !== void 0) {
|
|
3631
|
+
const errorCount = ctx._errors?.length ?? -1;
|
|
3632
|
+
const recover = recoverAt.parse(input, cur, probeCtx);
|
|
3633
|
+
const errors = ctx._errors;
|
|
3634
|
+
if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
|
|
3635
|
+
errors.length = errorCount;
|
|
3636
|
+
}
|
|
3637
|
+
if (recover.ok) {
|
|
3638
|
+
if (recover.span.end <= cur) {
|
|
3639
|
+
throw new TypeError("scanTo recoverAt must consume input");
|
|
3640
|
+
}
|
|
3641
|
+
if (recovery < 0) {
|
|
3642
|
+
recovery = cur;
|
|
3643
|
+
recoveryErrorCount = errorCount;
|
|
3644
|
+
}
|
|
3645
|
+
if (firstSentinel >= 0 && (sentinelCount & 1) === 1) {
|
|
3646
|
+
return succeed(recoveredEnd());
|
|
3647
|
+
}
|
|
3648
|
+
cur = recover.span.end;
|
|
3649
|
+
continue;
|
|
3650
|
+
}
|
|
3651
|
+
}
|
|
3652
|
+
cur++;
|
|
3542
3653
|
}
|
|
3654
|
+
if (recovery >= 0) return succeed(recoveredEnd());
|
|
3543
3655
|
if (orEOF) {
|
|
3544
|
-
|
|
3545
|
-
emit(cur);
|
|
3546
|
-
return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
|
|
3656
|
+
return succeed(cur);
|
|
3547
3657
|
}
|
|
3548
3658
|
const sentDef = sentinel._def;
|
|
3549
3659
|
const expected = sentDef.tag === "literal" ? [JSON.stringify(sentDef.value)] : ["sentinel"];
|
|
@@ -3920,7 +4030,7 @@ function parserHasOwnFields(p, seen = /* @__PURE__ */ new Set()) {
|
|
|
3920
4030
|
case "grammar":
|
|
3921
4031
|
return parserHasOwnFields(d.parser, seen) || (d.triviaParser ? parserHasOwnFields(d.triviaParser, seen) : false);
|
|
3922
4032
|
case "scanTo":
|
|
3923
|
-
return parserHasOwnFields(d.sentinel, seen) || d.skip.some((x) => parserHasOwnFields(x, seen));
|
|
4033
|
+
return parserHasOwnFields(d.sentinel, seen) || d.skip.some((x) => parserHasOwnFields(x, seen)) || d.recoverAt !== void 0 && parserHasOwnFields(d.recoverAt, seen) || d.stopAt !== void 0 && parserHasOwnFields(d.stopAt, seen);
|
|
3924
4034
|
case "recover":
|
|
3925
4035
|
return parserHasOwnFields(d.parser, seen) || parserHasOwnFields(d.sentinel, seen);
|
|
3926
4036
|
case "routed":
|
|
@@ -3974,7 +4084,7 @@ function parserUsesRouted(parser, seen = /* @__PURE__ */ new Set()) {
|
|
|
3974
4084
|
case "grammar":
|
|
3975
4085
|
return parserUsesRouted(def.parser, seen) || (def.triviaParser ? parserUsesRouted(def.triviaParser, seen) : false);
|
|
3976
4086
|
case "scanTo":
|
|
3977
|
-
return parserUsesRouted(def.sentinel, seen) || def.skip.some((entry) => parserUsesRouted(entry, seen));
|
|
4087
|
+
return parserUsesRouted(def.sentinel, seen) || def.skip.some((entry) => parserUsesRouted(entry, seen)) || def.recoverAt !== void 0 && parserUsesRouted(def.recoverAt, seen) || def.stopAt !== void 0 && parserUsesRouted(def.stopAt, seen);
|
|
3978
4088
|
case "recover":
|
|
3979
4089
|
return parserUsesRouted(def.parser, seen) || parserUsesRouted(def.sentinel, seen);
|
|
3980
4090
|
case "lazy":
|
|
@@ -8248,6 +8358,8 @@ function assemble(t, prog, cfg) {
|
|
|
8248
8358
|
for (const s of prog.scans ?? []) {
|
|
8249
8359
|
for (const r of s.skip) labelExtraIps.push(r[0]);
|
|
8250
8360
|
if (s.sentinel !== void 0) labelExtraIps.push(s.sentinel[0]);
|
|
8361
|
+
if (s.recoverAt !== void 0) labelExtraIps.push(s.recoverAt[0]);
|
|
8362
|
+
if (s.stopAt !== void 0) labelExtraIps.push(s.stopAt[0]);
|
|
8251
8363
|
}
|
|
8252
8364
|
for (const set of prog.scanSkip ?? []) for (const r of set) labelExtraIps.push(r[0]);
|
|
8253
8365
|
const closureLabels = computeSiteLabels(
|
|
@@ -10933,6 +11045,8 @@ function assemble(t, prog, cfg) {
|
|
|
10933
11045
|
for (const s of prog.scans ?? []) {
|
|
10934
11046
|
for (const r of s.skip) extraIps.push(r[0]);
|
|
10935
11047
|
if (s.sentinel !== void 0) extraIps.push(s.sentinel[0]);
|
|
11048
|
+
if (s.recoverAt !== void 0) extraIps.push(s.recoverAt[0]);
|
|
11049
|
+
if (s.stopAt !== void 0) extraIps.push(s.stopAt[0]);
|
|
10936
11050
|
}
|
|
10937
11051
|
for (const set of prog.scanSkip ?? []) for (const r of set) extraIps.push(r[0]);
|
|
10938
11052
|
const roots = [...Object.values(prog.rules), ...extraIps];
|
|
@@ -11144,7 +11258,13 @@ function assemble(t, prog, cfg) {
|
|
|
11144
11258
|
continue;
|
|
11145
11259
|
}
|
|
11146
11260
|
const sentDef = typeof s.sent === "string" ? { tag: "literal", value: s.sent, caseInsensitive: false } : void 0;
|
|
11147
|
-
scansArr.push(scanTo(subtreeComb(s.sentinel, sentDef), {
|
|
11261
|
+
scansArr.push(scanTo(subtreeComb(s.sentinel, sentDef), {
|
|
11262
|
+
skip,
|
|
11263
|
+
raw,
|
|
11264
|
+
orEOF: (s.flags & 2) !== 0,
|
|
11265
|
+
...s.recoverAt === void 0 ? {} : { recoverAt: subtreeComb(s.recoverAt) },
|
|
11266
|
+
...s.stopAt === void 0 ? {} : { stopAt: subtreeComb(s.stopAt) }
|
|
11267
|
+
}));
|
|
11148
11268
|
}
|
|
11149
11269
|
const scans = scansArr;
|
|
11150
11270
|
const scanSkip = (prog.scanSkip ?? []).map((set) => set.map((r) => subtreeComb(r)));
|
|
@@ -11337,7 +11457,12 @@ function childrenOf(d) {
|
|
|
11337
11457
|
case "recover":
|
|
11338
11458
|
return [d.parser, d.sentinel];
|
|
11339
11459
|
case "scanTo":
|
|
11340
|
-
return [
|
|
11460
|
+
return [
|
|
11461
|
+
d.sentinel,
|
|
11462
|
+
...d.skip,
|
|
11463
|
+
...d.recoverAt === void 0 ? [] : [d.recoverAt],
|
|
11464
|
+
...d.stopAt === void 0 ? [] : [d.stopAt]
|
|
11465
|
+
];
|
|
11341
11466
|
case "grammar":
|
|
11342
11467
|
return d.triviaParser ? [d.parser, d.triviaParser] : [d.parser];
|
|
11343
11468
|
case "routed":
|
|
@@ -11608,7 +11733,7 @@ function hasNodeDef(p, seen = /* @__PURE__ */ new Set()) {
|
|
|
11608
11733
|
case "sepBy":
|
|
11609
11734
|
return hasNodeDef(d.parser, seen) || hasNodeDef(d.separator, seen);
|
|
11610
11735
|
case "scanTo":
|
|
11611
|
-
return hasNodeDef(d.sentinel, seen) || d.skip.some((x) => hasNodeDef(x, seen));
|
|
11736
|
+
return hasNodeDef(d.sentinel, seen) || d.skip.some((x) => hasNodeDef(x, seen)) || d.recoverAt !== void 0 && hasNodeDef(d.recoverAt, seen) || d.stopAt !== void 0 && hasNodeDef(d.stopAt, seen);
|
|
11612
11737
|
case "recover":
|
|
11613
11738
|
return hasNodeDef(d.parser, seen) || hasNodeDef(d.sentinel, seen);
|
|
11614
11739
|
case "expect":
|
|
@@ -11657,7 +11782,7 @@ function hasDirectBuildDef(p, seen = /* @__PURE__ */ new Set()) {
|
|
|
11657
11782
|
case "sepBy":
|
|
11658
11783
|
return hasDirectBuildDef(d.parser, seen) || hasDirectBuildDef(d.separator, seen);
|
|
11659
11784
|
case "scanTo":
|
|
11660
|
-
return hasDirectBuildDef(d.sentinel, seen) || d.skip.some((x) => hasDirectBuildDef(x, seen));
|
|
11785
|
+
return hasDirectBuildDef(d.sentinel, seen) || d.skip.some((x) => hasDirectBuildDef(x, seen)) || d.recoverAt !== void 0 && hasDirectBuildDef(d.recoverAt, seen) || d.stopAt !== void 0 && hasDirectBuildDef(d.stopAt, seen);
|
|
11661
11786
|
case "recover":
|
|
11662
11787
|
return hasDirectBuildDef(d.parser, seen) || hasDirectBuildDef(d.sentinel, seen);
|
|
11663
11788
|
case "routed":
|
|
@@ -11694,7 +11819,7 @@ function mayCommitFailure(p, seen = /* @__PURE__ */ new Set(), resolve) {
|
|
|
11694
11819
|
case "withCtx":
|
|
11695
11820
|
return mayCommitFailure(d.parser, seen, resolve);
|
|
11696
11821
|
case "scanTo":
|
|
11697
|
-
return mayCommitFailure(d.sentinel, seen, resolve) || d.skip.some((x) => mayCommitFailure(x, seen, resolve));
|
|
11822
|
+
return mayCommitFailure(d.sentinel, seen, resolve) || d.skip.some((x) => mayCommitFailure(x, seen, resolve)) || d.recoverAt !== void 0 && mayCommitFailure(d.recoverAt, seen, resolve) || d.stopAt !== void 0 && mayCommitFailure(d.stopAt, seen, resolve);
|
|
11698
11823
|
case "lazy": {
|
|
11699
11824
|
try {
|
|
11700
11825
|
return mayCommitFailure(d.thunk(), seen, resolve);
|
|
@@ -12837,6 +12962,8 @@ var Encoder = class {
|
|
|
12837
12962
|
flags: (d.raw ? 1 : 0) | (d.orEOF ? 2 : 0),
|
|
12838
12963
|
skip: d.skip.map((c) => this.subtree(c)),
|
|
12839
12964
|
sentinel: this.subtree(d.sentinel),
|
|
12965
|
+
...d.recoverAt === void 0 ? {} : { recoverAt: this.subtree(d.recoverAt) },
|
|
12966
|
+
...d.stopAt === void 0 ? {} : { stopAt: this.subtree(d.stopAt) },
|
|
12840
12967
|
sent: sentDef.tag === "literal" ? sentDef.value : null
|
|
12841
12968
|
}));
|
|
12842
12969
|
}
|
|
@@ -13270,6 +13397,8 @@ var Encoder = class {
|
|
|
13270
13397
|
const refs = [];
|
|
13271
13398
|
for (const s of this.scans) {
|
|
13272
13399
|
if (s.sentinel !== void 0) refs.push(s.sentinel);
|
|
13400
|
+
if (s.recoverAt !== void 0) refs.push(s.recoverAt);
|
|
13401
|
+
if (s.stopAt !== void 0) refs.push(s.stopAt);
|
|
13273
13402
|
refs.push(...s.skip);
|
|
13274
13403
|
}
|
|
13275
13404
|
for (const set of this.scanSkipSets) refs.push(...set);
|
|
@@ -13289,7 +13418,9 @@ var Encoder = class {
|
|
|
13289
13418
|
this.scans = this.scans.map((s) => ({
|
|
13290
13419
|
...s,
|
|
13291
13420
|
skip: s.skip.map(res),
|
|
13292
|
-
...s.sentinel === void 0 ? {} : { sentinel: res(s.sentinel) }
|
|
13421
|
+
...s.sentinel === void 0 ? {} : { sentinel: res(s.sentinel) },
|
|
13422
|
+
...s.recoverAt === void 0 ? {} : { recoverAt: res(s.recoverAt) },
|
|
13423
|
+
...s.stopAt === void 0 ? {} : { stopAt: res(s.stopAt) }
|
|
13293
13424
|
}));
|
|
13294
13425
|
this.scanSkipSets = this.scanSkipSets.map((set) => set.map(res));
|
|
13295
13426
|
}
|
|
@@ -13417,6 +13548,8 @@ function emitRef(r) {
|
|
|
13417
13548
|
function emitScanSpec(s) {
|
|
13418
13549
|
const parts = [`kind:${s.kind}`, `flags:${s.flags}`, `skip:[${s.skip.map(emitRef).join(",")}]`];
|
|
13419
13550
|
if (s.sentinel !== void 0) parts.push(`sentinel:${emitRef(s.sentinel)}`);
|
|
13551
|
+
if (s.recoverAt !== void 0) parts.push(`recoverAt:${emitRef(s.recoverAt)}`);
|
|
13552
|
+
if (s.stopAt !== void 0) parts.push(`stopAt:${emitRef(s.stopAt)}`);
|
|
13420
13553
|
if (s.sent !== void 0) parts.push(`sent:${s.sent === null ? "null" : jsString(s.sent)}`);
|
|
13421
13554
|
if (s.open !== void 0) parts.push(`open:${jsString(s.open)}`);
|
|
13422
13555
|
if (s.close !== void 0) parts.push(`close:${jsString(s.close)}`);
|
|
@@ -13443,6 +13576,8 @@ function emitAssemblies(prog, cfgs) {
|
|
|
13443
13576
|
for (const s of prog.scans ?? []) {
|
|
13444
13577
|
for (const r of s.skip) extraIps.push(r[0]);
|
|
13445
13578
|
if (s.sentinel !== void 0) extraIps.push(s.sentinel[0]);
|
|
13579
|
+
if (s.recoverAt !== void 0) extraIps.push(s.recoverAt[0]);
|
|
13580
|
+
if (s.stopAt !== void 0) extraIps.push(s.stopAt[0]);
|
|
13446
13581
|
}
|
|
13447
13582
|
for (const set of prog.scanSkip ?? []) for (const r of set) extraIps.push(r[0]);
|
|
13448
13583
|
const out = [];
|
|
@@ -13611,7 +13746,12 @@ function children(def, winners) {
|
|
|
13611
13746
|
case "sepBy":
|
|
13612
13747
|
return [def.parser, def.separator];
|
|
13613
13748
|
case "scanTo":
|
|
13614
|
-
return [
|
|
13749
|
+
return [
|
|
13750
|
+
def.sentinel,
|
|
13751
|
+
...def.skip,
|
|
13752
|
+
...def.recoverAt === void 0 ? [] : [def.recoverAt],
|
|
13753
|
+
...def.stopAt === void 0 ? [] : [def.stopAt]
|
|
13754
|
+
];
|
|
13615
13755
|
case "lazy": {
|
|
13616
13756
|
let resolved;
|
|
13617
13757
|
try {
|
|
@@ -13724,7 +13864,7 @@ function payloadKey(p, d) {
|
|
|
13724
13864
|
case "expect":
|
|
13725
13865
|
return `expect\0${d.label ?? ""}\0${d.expected.join("")}`;
|
|
13726
13866
|
case "scanTo":
|
|
13727
|
-
return `scanTo\0${d.raw}\0${d.orEOF}`;
|
|
13867
|
+
return `scanTo\0${d.raw}\0${d.orEOF}\0${d.recoverAt !== void 0}\0${d.stopAt !== void 0}`;
|
|
13728
13868
|
case "guard":
|
|
13729
13869
|
return `guard\0${fnKey(d.predSrc, d.predicate)}`;
|
|
13730
13870
|
case "adjacency":
|
|
@@ -13839,8 +13979,12 @@ function segment(d, index) {
|
|
|
13839
13979
|
return index === 0 ? "sepBy.item" : "sepBy.sep";
|
|
13840
13980
|
case "recover":
|
|
13841
13981
|
return index === 0 ? "recover.body" : "recover.sentinel";
|
|
13842
|
-
case "scanTo":
|
|
13843
|
-
|
|
13982
|
+
case "scanTo": {
|
|
13983
|
+
if (index === 0) return "scanTo.sentinel";
|
|
13984
|
+
if (index <= d.skip.length) return `scanTo.skip[${index - 1}]`;
|
|
13985
|
+
if (d.recoverAt !== void 0 && index === d.skip.length + 1) return "scanTo.recoverAt";
|
|
13986
|
+
return "scanTo.stopAt";
|
|
13987
|
+
}
|
|
13844
13988
|
default:
|
|
13845
13989
|
return d.tag;
|
|
13846
13990
|
}
|
|
@@ -15100,7 +15244,12 @@ function childrenOf2(def) {
|
|
|
15100
15244
|
case "sepBy":
|
|
15101
15245
|
return [def.parser, def.separator];
|
|
15102
15246
|
case "scanTo":
|
|
15103
|
-
return [
|
|
15247
|
+
return [
|
|
15248
|
+
def.sentinel,
|
|
15249
|
+
...def.skip,
|
|
15250
|
+
...def.recoverAt === void 0 ? [] : [def.recoverAt],
|
|
15251
|
+
...def.stopAt === void 0 ? [] : [def.stopAt]
|
|
15252
|
+
];
|
|
15104
15253
|
case "routed":
|
|
15105
15254
|
return def.fallback ? [def.fallback] : [];
|
|
15106
15255
|
case "literal":
|