parseman 0.50.6 → 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 +214 -67
- 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 +220 -68
- package/dist/cli/index.js.map +2 -2
- package/dist/combinators/dispatch.d.ts.map +1 -1
- package/dist/combinators/first-set.d.ts +2 -26
- package/dist/combinators/first-set.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 +40 -29
- 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 +241 -74
- package/dist/index.js.map +2 -2
- package/dist/plugin/index.js +228 -71
- package/dist/plugin/index.js.map +2 -2
- package/dist/spec/index.js +164 -48
- 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 +220 -68
- 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/first-set.ts +58 -36
- 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 +16 -8
- 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":"duplication.d.ts","sourceRoot":"","sources":["../../src/analysis/duplication.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"duplication.d.ts","sourceRoot":"","sources":["../../src/analysis/duplication.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAA;AAClE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAK1E,iFAAiF;AACjF,MAAM,MAAM,IAAI,GAAG;IACjB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAA;IACZ,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,YAAY,MAAO,IAAI,KAAG,MAA4D,CAAA;AAEnG,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,iBAAiB,CAAA;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ;+DAC2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,+CAA+C;AAC/C,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wEAAwE;AACxE,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAA;IACd;8DAC0D;IAC1D,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,IAAI,EAAE,CAAA;CACd,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB;kFAC8E;IAC9E,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAA;IAChB;2DACuD;IACvD,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,mDAAmD;IACnD,EAAE,EAAE,QAAQ,CAAA;IACZ,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mEAAmE;IACnE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;iBAEa;IACb,iBAAiB,EAAE,OAAO,CAAA;IAC1B;uDACmD;IACnD,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,gBAAgB,GAChB,eAAe,GACf,cAAc,CAAA;AAElB,sCAAsC;AACtC,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,SAAS,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,IAAI,CAAA;IACV,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV;;;;;;;OAOG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;IACZ;;+EAE2E;IAC3E,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,kFAAkF;IAClF,GAAG,EAAE,OAAO,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,IAAI,CAAA;QACV,oEAAoE;QACpE,aAAa,EAAE,MAAM,EAAE,CAAA;KACxB,EAAE,CAAA;IACH,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,6CAA6C;IAC7C,IAAI,EAAE,IAAI,CAAA;IACV,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,EAAE,EAAE,QAAQ,CAAA;IACZ,+EAA+E;IAC/E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,eAAe,CAAA;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;8EAC0E;IAC1E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,0EAA0E;IAC1E,YAAY,EAAE,OAAO,CAAA;IACrB,mFAAmF;IACnF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;IACtF;;;OAGG;IACH,GAAG,EAAE,OAAO,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,cAAc,EAAE,oBAAoB,EAAE,CAAA;IACtC,cAAc,EAAE,oBAAoB,EAAE,CAAA;IACtC,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,cAAc,EAAE,oBAAoB,EAAE,CAAA;IACtC,aAAa,EAAE,oBAAoB,EAAE,CAAA;IACrC,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,+EAA+E;IAC/E,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,6CAA6C;QAC7C,KAAK,EAAE,MAAM,CAAA;QACb,6CAA6C;QAC7C,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC;kEAC8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;mDAC+C;IAC/C,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACzB,kFAAkF;IAClF,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AA6ID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAiDzD;AAkBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CA8BrG;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,EAAE,CAW/E;AAID,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAC1B,IAAI,CAAC,EAAE,yBAAyB,GAC/B,iBAAiB,CAEnB;AA4CD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9D,IAAI,CAAC,EAAE,yBAAyB,GAC/B,iBAAiB,CA8GnB;AAsPD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAexD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiCvD;AAmZD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,oBAAoB,GAAG,uBAAuB,CAAA;AAgVzF,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;AAK3D;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAsD7E;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAIzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gating.d.ts","sourceRoot":"","sources":["../../src/analysis/gating.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gating.d.ts","sourceRoot":"","sources":["../../src/analysis/gating.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAc,UAAU,EAAgB,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEpG,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GACrB,aAAa,GACb,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,WAAW,CAAA;AAEf,yDAAyD;AACzD,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,aAAa,CAAA;IACpB,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,cAAc,EAAE,OAAO,CAAA;IACvB;;;;;;;;OAQG;IACH,kBAAkB,EAAE,OAAO,CAAA;IAC3B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,oEAAoE;AACpE,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,EAAE,EAAE,QAAQ,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,eAAe,CAAA;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,cAAc,CAAA;AAEzG,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,iBAAiB,CAAA;IAC3B;;;;;;;OAOG;IACH,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,IAAI,CAAA;IACnC,kFAAkF;IAClF,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;;;;;;OASG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAA;IACvD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAO,YAAY,KAAG,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,SACvB,CAAA;AAEvD,qEAAqE;AACrE,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;CAC5D,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,YAAY,EAAE,YAAY,EAAE,CAAA;IAC5B,uFAAuF;IACvF,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,6FAA6F;IAC7F,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB;;;;OAIG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,qFAAqF;IACrF,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,wDAAwD;IACxD,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,YAAY,EAAE,WAAW,EAAE,CAAA;CAC5B,CAAA;AAID;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAgCvE;AAMD;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,CAAA;AA2BrB,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CAIrD;AA2LD,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAa3E;AA0CD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAEnG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9D,IAAI,CAAC,EAAE,oBAAoB,GAC1B,YAAY,CAiGd;AAgED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAwBnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAC7D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA+BvB"}
|
package/dist/cli/index.js
CHANGED
|
@@ -7,14 +7,14 @@ import { pathToFileURL } from "node:url";
|
|
|
7
7
|
import { register } from "node:module";
|
|
8
8
|
|
|
9
9
|
// src/combinators/first-set.ts
|
|
10
|
-
function classifyFinalChoice(arms, resolve2) {
|
|
10
|
+
function classifyFinalChoice(arms, resolve2, activeTrivia) {
|
|
11
11
|
const firstSets = [];
|
|
12
12
|
const nullable2 = [];
|
|
13
13
|
let exclusive = true;
|
|
14
14
|
for (const arm of arms) {
|
|
15
15
|
const empty2 = matchesEmpty(arm, /* @__PURE__ */ new Set(), resolve2);
|
|
16
16
|
nullable2.push(empty2);
|
|
17
|
-
firstSets.push(empty2 ? { kind: "any" } : firstSetOf(arm, /* @__PURE__ */ new Set(), resolve2));
|
|
17
|
+
firstSets.push(empty2 ? { kind: "any" } : firstSetOf(arm, /* @__PURE__ */ new Set(), resolve2, activeTrivia));
|
|
18
18
|
if (empty2) exclusive = false;
|
|
19
19
|
}
|
|
20
20
|
if (exclusive) {
|
|
@@ -75,7 +75,7 @@ function intersects(a, b) {
|
|
|
75
75
|
return false;
|
|
76
76
|
}
|
|
77
77
|
function fromChar(code) {
|
|
78
|
-
return
|
|
78
|
+
return fromRange(code, code);
|
|
79
79
|
}
|
|
80
80
|
function startsFirstSet(combinator, input, pos) {
|
|
81
81
|
const fs = combinator._meta.firstSet;
|
|
@@ -168,11 +168,10 @@ function matchesEmptyBody(p, seen, resolve2) {
|
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
function isZeroWidthAssertion(p) {
|
|
171
|
-
|
|
172
|
-
return tag === "not" || tag === "adjacency";
|
|
171
|
+
return p._tag === "not" || p._tag === "adjacency";
|
|
173
172
|
}
|
|
174
173
|
function isPositiveLookahead(p) {
|
|
175
|
-
return p.
|
|
174
|
+
return p._tag === "peek";
|
|
176
175
|
}
|
|
177
176
|
function narrowBy(acc, constraint) {
|
|
178
177
|
if (constraint.kind === "any") return acc;
|
|
@@ -188,34 +187,42 @@ function narrowBy(acc, constraint) {
|
|
|
188
187
|
return ranges.length === 0 ? { kind: "empty" } : { kind: "ranges", ranges };
|
|
189
188
|
}
|
|
190
189
|
function applyAssertion(fs, assertion) {
|
|
191
|
-
|
|
192
|
-
if (fs.kind === "empty") return assertion;
|
|
193
|
-
return narrowBy(fs, assertion) ?? fs;
|
|
190
|
+
return assertion === null ? fs : fs.kind === "empty" ? assertion : narrowBy(fs, assertion);
|
|
194
191
|
}
|
|
195
|
-
function
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
192
|
+
function sequenceSet(parsers, fs, empties, trivia2) {
|
|
193
|
+
const afterBoundary = (i) => {
|
|
194
|
+
const rest = at(i);
|
|
195
|
+
return trivia2 ? union(rest, fs(trivia2)) : rest;
|
|
196
|
+
};
|
|
197
|
+
const at = (i) => {
|
|
198
|
+
const p = parsers[i];
|
|
199
199
|
if (isPositiveLookahead(p)) {
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
const constraint = fs(p);
|
|
201
|
+
return i + 1 === parsers.length ? constraint : applyAssertion(afterBoundary(i + 1), constraint);
|
|
202
202
|
}
|
|
203
|
-
if (
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
203
|
+
if (isZeroWidthAssertion(p)) {
|
|
204
|
+
return i + 1 === parsers.length ? empty() : afterBoundary(i + 1);
|
|
205
|
+
}
|
|
206
|
+
const first = fs(p);
|
|
207
|
+
if (!empties(p) || i + 1 === parsers.length) return first;
|
|
208
|
+
return union(first, afterBoundary(i + 1));
|
|
209
|
+
};
|
|
210
|
+
return at(0);
|
|
211
|
+
}
|
|
212
|
+
function sequenceFirstSet(parsers) {
|
|
213
|
+
return sequenceSet(parsers, (p) => p._meta.firstSet, matchesEmpty);
|
|
207
214
|
}
|
|
208
|
-
function firstSetOf(p, seen = /* @__PURE__ */ new Set(), resolve2) {
|
|
215
|
+
function firstSetOf(p, seen = /* @__PURE__ */ new Set(), resolve2, activeTrivia) {
|
|
209
216
|
if (seen.has(p)) return any();
|
|
210
217
|
seen.add(p);
|
|
211
218
|
try {
|
|
212
|
-
return firstSetBody(p, seen, resolve2);
|
|
219
|
+
return firstSetBody(p, seen, resolve2, activeTrivia);
|
|
213
220
|
} finally {
|
|
214
221
|
seen.delete(p);
|
|
215
222
|
}
|
|
216
223
|
}
|
|
217
|
-
function firstSetBody(p, seen, resolve2) {
|
|
218
|
-
const fs = (c) => firstSetOf(c, seen, resolve2);
|
|
224
|
+
function firstSetBody(p, seen, resolve2, activeTrivia) {
|
|
225
|
+
const fs = (c) => firstSetOf(c, seen, resolve2, activeTrivia);
|
|
219
226
|
const empties = (c) => matchesEmpty(c, /* @__PURE__ */ new Set(), resolve2);
|
|
220
227
|
const d = p._def;
|
|
221
228
|
switch (d.tag) {
|
|
@@ -241,17 +248,7 @@ function firstSetBody(p, seen, resolve2) {
|
|
|
241
248
|
return out;
|
|
242
249
|
}
|
|
243
250
|
case "sequence": {
|
|
244
|
-
|
|
245
|
-
let assertion = null;
|
|
246
|
-
for (const term of d.parsers) {
|
|
247
|
-
if (isPositiveLookahead(term)) {
|
|
248
|
-
assertion = narrowBy(assertion, fs(term));
|
|
249
|
-
continue;
|
|
250
|
-
}
|
|
251
|
-
if (!isZeroWidthAssertion(term)) out = union(out, fs(term));
|
|
252
|
-
if (!empties(term)) return applyAssertion(out, assertion);
|
|
253
|
-
}
|
|
254
|
-
return applyAssertion(out, assertion);
|
|
251
|
+
return sequenceSet(d.parsers, fs, empties, activeTrivia);
|
|
255
252
|
}
|
|
256
253
|
case "peek": {
|
|
257
254
|
const inner = d.parser;
|
|
@@ -266,12 +263,16 @@ function firstSetBody(p, seen, resolve2) {
|
|
|
266
263
|
case "token":
|
|
267
264
|
case "leaf":
|
|
268
265
|
case "node":
|
|
269
|
-
case "grammar":
|
|
270
|
-
case "expect":
|
|
271
|
-
return fs(d.parser);
|
|
272
266
|
case "sepBy":
|
|
267
|
+
case "expect":
|
|
273
268
|
return fs(d.parser);
|
|
274
|
-
|
|
269
|
+
case "grammar":
|
|
270
|
+
return firstSetOf(
|
|
271
|
+
d.parser,
|
|
272
|
+
seen,
|
|
273
|
+
resolve2,
|
|
274
|
+
d.clearTrivia ? null : d.triviaParser ?? activeTrivia
|
|
275
|
+
);
|
|
275
276
|
default:
|
|
276
277
|
return p._meta.firstSet;
|
|
277
278
|
}
|
|
@@ -311,7 +312,12 @@ function childrenOf(d) {
|
|
|
311
312
|
case "recover":
|
|
312
313
|
return [d.parser, d.sentinel];
|
|
313
314
|
case "scanTo":
|
|
314
|
-
return [
|
|
315
|
+
return [
|
|
316
|
+
d.sentinel,
|
|
317
|
+
...d.skip,
|
|
318
|
+
...d.recoverAt === void 0 ? [] : [d.recoverAt],
|
|
319
|
+
...d.stopAt === void 0 ? [] : [d.stopAt]
|
|
320
|
+
];
|
|
315
321
|
case "grammar":
|
|
316
322
|
return d.triviaParser ? [d.parser, d.triviaParser] : [d.parser];
|
|
317
323
|
case "routed":
|
|
@@ -2156,7 +2162,12 @@ function childrenOf2(def) {
|
|
|
2156
2162
|
case "sepBy":
|
|
2157
2163
|
return [def.parser, def.separator];
|
|
2158
2164
|
case "scanTo":
|
|
2159
|
-
return [
|
|
2165
|
+
return [
|
|
2166
|
+
def.sentinel,
|
|
2167
|
+
...def.skip,
|
|
2168
|
+
...def.recoverAt === void 0 ? [] : [def.recoverAt],
|
|
2169
|
+
...def.stopAt === void 0 ? [] : [def.stopAt]
|
|
2170
|
+
];
|
|
2160
2171
|
case "routed":
|
|
2161
2172
|
return def.fallback ? [def.fallback] : [];
|
|
2162
2173
|
case "literal":
|
|
@@ -4227,7 +4238,7 @@ function parserUsesRouted(parser2, seen = /* @__PURE__ */ new Set()) {
|
|
|
4227
4238
|
case "grammar":
|
|
4228
4239
|
return parserUsesRouted(def.parser, seen) || (def.triviaParser ? parserUsesRouted(def.triviaParser, seen) : false);
|
|
4229
4240
|
case "scanTo":
|
|
4230
|
-
return parserUsesRouted(def.sentinel, seen) || def.skip.some((entry) => parserUsesRouted(entry, seen));
|
|
4241
|
+
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);
|
|
4231
4242
|
case "recover":
|
|
4232
4243
|
return parserUsesRouted(def.parser, seen) || parserUsesRouted(def.sentinel, seen);
|
|
4233
4244
|
case "lazy":
|
|
@@ -5197,7 +5208,7 @@ function parserHasOwnFields(p, seen = /* @__PURE__ */ new Set()) {
|
|
|
5197
5208
|
case "grammar":
|
|
5198
5209
|
return parserHasOwnFields(d.parser, seen) || (d.triviaParser ? parserHasOwnFields(d.triviaParser, seen) : false);
|
|
5199
5210
|
case "scanTo":
|
|
5200
|
-
return parserHasOwnFields(d.sentinel, seen) || d.skip.some((x) => parserHasOwnFields(x, seen));
|
|
5211
|
+
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);
|
|
5201
5212
|
case "recover":
|
|
5202
5213
|
return parserHasOwnFields(d.parser, seen) || parserHasOwnFields(d.sentinel, seen);
|
|
5203
5214
|
case "routed":
|
|
@@ -5574,7 +5585,7 @@ function resolveScanSkip(explicitSkip, raw, ctx) {
|
|
|
5574
5585
|
out.push(...explicitSkip);
|
|
5575
5586
|
return out;
|
|
5576
5587
|
}
|
|
5577
|
-
function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
|
|
5588
|
+
function scanTo(sentinel, { skip, raw = false, orEOF = false, recoverAt, stopAt } = {}) {
|
|
5578
5589
|
const meta = {
|
|
5579
5590
|
firstSet: any(),
|
|
5580
5591
|
canMatchNewline: true,
|
|
@@ -5584,7 +5595,15 @@ function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
|
|
|
5584
5595
|
return {
|
|
5585
5596
|
_tag: "scanTo",
|
|
5586
5597
|
_meta: meta,
|
|
5587
|
-
_def: {
|
|
5598
|
+
_def: {
|
|
5599
|
+
tag: "scanTo",
|
|
5600
|
+
sentinel,
|
|
5601
|
+
skip: explicitSkip,
|
|
5602
|
+
raw,
|
|
5603
|
+
orEOF,
|
|
5604
|
+
...recoverAt === void 0 ? {} : { recoverAt },
|
|
5605
|
+
...stopAt === void 0 ? {} : { stopAt }
|
|
5606
|
+
},
|
|
5588
5607
|
parse(input, pos, ctx) {
|
|
5589
5608
|
let cur = pos;
|
|
5590
5609
|
const skip2 = resolveScanSkip(explicitSkip, raw, ctx);
|
|
@@ -5596,28 +5615,130 @@ function scanTo(sentinel, { skip, raw = false, orEOF = false } = {}) {
|
|
|
5596
5615
|
pushCstLeaf(ctx, leaf2);
|
|
5597
5616
|
}
|
|
5598
5617
|
};
|
|
5599
|
-
|
|
5600
|
-
|
|
5601
|
-
|
|
5618
|
+
if (recoverAt === void 0 && stopAt === void 0) {
|
|
5619
|
+
while (cur < input.length) {
|
|
5620
|
+
const s = sentinel.parse(input, cur, probeCtx);
|
|
5621
|
+
if (s.ok) {
|
|
5622
|
+
if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, cur);
|
|
5623
|
+
emit(cur);
|
|
5624
|
+
return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
|
|
5625
|
+
}
|
|
5626
|
+
let advanced = false;
|
|
5627
|
+
for (const skipper of skip2) {
|
|
5628
|
+
const r = skipper.parse(input, cur, probeCtx);
|
|
5629
|
+
if (r.ok && r.span.end > cur) {
|
|
5630
|
+
cur = r.span.end;
|
|
5631
|
+
advanced = true;
|
|
5632
|
+
break;
|
|
5633
|
+
}
|
|
5634
|
+
}
|
|
5635
|
+
if (!advanced) cur++;
|
|
5636
|
+
}
|
|
5637
|
+
if (orEOF) {
|
|
5602
5638
|
if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, cur);
|
|
5603
5639
|
emit(cur);
|
|
5604
5640
|
return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
|
|
5605
5641
|
}
|
|
5642
|
+
const sentDef2 = sentinel._def;
|
|
5643
|
+
const expected2 = sentDef2.tag === "literal" ? [JSON.stringify(sentDef2.value)] : ["sentinel"];
|
|
5644
|
+
return { ok: false, expected: expected2, span: { start: pos, end: cur } };
|
|
5645
|
+
}
|
|
5646
|
+
let recovery = -1;
|
|
5647
|
+
let firstSentinel = -1;
|
|
5648
|
+
let sentinelCount = 0;
|
|
5649
|
+
let recoveryErrorCount = -1;
|
|
5650
|
+
let sentinelErrorCount = -1;
|
|
5651
|
+
const succeed = (end) => {
|
|
5652
|
+
if (ctx.trackLines) recordLineRangeFromContext(ctx, input, pos, end);
|
|
5653
|
+
emit(end);
|
|
5654
|
+
return { ok: true, value: input.slice(pos, end), span: { start: pos, end } };
|
|
5655
|
+
};
|
|
5656
|
+
const recoveredEnd = () => {
|
|
5657
|
+
const acceptSentinel = firstSentinel >= 0 && (sentinelCount & 1) === 1;
|
|
5658
|
+
const errors = ctx._errors;
|
|
5659
|
+
if (errors !== void 0) {
|
|
5660
|
+
const keep = acceptSentinel ? sentinelErrorCount : recoveryErrorCount;
|
|
5661
|
+
if (keep >= 0 && errors.length > keep) errors.length = keep;
|
|
5662
|
+
}
|
|
5663
|
+
return acceptSentinel ? firstSentinel : recovery;
|
|
5664
|
+
};
|
|
5665
|
+
while (cur < input.length) {
|
|
5666
|
+
const sentinelProbeErrorCount = ctx._errors?.length ?? -1;
|
|
5667
|
+
const s = sentinel.parse(input, cur, probeCtx);
|
|
5668
|
+
const sentinelProbeErrors = ctx._errors;
|
|
5669
|
+
if (sentinelProbeErrors !== void 0 && sentinelProbeErrorCount >= 0 && sentinelProbeErrors.length > sentinelProbeErrorCount) {
|
|
5670
|
+
sentinelProbeErrors.length = sentinelProbeErrorCount;
|
|
5671
|
+
}
|
|
5672
|
+
if (s.ok) {
|
|
5673
|
+
if (recovery < 0) return succeed(cur);
|
|
5674
|
+
if (s.span.end <= cur) {
|
|
5675
|
+
throw new TypeError("scanTo recovery requires a sentinel that consumes input");
|
|
5676
|
+
}
|
|
5677
|
+
if (firstSentinel < 0) {
|
|
5678
|
+
firstSentinel = cur;
|
|
5679
|
+
sentinelErrorCount = sentinelProbeErrorCount;
|
|
5680
|
+
}
|
|
5681
|
+
sentinelCount++;
|
|
5682
|
+
cur = s.span.end;
|
|
5683
|
+
continue;
|
|
5684
|
+
}
|
|
5685
|
+
if (stopAt !== void 0) {
|
|
5686
|
+
const errorCount = ctx._errors?.length ?? -1;
|
|
5687
|
+
const stop = stopAt.parse(input, cur, probeCtx);
|
|
5688
|
+
const errors = ctx._errors;
|
|
5689
|
+
if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
|
|
5690
|
+
errors.length = errorCount;
|
|
5691
|
+
}
|
|
5692
|
+
if (stop.ok) {
|
|
5693
|
+
if (recovery < 0) {
|
|
5694
|
+
recovery = cur;
|
|
5695
|
+
recoveryErrorCount = errorCount;
|
|
5696
|
+
}
|
|
5697
|
+
return succeed(recoveredEnd());
|
|
5698
|
+
}
|
|
5699
|
+
}
|
|
5606
5700
|
let advanced = false;
|
|
5607
5701
|
for (const skipper of skip2) {
|
|
5702
|
+
const errorCount = ctx._errors?.length ?? -1;
|
|
5608
5703
|
const r = skipper.parse(input, cur, probeCtx);
|
|
5609
5704
|
if (r.ok && r.span.end > cur) {
|
|
5610
5705
|
cur = r.span.end;
|
|
5611
5706
|
advanced = true;
|
|
5612
5707
|
break;
|
|
5613
5708
|
}
|
|
5709
|
+
const errors = ctx._errors;
|
|
5710
|
+
if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
|
|
5711
|
+
errors.length = errorCount;
|
|
5712
|
+
}
|
|
5713
|
+
}
|
|
5714
|
+
if (advanced) continue;
|
|
5715
|
+
if (recoverAt !== void 0) {
|
|
5716
|
+
const errorCount = ctx._errors?.length ?? -1;
|
|
5717
|
+
const recover = recoverAt.parse(input, cur, probeCtx);
|
|
5718
|
+
const errors = ctx._errors;
|
|
5719
|
+
if (errors !== void 0 && errorCount >= 0 && errors.length > errorCount) {
|
|
5720
|
+
errors.length = errorCount;
|
|
5721
|
+
}
|
|
5722
|
+
if (recover.ok) {
|
|
5723
|
+
if (recover.span.end <= cur) {
|
|
5724
|
+
throw new TypeError("scanTo recoverAt must consume input");
|
|
5725
|
+
}
|
|
5726
|
+
if (recovery < 0) {
|
|
5727
|
+
recovery = cur;
|
|
5728
|
+
recoveryErrorCount = errorCount;
|
|
5729
|
+
}
|
|
5730
|
+
if (firstSentinel >= 0 && (sentinelCount & 1) === 1) {
|
|
5731
|
+
return succeed(recoveredEnd());
|
|
5732
|
+
}
|
|
5733
|
+
cur = recover.span.end;
|
|
5734
|
+
continue;
|
|
5735
|
+
}
|
|
5614
5736
|
}
|
|
5615
|
-
|
|
5737
|
+
cur++;
|
|
5616
5738
|
}
|
|
5739
|
+
if (recovery >= 0) return succeed(recoveredEnd());
|
|
5617
5740
|
if (orEOF) {
|
|
5618
|
-
|
|
5619
|
-
emit(cur);
|
|
5620
|
-
return { ok: true, value: input.slice(pos, cur), span: { start: pos, end: cur } };
|
|
5741
|
+
return succeed(cur);
|
|
5621
5742
|
}
|
|
5622
5743
|
const sentDef = sentinel._def;
|
|
5623
5744
|
const expected = sentDef.tag === "literal" ? [JSON.stringify(sentDef.value)] : ["sentinel"];
|
|
@@ -6130,7 +6251,7 @@ function hasNodeDef(p, seen = /* @__PURE__ */ new Set()) {
|
|
|
6130
6251
|
case "sepBy":
|
|
6131
6252
|
return hasNodeDef(d.parser, seen) || hasNodeDef(d.separator, seen);
|
|
6132
6253
|
case "scanTo":
|
|
6133
|
-
return hasNodeDef(d.sentinel, seen) || d.skip.some((x) => hasNodeDef(x, seen));
|
|
6254
|
+
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);
|
|
6134
6255
|
case "recover":
|
|
6135
6256
|
return hasNodeDef(d.parser, seen) || hasNodeDef(d.sentinel, seen);
|
|
6136
6257
|
case "expect":
|
|
@@ -6169,7 +6290,7 @@ function mayCommitFailure(p, seen = /* @__PURE__ */ new Set(), resolve2) {
|
|
|
6169
6290
|
case "withCtx":
|
|
6170
6291
|
return mayCommitFailure(d.parser, seen, resolve2);
|
|
6171
6292
|
case "scanTo":
|
|
6172
|
-
return mayCommitFailure(d.sentinel, seen, resolve2) || d.skip.some((x) => mayCommitFailure(x, seen, resolve2));
|
|
6293
|
+
return mayCommitFailure(d.sentinel, seen, resolve2) || d.skip.some((x) => mayCommitFailure(x, seen, resolve2)) || d.recoverAt !== void 0 && mayCommitFailure(d.recoverAt, seen, resolve2) || d.stopAt !== void 0 && mayCommitFailure(d.stopAt, seen, resolve2);
|
|
6173
6294
|
case "lazy": {
|
|
6174
6295
|
try {
|
|
6175
6296
|
return mayCommitFailure(d.thunk(), seen, resolve2);
|
|
@@ -7659,7 +7780,9 @@ var Encoder = class {
|
|
|
7659
7780
|
followClass(parsers, i) {
|
|
7660
7781
|
let fs = { kind: "empty" };
|
|
7661
7782
|
const rr = this.refResolver();
|
|
7662
|
-
for (let j = i + 1; j < parsers.length; j++)
|
|
7783
|
+
for (let j = i + 1; j < parsers.length; j++) {
|
|
7784
|
+
fs = union(fs, firstSetOf(parsers[j], /* @__PURE__ */ new Set(), rr, this.activeTrivia));
|
|
7785
|
+
}
|
|
7663
7786
|
return this.charClass(fs);
|
|
7664
7787
|
}
|
|
7665
7788
|
constant(v) {
|
|
@@ -7876,7 +7999,7 @@ var Encoder = class {
|
|
|
7876
7999
|
*/
|
|
7877
8000
|
subtree(c) {
|
|
7878
8001
|
const ip = this.node(c).ip;
|
|
7879
|
-
const fs = firstSetOf(c, /* @__PURE__ */ new Set(), this.refResolver());
|
|
8002
|
+
const fs = firstSetOf(c, /* @__PURE__ */ new Set(), this.refResolver(), this.activeTrivia);
|
|
7880
8003
|
return [ip, fs.kind === "empty" ? -2 : this.charClass(fs)];
|
|
7881
8004
|
}
|
|
7882
8005
|
/** Pool one scan spec. One per combinator: `node()` memoizes by identity. */
|
|
@@ -8022,6 +8145,8 @@ var Encoder = class {
|
|
|
8022
8145
|
flags: (d.raw ? 1 : 0) | (d.orEOF ? 2 : 0),
|
|
8023
8146
|
skip: d.skip.map((c) => this.subtree(c)),
|
|
8024
8147
|
sentinel: this.subtree(d.sentinel),
|
|
8148
|
+
...d.recoverAt === void 0 ? {} : { recoverAt: this.subtree(d.recoverAt) },
|
|
8149
|
+
...d.stopAt === void 0 ? {} : { stopAt: this.subtree(d.stopAt) },
|
|
8025
8150
|
sent: sentDef.tag === "literal" ? sentDef.value : null
|
|
8026
8151
|
}));
|
|
8027
8152
|
}
|
|
@@ -8095,12 +8220,12 @@ var Encoder = class {
|
|
|
8095
8220
|
return this.covWrap(gated, armCovIds?.[src], 1);
|
|
8096
8221
|
});
|
|
8097
8222
|
const rr = this.refResolver();
|
|
8098
|
-
const finalChoice = classifyFinalChoice(arms, rr);
|
|
8223
|
+
const finalChoice = classifyFinalChoice(arms, rr, this.activeTrivia);
|
|
8099
8224
|
const transactionalFirst = arms.map((arm, i) => {
|
|
8100
8225
|
if (!finalChoice.nullable[i]) return void 0;
|
|
8101
8226
|
const def = arm._def;
|
|
8102
8227
|
if (def.tag !== "attempt" || matchesEmpty(def.parser, /* @__PURE__ */ new Set(), rr)) return void 0;
|
|
8103
|
-
return firstSetOf(def.parser, /* @__PURE__ */ new Set(), rr);
|
|
8228
|
+
return firstSetOf(def.parser, /* @__PURE__ */ new Set(), rr, this.activeTrivia);
|
|
8104
8229
|
});
|
|
8105
8230
|
const gateFirst = finalChoice.firstSets.map((first, i) => transactionalFirst[i] ?? first);
|
|
8106
8231
|
const classes = gateFirst.map((first, i) => finalChoice.nullable[i] && transactionalFirst[i] === void 0 ? -1 : this.charClass(first));
|
|
@@ -8147,7 +8272,7 @@ var Encoder = class {
|
|
|
8147
8272
|
case "oneOrMore": {
|
|
8148
8273
|
const child = this.node(d.parser).ip;
|
|
8149
8274
|
const rr = this.refResolver();
|
|
8150
|
-
const itemClass = matchesEmpty(d.parser, /* @__PURE__ */ new Set(), rr) ? -1 : this.existingCharClass(firstSetOf(d.parser, /* @__PURE__ */ new Set(), rr));
|
|
8275
|
+
const itemClass = matchesEmpty(d.parser, /* @__PURE__ */ new Set(), rr) ? -1 : this.existingCharClass(firstSetOf(d.parser, /* @__PURE__ */ new Set(), rr, this.activeTrivia));
|
|
8151
8276
|
const op = d.valueUnused ? OP_REPV : OP_REP;
|
|
8152
8277
|
const min = d.tag === "many" ? 0 : d.min;
|
|
8153
8278
|
return this.rec ? this.emit(op, child, min, d.max ?? -1, -1, 0, this.expected(deriveExpected(d.parser)), itemClass) : this.emit(op, child, min, d.max ?? -1, -1, 0);
|
|
@@ -8165,7 +8290,7 @@ var Encoder = class {
|
|
|
8165
8290
|
sep,
|
|
8166
8291
|
flags,
|
|
8167
8292
|
this.expected(deriveExpected(d.parser)),
|
|
8168
|
-
this.charClass(firstSetOf(d.separator, /* @__PURE__ */ new Set(), this.refResolver()))
|
|
8293
|
+
this.charClass(firstSetOf(d.separator, /* @__PURE__ */ new Set(), this.refResolver(), this.activeTrivia))
|
|
8169
8294
|
);
|
|
8170
8295
|
}
|
|
8171
8296
|
return d.min >= 2 ? this.emit(OP_REP, child, d.min, d.max ?? -1, sep, flags, this.expected(deriveExpected(d.parser))) : this.emit(OP_REP, child, d.min, d.max ?? -1, sep, flags);
|
|
@@ -8220,7 +8345,7 @@ var Encoder = class {
|
|
|
8220
8345
|
d.tags === void 0 ? -1 : this.constant(d.tags)
|
|
8221
8346
|
);
|
|
8222
8347
|
if (matchesEmpty(d.parser)) return body;
|
|
8223
|
-
const fs = d.parser._def.tag === "lazy" ? firstSetOf(d.parser, /* @__PURE__ */ new Set(), this.refResolver()) : d.parser._meta.firstSet;
|
|
8348
|
+
const fs = d.parser._def.tag === "lazy" ? firstSetOf(d.parser, /* @__PURE__ */ new Set(), this.refResolver(), this.activeTrivia) : d.parser._meta.firstSet;
|
|
8224
8349
|
if (fs.kind === "any") return body;
|
|
8225
8350
|
const cls = this.charClass(fs);
|
|
8226
8351
|
if (cls < 0) return body;
|
|
@@ -8334,7 +8459,7 @@ var Encoder = class {
|
|
|
8334
8459
|
case "attempt": {
|
|
8335
8460
|
const inner = this.emit(OP_ATTEMPT, this.node(d.parser).ip);
|
|
8336
8461
|
if (!this.failureNeedsRollback(d.parser, void 0)) this.failureRollbackCleanSites.add(inner);
|
|
8337
|
-
const fs = d.parser._def.tag === "lazy" ? firstSetOf(d.parser, /* @__PURE__ */ new Set(), this.refResolver()) : d.parser._meta.firstSet;
|
|
8462
|
+
const fs = d.parser._def.tag === "lazy" ? firstSetOf(d.parser, /* @__PURE__ */ new Set(), this.refResolver(), this.activeTrivia) : d.parser._meta.firstSet;
|
|
8338
8463
|
if (fs.kind === "any" || matchesEmpty(d.parser)) return inner;
|
|
8339
8464
|
const cls = this.charClass(fs);
|
|
8340
8465
|
if (cls < 0) return inner;
|
|
@@ -8455,6 +8580,8 @@ var Encoder = class {
|
|
|
8455
8580
|
const refs = [];
|
|
8456
8581
|
for (const s of this.scans) {
|
|
8457
8582
|
if (s.sentinel !== void 0) refs.push(s.sentinel);
|
|
8583
|
+
if (s.recoverAt !== void 0) refs.push(s.recoverAt);
|
|
8584
|
+
if (s.stopAt !== void 0) refs.push(s.stopAt);
|
|
8458
8585
|
refs.push(...s.skip);
|
|
8459
8586
|
}
|
|
8460
8587
|
for (const set of this.scanSkipSets) refs.push(...set);
|
|
@@ -8474,7 +8601,9 @@ var Encoder = class {
|
|
|
8474
8601
|
this.scans = this.scans.map((s) => ({
|
|
8475
8602
|
...s,
|
|
8476
8603
|
skip: s.skip.map(res),
|
|
8477
|
-
...s.sentinel === void 0 ? {} : { sentinel: res(s.sentinel) }
|
|
8604
|
+
...s.sentinel === void 0 ? {} : { sentinel: res(s.sentinel) },
|
|
8605
|
+
...s.recoverAt === void 0 ? {} : { recoverAt: res(s.recoverAt) },
|
|
8606
|
+
...s.stopAt === void 0 ? {} : { stopAt: res(s.stopAt) }
|
|
8478
8607
|
}));
|
|
8479
8608
|
this.scanSkipSets = this.scanSkipSets.map((set) => set.map(res));
|
|
8480
8609
|
}
|
|
@@ -11911,6 +12040,8 @@ function assemble(t2, prog, cfg) {
|
|
|
11911
12040
|
for (const s of prog.scans ?? []) {
|
|
11912
12041
|
for (const r of s.skip) labelExtraIps.push(r[0]);
|
|
11913
12042
|
if (s.sentinel !== void 0) labelExtraIps.push(s.sentinel[0]);
|
|
12043
|
+
if (s.recoverAt !== void 0) labelExtraIps.push(s.recoverAt[0]);
|
|
12044
|
+
if (s.stopAt !== void 0) labelExtraIps.push(s.stopAt[0]);
|
|
11914
12045
|
}
|
|
11915
12046
|
for (const set of prog.scanSkip ?? []) for (const r of set) labelExtraIps.push(r[0]);
|
|
11916
12047
|
const closureLabels = computeSiteLabels(
|
|
@@ -14596,6 +14727,8 @@ function assemble(t2, prog, cfg) {
|
|
|
14596
14727
|
for (const s of prog.scans ?? []) {
|
|
14597
14728
|
for (const r of s.skip) extraIps.push(r[0]);
|
|
14598
14729
|
if (s.sentinel !== void 0) extraIps.push(s.sentinel[0]);
|
|
14730
|
+
if (s.recoverAt !== void 0) extraIps.push(s.recoverAt[0]);
|
|
14731
|
+
if (s.stopAt !== void 0) extraIps.push(s.stopAt[0]);
|
|
14599
14732
|
}
|
|
14600
14733
|
for (const set of prog.scanSkip ?? []) for (const r of set) extraIps.push(r[0]);
|
|
14601
14734
|
const roots = [...Object.values(prog.rules), ...extraIps];
|
|
@@ -14807,7 +14940,13 @@ function assemble(t2, prog, cfg) {
|
|
|
14807
14940
|
continue;
|
|
14808
14941
|
}
|
|
14809
14942
|
const sentDef = typeof s.sent === "string" ? { tag: "literal", value: s.sent, caseInsensitive: false } : void 0;
|
|
14810
|
-
scansArr.push(scanTo(subtreeComb(s.sentinel, sentDef), {
|
|
14943
|
+
scansArr.push(scanTo(subtreeComb(s.sentinel, sentDef), {
|
|
14944
|
+
skip,
|
|
14945
|
+
raw,
|
|
14946
|
+
orEOF: (s.flags & 2) !== 0,
|
|
14947
|
+
...s.recoverAt === void 0 ? {} : { recoverAt: subtreeComb(s.recoverAt) },
|
|
14948
|
+
...s.stopAt === void 0 ? {} : { stopAt: subtreeComb(s.stopAt) }
|
|
14949
|
+
}));
|
|
14811
14950
|
}
|
|
14812
14951
|
const scans = scansArr;
|
|
14813
14952
|
const scanSkip = (prog.scanSkip ?? []).map((set) => set.map((r) => subtreeComb(r)));
|
|
@@ -15024,6 +15163,8 @@ function emitRef(r) {
|
|
|
15024
15163
|
function emitScanSpec(s) {
|
|
15025
15164
|
const parts = [`kind:${s.kind}`, `flags:${s.flags}`, `skip:[${s.skip.map(emitRef).join(",")}]`];
|
|
15026
15165
|
if (s.sentinel !== void 0) parts.push(`sentinel:${emitRef(s.sentinel)}`);
|
|
15166
|
+
if (s.recoverAt !== void 0) parts.push(`recoverAt:${emitRef(s.recoverAt)}`);
|
|
15167
|
+
if (s.stopAt !== void 0) parts.push(`stopAt:${emitRef(s.stopAt)}`);
|
|
15027
15168
|
if (s.sent !== void 0) parts.push(`sent:${s.sent === null ? "null" : jsString(s.sent)}`);
|
|
15028
15169
|
if (s.open !== void 0) parts.push(`open:${jsString(s.open)}`);
|
|
15029
15170
|
if (s.close !== void 0) parts.push(`close:${jsString(s.close)}`);
|
|
@@ -15039,6 +15180,8 @@ function emitAssemblies(prog, cfgs) {
|
|
|
15039
15180
|
for (const s of prog.scans ?? []) {
|
|
15040
15181
|
for (const r of s.skip) extraIps.push(r[0]);
|
|
15041
15182
|
if (s.sentinel !== void 0) extraIps.push(s.sentinel[0]);
|
|
15183
|
+
if (s.recoverAt !== void 0) extraIps.push(s.recoverAt[0]);
|
|
15184
|
+
if (s.stopAt !== void 0) extraIps.push(s.stopAt[0]);
|
|
15042
15185
|
}
|
|
15043
15186
|
for (const set of prog.scanSkip ?? []) for (const r of set) extraIps.push(r[0]);
|
|
15044
15187
|
const out = [];
|
|
@@ -15181,7 +15324,12 @@ function children(def, winners) {
|
|
|
15181
15324
|
case "sepBy":
|
|
15182
15325
|
return [def.parser, def.separator];
|
|
15183
15326
|
case "scanTo":
|
|
15184
|
-
return [
|
|
15327
|
+
return [
|
|
15328
|
+
def.sentinel,
|
|
15329
|
+
...def.skip,
|
|
15330
|
+
...def.recoverAt === void 0 ? [] : [def.recoverAt],
|
|
15331
|
+
...def.stopAt === void 0 ? [] : [def.stopAt]
|
|
15332
|
+
];
|
|
15185
15333
|
case "lazy": {
|
|
15186
15334
|
let resolved;
|
|
15187
15335
|
try {
|
|
@@ -15294,7 +15442,7 @@ function payloadKey(p, d) {
|
|
|
15294
15442
|
case "expect":
|
|
15295
15443
|
return `expect\0${d.label ?? ""}\0${d.expected.join("")}`;
|
|
15296
15444
|
case "scanTo":
|
|
15297
|
-
return `scanTo\0${d.raw}\0${d.orEOF}`;
|
|
15445
|
+
return `scanTo\0${d.raw}\0${d.orEOF}\0${d.recoverAt !== void 0}\0${d.stopAt !== void 0}`;
|
|
15298
15446
|
case "guard":
|
|
15299
15447
|
return `guard\0${fnKey(d.predSrc, d.predicate)}`;
|
|
15300
15448
|
case "adjacency":
|
|
@@ -15409,8 +15557,12 @@ function segment(d, index) {
|
|
|
15409
15557
|
return index === 0 ? "sepBy.item" : "sepBy.sep";
|
|
15410
15558
|
case "recover":
|
|
15411
15559
|
return index === 0 ? "recover.body" : "recover.sentinel";
|
|
15412
|
-
case "scanTo":
|
|
15413
|
-
|
|
15560
|
+
case "scanTo": {
|
|
15561
|
+
if (index === 0) return "scanTo.sentinel";
|
|
15562
|
+
if (index <= d.skip.length) return `scanTo.skip[${index - 1}]`;
|
|
15563
|
+
if (d.recoverAt !== void 0 && index === d.skip.length + 1) return "scanTo.recoverAt";
|
|
15564
|
+
return "scanTo.stopAt";
|
|
15565
|
+
}
|
|
15414
15566
|
default:
|
|
15415
15567
|
return d.tag;
|
|
15416
15568
|
}
|
|
@@ -17722,7 +17874,7 @@ function subtreeContains(p, targets) {
|
|
|
17722
17874
|
const kids = [];
|
|
17723
17875
|
if (Array.isArray(rec.parsers)) kids.push(...rec.parsers);
|
|
17724
17876
|
if (Array.isArray(rec.skip)) kids.push(...rec.skip);
|
|
17725
|
-
for (const k of ["parser", "main", "skipped", "separator", "sentinel", "selector", "otherwise", "fallback", "triviaParser"])
|
|
17877
|
+
for (const k of ["parser", "main", "skipped", "separator", "sentinel", "recoverAt", "stopAt", "selector", "otherwise", "fallback", "triviaParser"])
|
|
17726
17878
|
if (rec[k]) kids.push(rec[k]);
|
|
17727
17879
|
if (d.tag === "dispatch") {
|
|
17728
17880
|
for (const c2 of d.cases) kids.push(c2.parser);
|