parseman 0.50.1 → 0.50.4
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/README.md +14 -10
- package/dist/analysis/diagnostics.js +455 -229
- package/dist/analysis/diagnostics.js.map +3 -3
- package/dist/cli/index.js +445 -194
- package/dist/cli/index.js.map +3 -3
- package/dist/combinators/choice.d.ts.map +1 -1
- package/dist/combinators/first-set.d.ts.map +1 -1
- package/dist/combinators/grammar.d.ts.map +1 -1
- package/dist/combinators/keywords.d.ts.map +1 -1
- package/dist/combinators/literal.d.ts.map +1 -1
- package/dist/combinators/map.d.ts.map +1 -1
- package/dist/combinators/ref.d.ts.map +1 -1
- package/dist/combinators/regex.d.ts.map +1 -1
- package/dist/combinators/repeat.d.ts.map +1 -1
- package/dist/combinators/scalar.d.ts +6 -0
- package/dist/combinators/scalar.d.ts.map +1 -0
- package/dist/combinators/sequence.d.ts.map +1 -1
- package/dist/combinators/trivia-skip.d.ts +2 -0
- package/dist/combinators/trivia-skip.d.ts.map +1 -1
- package/dist/compiler/token-capability.js +22 -11
- package/dist/compiler/token-capability.js.map +2 -2
- package/dist/index.js +446 -195
- package/dist/index.js.map +3 -3
- package/dist/language-service/index.js +68 -172
- package/dist/language-service/index.js.map +3 -3
- package/dist/parse-context.d.ts.map +1 -1
- package/dist/plugin/index.js +491 -309
- package/dist/plugin/index.js.map +3 -3
- package/dist/run/index.js +1 -0
- package/dist/run/index.js.map +1 -1
- package/dist/spec/index.js +421 -285
- package/dist/spec/index.js.map +3 -3
- package/dist/table/emit-assembly.d.ts.map +1 -1
- package/dist/table/encode.d.ts.map +1 -1
- package/dist/table/index.js +331 -191
- package/dist/table/index.js.map +3 -3
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +5 -3
- package/src/combinators/choice.ts +34 -1
- package/src/combinators/first-set.ts +33 -7
- package/src/combinators/grammar.ts +39 -0
- package/src/combinators/keywords.ts +14 -3
- package/src/combinators/literal.ts +26 -0
- package/src/combinators/map.ts +60 -0
- package/src/combinators/ref.ts +26 -7
- package/src/combinators/regex.ts +23 -0
- package/src/combinators/repeat.ts +109 -16
- package/src/combinators/scalar.ts +30 -0
- package/src/combinators/sequence.ts +76 -161
- package/src/combinators/trivia-skip.ts +14 -1
- package/src/parse-context.ts +1 -0
- package/src/table/emit-assembly.ts +39 -16
- package/src/table/encode.ts +14 -2
- package/src/types.ts +8 -0
- package/src/version.ts +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -205,6 +205,10 @@ export type Combinator<T> = {
|
|
|
205
205
|
readonly _tag: string;
|
|
206
206
|
readonly _meta: ParserMeta;
|
|
207
207
|
readonly _def: ParserDef;
|
|
208
|
+
/** Experimental strict interpreter ABI: end >= 0 succeeds, ~failurePos fails. */
|
|
209
|
+
readonly _parseScalar?: ((input: string, pos: number, ctx: ParseContext) => number) | undefined;
|
|
210
|
+
/** Construction-owned sticky matcher for exact terminal fusion. */
|
|
211
|
+
readonly _stickyRegex?: RegExp;
|
|
208
212
|
parse(input: string, pos: number, ctx: ParseContext): ParseResult<T>;
|
|
209
213
|
};
|
|
210
214
|
export type DispatchCase = {
|
|
@@ -377,6 +381,8 @@ export type ParseContext = {
|
|
|
377
381
|
_fx?: string[] | undefined;
|
|
378
382
|
/** Framework-internal compiled-output committed-failure flag. */
|
|
379
383
|
_fc?: boolean | undefined;
|
|
384
|
+
/** Experimental strict interpreter semantic-value register. */
|
|
385
|
+
_sv?: unknown;
|
|
380
386
|
/**
|
|
381
387
|
* When set by completionsAt(), tracks the highest-position ParseFail seen
|
|
382
388
|
* during parsing up to _probe.offset. Used to return completions at the cursor
|
|
@@ -503,6 +509,8 @@ export type ParserMeta = {
|
|
|
503
509
|
isTrivia: boolean;
|
|
504
510
|
/** User-defined labels for labeled trivia arms (`label(name, parser)`). */
|
|
505
511
|
triviaKindLabels?: readonly string[];
|
|
512
|
+
/** Preclassified lightweight trivia scanner for the ordinary skip path. */
|
|
513
|
+
triviaScanner?: ((input: string, cur: number) => number) | null;
|
|
506
514
|
/** Set only by `classifiedTrivia()`: each root-visible category is a separate
|
|
507
515
|
* grammar arm rather than an arbitrary label on a broad recognizer. */
|
|
508
516
|
rootTriviaClassified?: true;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;IACf,oHAAoH;IACpH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,KAAK,CAAA;IACT,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;IACV;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;AAMnD,MAAM,MAAM,SAAS,GACjB;IAAE,GAAG,EAAE,SAAS,CAAC;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAC7D;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAKnD;IAAE,GAAG,EAAE,UAAU,CAAC;IAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAM3E;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAI,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;CAAE,GACpN;IAAE,GAAG,EAAE,UAAU,CAAC;IAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GACjO;IAAE,GAAG,EAAE,SAAS,CAAC;IAAG,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAKjD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAM,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9F;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GACnG;IAAE,GAAG,EAAE,UAAU,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAOjD;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,iGAAiG;IAAC,cAAc,CAAC,EAAE,IAAI,CAAA;CAAE,GACzP;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/J;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAI,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GACjD;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAKjD;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAI,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GACpD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAM,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpI;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAChE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAK,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAC/D;IAAE,GAAG,EAAE,SAAS,CAAC;IAAG,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;IAAC,8BAA8B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACpS;IAAE,GAAG,EAAE,MAAM,CAAC;IAAK,KAAK,EAAE,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GACrD;IAAE,GAAG,EAAE,KAAK,CAAC;IAAM,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAIhD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAI,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAC/C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAK,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,wSAAwS;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,oGAAoG;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,8JAA8J;IAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,sKAAsK;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,2DAA2D;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,yPAAyP;IAAC,YAAY,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAKzqD;IAAE,GAAG,EAAE,OAAO,CAAC;IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAK7E;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,UAAU,GAAG,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACrF;IAAE,GAAG,EAAE,SAAS,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,GAAG,EAAE,SAAS,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAC/E;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAG,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAK/F;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAG,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7G;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrG;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,CAAA;AAEtB,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;CACrE,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAA;AAEvE,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,mBAAmB,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,KAChC,OAAO,CAAA;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CACvB,IAAI,EAAE,MAAM,EAKZ,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACpC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,EACnC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,KACjC,OAAO,CAAC,GAAG;IACd,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACvD;;;;;;;;;;;OAWG;IACH,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5C;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;IAChE;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;CAC1E,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI;IACtC,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC,CAAA;AAEpE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3I,EAAE,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAA;IAC7F,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,CAAA;IACvF;mFAC+E;IAC/E,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IACtD;;;4BAGwB;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAGzB,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACxC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IAC5C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAChD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACnC;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,UAAU,EAAE,OAAO,CAAA;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC7B,0HAA0H;IAC1H,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;IAClC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACvC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IAClC;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC1B,iEAAiE;IACjE,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAA;IAC/D;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IAClC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACvC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACjC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACrC;;wEAEoE;IACpE,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAA;IACnE,+EAA+E;IAC/E,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACpC,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,GAAG,SAAS,CAAA;IACzE,uEAAuE;IACvE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IACnC,kFAAkF;IAClF,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAA;IACpD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAClC,iFAAiF;IACjF,UAAU,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;IACjD,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IACrD,kFAAkF;IAClF,aAAa,CAAC,EAAE;QACd,KAAK,CAAC,KAAK,EAAE;YACX,EAAE,EAAE,MAAM,CAAA;YACV,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAA;YAC1F,MAAM,EAAE,MAAM,CAAA;YACd,GAAG,CAAC,EAAE,MAAM,CAAA;SACb,GAAG,IAAI,CAAA;KACT,GAAG,SAAS,CAAA;CACd,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,gFAAgF;IAChF,QAAQ,EAAE,QAAQ,CAAA;IAClB,0DAA0D;IAC1D,eAAe,EAAE,OAAO,CAAA;IACxB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAA;IACjB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC;2EACuE;IACvE,oBAAoB,CAAC,EAAE,IAAI,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IAC/C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IACnD;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;IAC3C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACrC,CAAA;AAED,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAErB,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,GAAG,EAAE,gBAAgB,CAAC;IAAO,UAAU,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,GAAG,EAAE,sBAAsB,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,GACxD;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,GACrB;IAAE,GAAG,EAAE,cAAc,CAAC;IAAS,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAEnF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAG,GAAG,EAAE,QAAQ,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzC;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,OAAO,IAAI;IAClC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;IACjC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAC1B,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAClD,kGAAkG;IAClG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAChF;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG;QAAE,MAAM,EAAE,UAAU,EAAE,CAAA;KAAE,CAAA;IACvF,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAA;IACd;;;;;;OAMG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,SAAS,OAAO,oCAAoC,EAAE,yBAAyB,EAAE,CAAA;CACxG,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
* Kept in sync with `package.json` by `test/unit/version-sync.test.ts`, which fails
|
|
14
14
|
* the build if this constant drifts from the published version.
|
|
15
15
|
*/
|
|
16
|
-
export declare const PARSEMAN_VERSION = "0.50.
|
|
16
|
+
export declare const PARSEMAN_VERSION = "0.50.4";
|
|
17
17
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parseman",
|
|
3
|
-
"version": "0.50.
|
|
3
|
+
"version": "0.50.4",
|
|
4
4
|
"packageManager": "pnpm@10.15.1",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": "^20.19.0 || >=22.13.0"
|
|
7
7
|
},
|
|
8
|
-
"description": "Parser combinators that compile to optimized JavaScript
|
|
8
|
+
"description": "Parser combinators that compile to optimized JavaScript — use as a library or as a build-time macro",
|
|
9
9
|
"type": "module",
|
|
10
|
+
"sideEffects": false,
|
|
10
11
|
"author": "Matthew Dean <matthew-dean@users.noreply.github.com>",
|
|
11
12
|
"repository": {
|
|
12
13
|
"type": "git",
|
|
@@ -131,7 +132,8 @@
|
|
|
131
132
|
"load:jess": "node --import ./bench/jess/register.mjs bench/jess/load.ts",
|
|
132
133
|
"fixture:jess": "node --import ./bench/jess/register.mjs bench/jess/fixture.ts",
|
|
133
134
|
"bench:less": "node --import ./bench/jess/register.mjs bench/jess/fixture.ts less",
|
|
134
|
-
"bench:jess:ab": "node --import ./bench/jess/ab-register.mjs bench/jess/ab.ts"
|
|
135
|
+
"bench:jess:ab": "node --import ./bench/jess/ab-register.mjs bench/jess/ab.ts",
|
|
136
|
+
"bench:macro-optimize": "node --import tsx/esm bench/macro-compiled-optimize.ts"
|
|
135
137
|
},
|
|
136
138
|
"keywords": [
|
|
137
139
|
"parser",
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
import { union, intersects, matchesEmpty } from './first-set.ts'
|
|
6
6
|
import { deriveExpected } from './expect.ts'
|
|
7
7
|
import { rollbackTrivia, saveTriviaMark } from './trivia-skip.ts'
|
|
8
|
+
import { scalarOf } from './scalar.ts'
|
|
8
9
|
|
|
9
10
|
type ArmParser<T> = T extends GatedArm<infer U> ? Combinator<U> : T extends Combinator<infer U> ? Combinator<U> : never
|
|
10
11
|
type UnionArms<T extends (Combinator<unknown> | GatedArm<unknown>)[]> = {
|
|
@@ -49,10 +50,11 @@ export function choice<T extends [Combinator<unknown> | GatedArm<unknown>, ...(C
|
|
|
49
50
|
// the dispatched branch); a NON-disjoint gated choice falls to firstMatch — the
|
|
50
51
|
// greedy/longest-first strategies are incompatible with per-arm predicates.
|
|
51
52
|
const strategy = (disjoint || hasGates) ? null : detectStrategy(parsers)
|
|
53
|
+
const ordered = strategy?.tag === 'firstMatch' || strategy?.tag === 'sharedPrefix'
|
|
52
54
|
// `sharedPrefix` is a `firstMatch` specialization — the interpreter runs it via
|
|
53
55
|
// the firstMatch loop below, and codegen falls back to firstMatch under
|
|
54
56
|
// coverage/recovery/linkable — so it needs the same auto-not table computed.
|
|
55
|
-
const autoNot = (!disjoint && !hasGates &&
|
|
57
|
+
const autoNot = (!disjoint && !hasGates && ordered)
|
|
56
58
|
? computeAutoNot(parsers)
|
|
57
59
|
: parsers.map(() => null)
|
|
58
60
|
|
|
@@ -72,6 +74,36 @@ export function choice<T extends [Combinator<unknown> | GatedArm<unknown>, ...(C
|
|
|
72
74
|
sortedParsers = strategy.sortedIndices.map(i => parsers[i]!)
|
|
73
75
|
}
|
|
74
76
|
|
|
77
|
+
const scalarParsers = parsers.map(scalarOf)
|
|
78
|
+
const scalarEligible = !hasGates && parsers.every(p => p._parseScalar !== undefined)
|
|
79
|
+
&& (disjoint || ordered)
|
|
80
|
+
const scalarExpected = parsers.flatMap(deriveExpected)
|
|
81
|
+
const parseScalar = (input: string, pos: number, ctx: ParseContext): number => {
|
|
82
|
+
if (disjoint) {
|
|
83
|
+
const code = pos < input.length ? input.codePointAt(pos)! : -1
|
|
84
|
+
let idx = code >= 0 && code < 128 ? asciiDispatch![code]! : -1
|
|
85
|
+
if (idx < 0 && code >= 0) {
|
|
86
|
+
for (let i = 0; i < parsers.length; i++) {
|
|
87
|
+
if (inFirstSet(code, parsers[i]!._meta.firstSet)) { idx = i; break }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (idx >= 0) {
|
|
91
|
+
const gate = gates[idx]
|
|
92
|
+
if (!gate || gate(ctx.state)) return scalarParsers[idx]!(input, pos, ctx)
|
|
93
|
+
ctx._fx = deriveExpected(parsers[idx]!)
|
|
94
|
+
return ~pos
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
for (let i = 0; i < scalarParsers.length; i++) {
|
|
98
|
+
if (gates[i] && !gates[i]!(ctx.state)) continue
|
|
99
|
+
const end = scalarParsers[i]!(input, pos, ctx)
|
|
100
|
+
if (end >= 0 && (!autoNot[i] || !autoNotFires(input, end, autoNot[i]!))) return end
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
ctx._fx = scalarExpected
|
|
104
|
+
return ~pos
|
|
105
|
+
}
|
|
106
|
+
|
|
75
107
|
return {
|
|
76
108
|
_tag: 'choice',
|
|
77
109
|
_meta: meta,
|
|
@@ -83,6 +115,7 @@ export function choice<T extends [Combinator<unknown> | GatedArm<unknown>, ...(C
|
|
|
83
115
|
strategy: strategy ?? { tag: 'firstMatch' },
|
|
84
116
|
autoNot,
|
|
85
117
|
},
|
|
118
|
+
_parseScalar: scalarEligible ? parseScalar : undefined,
|
|
86
119
|
parse(input: string, pos: number, ctx: ParseContext): ParseResult<UnionArms<T>> {
|
|
87
120
|
const expected: string[] = []
|
|
88
121
|
let expectedAt = pos
|
|
@@ -63,11 +63,31 @@ export function classifyFinalChoice(
|
|
|
63
63
|
return { exclusive, firstSets, nullable }
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
/** The
|
|
67
|
-
|
|
66
|
+
/** The compose WINNER a named lazy ref resolves to — the same row the encoder's
|
|
67
|
+
* `lazy` case calls via `winners`/`scopedRef`. Winner-FIRST resolution is what makes
|
|
68
|
+
* first-set / nullability analysis AGREE with emission: a base piece's thunk still
|
|
69
|
+
* closes over its own binding, so a compose OVERRIDE (and any undefined cross-piece
|
|
70
|
+
* ref) would otherwise be invisible to the gate — the reducer reroutes, the recognizer
|
|
71
|
+
* does not. `undefined` → no winner; fall back to the thunk. Monolithic: the winner IS
|
|
72
|
+
* the thunk's target, a no-op. A winner that recurses back to `p` (recursive or
|
|
73
|
+
* self-alias rule) is caught by the shared `seen` guard → `any`, a sound over-approx. */
|
|
74
|
+
function winnerForRef(p: Combinator<unknown>, resolve: RefResolver | undefined): Combinator<unknown> | undefined {
|
|
68
75
|
if (resolve === undefined) return undefined
|
|
69
76
|
const name = (p as unknown as { _ruleName?: string })._ruleName
|
|
70
|
-
|
|
77
|
+
const w = name === undefined ? undefined : resolve(name)
|
|
78
|
+
// Skip a winner that merely wraps THIS reference (a transparent rules()/parser()
|
|
79
|
+
// alias): resolving to it is a self-hop, not an override — matches the encoder's
|
|
80
|
+
// own `winnerWrapsReference` guard so first-set analysis agrees with emission.
|
|
81
|
+
if (w === undefined || w === p) return undefined
|
|
82
|
+
let cur = w
|
|
83
|
+
for (const seen = new Set<Combinator<unknown>>(); !seen.has(cur); ) {
|
|
84
|
+
if (cur === p) return undefined
|
|
85
|
+
seen.add(cur)
|
|
86
|
+
const cd = cur._def as ParserDef
|
|
87
|
+
if (cd.tag !== 'grammar' && cd.tag !== 'trivia') return w
|
|
88
|
+
cur = cd.parser
|
|
89
|
+
}
|
|
90
|
+
return w
|
|
71
91
|
}
|
|
72
92
|
|
|
73
93
|
export function union(a: FirstSet, b: FirstSet): FirstSet {
|
|
@@ -190,9 +210,12 @@ function matchesEmptyBody(
|
|
|
190
210
|
case 'node':
|
|
191
211
|
case 'grammar':
|
|
192
212
|
case 'recover': return me(d.parser)
|
|
193
|
-
case 'lazy':
|
|
213
|
+
case 'lazy': {
|
|
214
|
+
const w = winnerForRef(p, resolve)
|
|
215
|
+
if (w !== undefined) return me(w)
|
|
194
216
|
try { return me(d.thunk()) }
|
|
195
|
-
catch {
|
|
217
|
+
catch { return true }
|
|
218
|
+
}
|
|
196
219
|
default: return true // scanTo / guard / unknown → assume nullable (safe)
|
|
197
220
|
}
|
|
198
221
|
}
|
|
@@ -338,9 +361,12 @@ function firstSetBody(
|
|
|
338
361
|
case 'regex':
|
|
339
362
|
case 'keywords': return p._meta.firstSet // terminals: no refs, cached set is exact
|
|
340
363
|
case 'dispatch': return fs(d.selector)
|
|
341
|
-
case 'lazy':
|
|
364
|
+
case 'lazy': {
|
|
365
|
+
const w = winnerForRef(p, resolve)
|
|
366
|
+
if (w !== undefined) return fs(w)
|
|
342
367
|
try { return fs(d.thunk()) }
|
|
343
|
-
catch {
|
|
368
|
+
catch { return any() }
|
|
369
|
+
}
|
|
344
370
|
case 'choice': {
|
|
345
371
|
let out: FirstSet = empty()
|
|
346
372
|
for (const arm of d.parsers) out = union(out, fs(arm))
|
|
@@ -4,6 +4,7 @@ import { markUnusedValues } from '../compiler/value-usage.ts'
|
|
|
4
4
|
import { triviaKindMask } from '../cst/trivia-kinds.ts'
|
|
5
5
|
import { refuseUnclassifiedRootScope } from '../cst/root-trivia-scope.ts'
|
|
6
6
|
import { createParseContext } from '../parse-context.ts'
|
|
7
|
+
import { scalarOf, scalarRootOf, type ScalarParser } from './scalar.ts'
|
|
7
8
|
|
|
8
9
|
export type ParseOptions = {
|
|
9
10
|
trackLines?: boolean
|
|
@@ -132,6 +133,27 @@ export function parser<T>(opts: ParserOptions, root: Combinator<T>): ParsemanPar
|
|
|
132
133
|
: scopeLabels !== undefined ? triviaKindMask(scopeLabels, captureKinds)
|
|
133
134
|
: undefined
|
|
134
135
|
const inheritCaptureMask = captureKinds !== undefined && scopeLabels === undefined
|
|
136
|
+
const rootScalar = scalarOf(root)
|
|
137
|
+
const scalarEligible = opts.trackLines !== true && opts.recover !== true
|
|
138
|
+
&& !opaqueRootCapture && !forceCaptureTrivia && captureKinds === undefined
|
|
139
|
+
const parseScalar = scalarEligible
|
|
140
|
+
? (input: string, pos: number, ctx: ParseContext): number => {
|
|
141
|
+
const savedTrivia = ctx.trivia
|
|
142
|
+
const savedLabels = ctx.triviaKindLabels
|
|
143
|
+
if (clearTrivia) {
|
|
144
|
+
ctx.trivia = undefined
|
|
145
|
+
ctx.triviaKindLabels = undefined
|
|
146
|
+
} else if (scopeTrivia !== undefined) {
|
|
147
|
+
ctx.trivia = scopeTrivia
|
|
148
|
+
ctx.triviaKindLabels = scopeLabels
|
|
149
|
+
}
|
|
150
|
+
const end = rootScalar(input, pos, ctx)
|
|
151
|
+
ctx.trivia = savedTrivia
|
|
152
|
+
ctx.triviaKindLabels = savedLabels
|
|
153
|
+
return end
|
|
154
|
+
}
|
|
155
|
+
: undefined
|
|
156
|
+
let publicScalar: ScalarParser | null | undefined
|
|
135
157
|
const grammar: ParsemanParser<T> = {
|
|
136
158
|
_tag: 'grammar',
|
|
137
159
|
_meta: {
|
|
@@ -155,7 +177,20 @@ export function parser<T>(opts: ParserOptions, root: Combinator<T>): ParsemanPar
|
|
|
155
177
|
constructionTrackLines: trackLinesPolicy,
|
|
156
178
|
...(captureKinds === undefined ? {} : { constructionCaptureTriviaKinds: captureKinds }),
|
|
157
179
|
},
|
|
180
|
+
_parseScalar: parseScalar,
|
|
158
181
|
parse(input: string, pos?: number, _ctx?: ParseContext): ParseResult<T> {
|
|
182
|
+
if (pos === undefined && _ctx === undefined) {
|
|
183
|
+
publicScalar ??= scalarRootOf(grammar) ?? null
|
|
184
|
+
if (publicScalar) {
|
|
185
|
+
const ctx = createParseContext()
|
|
186
|
+
const end = publicScalar(input, 0, ctx)
|
|
187
|
+
if (end < 0) {
|
|
188
|
+
const at = ~end
|
|
189
|
+
return { ok: false, expected: ctx._fx ?? [], span: { start: at, end: at } }
|
|
190
|
+
}
|
|
191
|
+
return { ok: true, value: ctx._sv as T, span: { start: 0, end } }
|
|
192
|
+
}
|
|
193
|
+
}
|
|
159
194
|
if (refuseUnclassified) refuseUnclassifiedRootScope(_ctx?._rootTriviaStrictScopes)
|
|
160
195
|
const trackLines = trackLinesOf(_ctx)
|
|
161
196
|
const lineContext = trackLines && _ctx?._lineIndex === undefined && _ctx?._lineStarts === undefined
|
|
@@ -243,6 +278,10 @@ export function parse<T>(
|
|
|
243
278
|
_analyzed.add(combinator)
|
|
244
279
|
markUnusedValues(combinator)
|
|
245
280
|
}
|
|
281
|
+
if (!opts.trackLines && !opts.recover && combinator._def.tag === 'grammar'
|
|
282
|
+
&& combinator._meta.grammarScanSkip === undefined) {
|
|
283
|
+
return (combinator as ParsemanParser<T>).parse(input)
|
|
284
|
+
}
|
|
246
285
|
const trackLines = opts.trackLines ?? combinator._meta.grammarTrackLines ?? false
|
|
247
286
|
const lineContext = trackLines ? createParseLineContext(input, 0) : undefined
|
|
248
287
|
const lineIndex = lineContext?.lineIndex
|
|
@@ -4,6 +4,7 @@ import { caseFoldVariants } from './case-fold.ts'
|
|
|
4
4
|
import { failAt } from './probe.ts'
|
|
5
5
|
import { pushCstLeaf, cstCaptureActive } from '../cst/capture-buffer.ts'
|
|
6
6
|
import { directTerminalFailureExpected } from './expected.ts'
|
|
7
|
+
import type { ScalarParser } from './scalar.ts'
|
|
7
8
|
|
|
8
9
|
export type KeywordsOptions = {
|
|
9
10
|
/** Match case-insensitively. */
|
|
@@ -141,17 +142,27 @@ export function keywords(words: readonly string[], opts: KeywordsOptions = {}):
|
|
|
141
142
|
caseInsensitive: opts.caseInsensitive ?? false,
|
|
142
143
|
boundary: opts.boundary,
|
|
143
144
|
} as const
|
|
145
|
+
const expected = directTerminalFailureExpected(def)
|
|
146
|
+
const parseScalar: ScalarParser = (input, pos, ctx) => {
|
|
147
|
+
re.lastIndex = pos
|
|
148
|
+
const m = re.exec(input)
|
|
149
|
+
if (m === null) {
|
|
150
|
+
ctx._fx = expected
|
|
151
|
+
return ~pos
|
|
152
|
+
}
|
|
153
|
+
ctx._sv = m[0]!
|
|
154
|
+
return pos + m[0]!.length
|
|
155
|
+
}
|
|
144
156
|
|
|
145
157
|
return {
|
|
146
158
|
_tag: 'keywords',
|
|
147
159
|
_meta: meta,
|
|
148
160
|
_def: def,
|
|
161
|
+
_parseScalar: parseScalar,
|
|
149
162
|
parse(input: string, pos: number, ctx: ParseContext): ParseResult<string> {
|
|
150
163
|
re.lastIndex = pos
|
|
151
164
|
const m = re.exec(input)
|
|
152
|
-
if (m === null
|
|
153
|
-
return failAt(ctx, directTerminalFailureExpected(def), pos)
|
|
154
|
-
}
|
|
165
|
+
if (m === null) return failAt(ctx, directTerminalFailureExpected(def), pos)
|
|
155
166
|
const value = m[0]!
|
|
156
167
|
const span = { start: pos, end: pos + value.length }
|
|
157
168
|
if (cstCaptureActive(ctx)) pushCstLeaf(ctx, { _tag: 'leaf', value, span })
|
|
@@ -4,6 +4,7 @@ import { failAt } from './probe.ts'
|
|
|
4
4
|
import { pushCstLeaf, cstCaptureActive } from '../cst/capture-buffer.ts'
|
|
5
5
|
import { recordLineRangeFromContext } from '../line-index.ts'
|
|
6
6
|
import { directTerminalFailureExpected } from './expected.ts'
|
|
7
|
+
import type { ScalarParser } from './scalar.ts'
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* ASCII case-fold equality — the interpreter twin of the compiler's `foldEq`
|
|
@@ -41,6 +42,30 @@ export function literal(value: string, opts: LiteralOptions = {}): Combinator<st
|
|
|
41
42
|
isTrivia: false,
|
|
42
43
|
}
|
|
43
44
|
const canMatchNewline = meta.canMatchNewline
|
|
45
|
+
const parseScalar: ScalarParser = !caseInsensitive && value.length === 1
|
|
46
|
+
? (() => {
|
|
47
|
+
const code = value.charCodeAt(0)
|
|
48
|
+
return (input, pos, ctx) => {
|
|
49
|
+
if (input.charCodeAt(pos) === code) {
|
|
50
|
+
ctx._sv = value
|
|
51
|
+
return pos + 1
|
|
52
|
+
}
|
|
53
|
+
ctx._fx = expected
|
|
54
|
+
return ~pos
|
|
55
|
+
}
|
|
56
|
+
})()
|
|
57
|
+
: (input, pos, ctx) => {
|
|
58
|
+
const end = pos + value.length
|
|
59
|
+
if (end <= input.length) {
|
|
60
|
+
const matchedValue = caseInsensitive ? input.slice(pos, end) : value
|
|
61
|
+
if (caseInsensitive ? asciiFoldEq(matchedValue, value) : input.startsWith(value, pos)) {
|
|
62
|
+
ctx._sv = matchedValue
|
|
63
|
+
return end
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
ctx._fx = expected
|
|
67
|
+
return ~pos
|
|
68
|
+
}
|
|
44
69
|
|
|
45
70
|
if (caseInsensitive) {
|
|
46
71
|
const upper = value.toUpperCase()
|
|
@@ -98,6 +123,7 @@ export function literal(value: string, opts: LiteralOptions = {}): Combinator<st
|
|
|
98
123
|
_tag: 'literal',
|
|
99
124
|
_meta: meta,
|
|
100
125
|
_def: { tag: 'literal', value, caseInsensitive },
|
|
126
|
+
_parseScalar: parseScalar,
|
|
101
127
|
parse,
|
|
102
128
|
}
|
|
103
129
|
}
|
package/src/combinators/map.ts
CHANGED
|
@@ -3,15 +3,73 @@ import { analyzeLabeledTrivia } from '../cst/trivia-kinds.ts'
|
|
|
3
3
|
import { choice } from './choice.ts'
|
|
4
4
|
import { matchesEmpty } from './first-set.ts'
|
|
5
5
|
import { oneOrMore } from './repeat.ts'
|
|
6
|
+
import { fastTriviaScanner } from './trivia-skip.ts'
|
|
7
|
+
import { scalarOf } from './scalar.ts'
|
|
8
|
+
|
|
9
|
+
const JSON_STRING_BODY = String.raw`(?:[^"\\]|\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4}))*`
|
|
6
10
|
|
|
7
11
|
export function transform<T, U>(
|
|
8
12
|
combinator: Combinator<T>,
|
|
9
13
|
fn: (value: T, span: { start: number; end: number }) => U
|
|
10
14
|
): Combinator<U> {
|
|
15
|
+
const observesSpan = fn.length > 1
|
|
16
|
+
const sequenceDef = combinator._def.tag === 'sequence' ? combinator._def : undefined
|
|
17
|
+
const terms = sequenceDef?.parsers
|
|
18
|
+
const inner = terms?.[1]
|
|
19
|
+
const fused = terms?.length === 3
|
|
20
|
+
&& terms[0]!._def.tag === 'literal' && terms[0]!._def.value === '"' && !terms[0]!._def.caseInsensitive
|
|
21
|
+
&& inner!._def.tag === 'regex' && inner!._def.source === JSON_STRING_BODY && inner!._def.flags === ''
|
|
22
|
+
&& terms[2]!._def.tag === 'literal' && terms[2]!._def.value === '"' && !terms[2]!._def.caseInsensitive
|
|
23
|
+
&& inner!._stickyRegex !== undefined
|
|
24
|
+
const child = scalarOf(combinator)
|
|
25
|
+
const parseScalar = fused
|
|
26
|
+
? (() => {
|
|
27
|
+
const body = inner!._stickyRegex!
|
|
28
|
+
const tuple = ['"', '', '"']
|
|
29
|
+
const expected = [JSON.stringify('"')]
|
|
30
|
+
return (input: string, pos: number, ctx: ParseContext): number => {
|
|
31
|
+
if (ctx.trivia !== undefined) {
|
|
32
|
+
const end = child(input, pos, ctx)
|
|
33
|
+
if (end < 0) return end
|
|
34
|
+
ctx._sv = observesSpan
|
|
35
|
+
? fn(ctx._sv as T, { start: pos, end })
|
|
36
|
+
: (fn as (value: T) => U)(ctx._sv as T)
|
|
37
|
+
return end
|
|
38
|
+
}
|
|
39
|
+
if (input.charCodeAt(pos) !== 34) {
|
|
40
|
+
ctx._fx = expected
|
|
41
|
+
return ~pos
|
|
42
|
+
}
|
|
43
|
+
body.lastIndex = pos + 1
|
|
44
|
+
const match = body.exec(input)!
|
|
45
|
+
const close = pos + 1 + match[0]!.length
|
|
46
|
+
if (input.charCodeAt(close) !== 34) {
|
|
47
|
+
ctx._fx = expected
|
|
48
|
+
return ~close
|
|
49
|
+
}
|
|
50
|
+
tuple[1] = match[0]!
|
|
51
|
+
const end = close + 1
|
|
52
|
+
ctx._sv = observesSpan
|
|
53
|
+
? fn(tuple as T, { start: pos, end })
|
|
54
|
+
: (fn as (value: T) => U)(tuple as T)
|
|
55
|
+
return end
|
|
56
|
+
}
|
|
57
|
+
})()
|
|
58
|
+
: (() => {
|
|
59
|
+
return (input: string, pos: number, ctx: ParseContext): number => {
|
|
60
|
+
const end = child(input, pos, ctx)
|
|
61
|
+
if (end < 0) return end
|
|
62
|
+
ctx._sv = observesSpan
|
|
63
|
+
? fn(ctx._sv as T, { start: pos, end })
|
|
64
|
+
: (fn as (value: T) => U)(ctx._sv as T)
|
|
65
|
+
return end
|
|
66
|
+
}
|
|
67
|
+
})()
|
|
11
68
|
return {
|
|
12
69
|
_tag: 'transform',
|
|
13
70
|
_meta: combinator._meta,
|
|
14
71
|
_def: { tag: 'transform', parser: combinator as Combinator<unknown>, fn: fn as (v: unknown, span: { start: number; end: number }) => unknown },
|
|
72
|
+
_parseScalar: parseScalar,
|
|
15
73
|
parse(input: string, pos: number, ctx: ParseContext): ParseResult<U> {
|
|
16
74
|
const result = combinator.parse(input, pos, ctx)
|
|
17
75
|
if (!result.ok) return result
|
|
@@ -27,9 +85,11 @@ export function trivia<T>(combinator: Combinator<T>): Combinator<T> {
|
|
|
27
85
|
_meta: {
|
|
28
86
|
...combinator._meta,
|
|
29
87
|
isTrivia: true,
|
|
88
|
+
triviaScanner: fastTriviaScanner(combinator as Combinator<unknown>),
|
|
30
89
|
...(kindLabels ? { triviaKindLabels: kindLabels } : {}),
|
|
31
90
|
},
|
|
32
91
|
_def: { tag: 'trivia', parser: combinator as Combinator<unknown> },
|
|
92
|
+
_parseScalar: scalarOf(combinator),
|
|
33
93
|
parse: combinator.parse.bind(combinator),
|
|
34
94
|
}
|
|
35
95
|
}
|
package/src/combinators/ref.ts
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type { Combinator, ParseContext, ParseResult, ParserMeta } from '../types.ts'
|
|
2
2
|
import { any } from './first-set.ts'
|
|
3
3
|
import { hasOwnTriviaBoundary } from './trivia-boundary.ts'
|
|
4
|
+
import { scalarOf, type ScalarParser } from './scalar.ts'
|
|
5
|
+
|
|
6
|
+
function withRuleTrivia<T>(
|
|
7
|
+
trivia: Combinator<unknown>, ctx: ParseContext, run: () => T,
|
|
8
|
+
): T {
|
|
9
|
+
const savedLabels = ctx.triviaKindLabels
|
|
10
|
+
ctx.trivia = trivia
|
|
11
|
+
ctx.triviaKindLabels = trivia._meta.triviaKindLabels
|
|
12
|
+
try { return run() }
|
|
13
|
+
finally { ctx.trivia = undefined; ctx.triviaKindLabels = savedLabels }
|
|
14
|
+
}
|
|
4
15
|
|
|
5
16
|
/**
|
|
6
17
|
* Create a forward-declared parser slot for mutually recursive grammars.
|
|
@@ -17,6 +28,7 @@ import { hasOwnTriviaBoundary } from './trivia-boundary.ts'
|
|
|
17
28
|
*/
|
|
18
29
|
export function ref<T>(): Combinator<T> & { define(p: Combinator<T>): void } {
|
|
19
30
|
let resolved: Combinator<T> | null = null
|
|
31
|
+
let resolvedScalar: ScalarParser | null = null
|
|
20
32
|
/** `hasOwnTriviaBoundary(resolved)`, resolved at `define()`. See `parse`. */
|
|
21
33
|
let ownBoundary = false
|
|
22
34
|
|
|
@@ -36,8 +48,18 @@ export function ref<T>(): Combinator<T> & { define(p: Combinator<T>): void } {
|
|
|
36
48
|
return resolved as Combinator<unknown>
|
|
37
49
|
},
|
|
38
50
|
},
|
|
51
|
+
_parseScalar(input: string, pos: number, ctx: ParseContext): number {
|
|
52
|
+
const scalar = resolvedScalar
|
|
53
|
+
if (!scalar) throw new Error('ref<T>() used before .define() was called')
|
|
54
|
+
const gt = meta.grammarTrivia
|
|
55
|
+
if (gt !== undefined && ownBoundary && ctx.trivia === undefined) {
|
|
56
|
+
return withRuleTrivia(gt, ctx, () => scalar(input, pos, ctx))
|
|
57
|
+
}
|
|
58
|
+
return scalar(input, pos, ctx)
|
|
59
|
+
},
|
|
39
60
|
parse(input: string, pos: number, ctx: ParseContext): ParseResult<T> {
|
|
40
|
-
|
|
61
|
+
const parser = resolved
|
|
62
|
+
if (!parser) throw new Error('ref<T>() used before .define() was called')
|
|
41
63
|
// A RULE CARRIES ITS OWN AMBIENT TRIVIA — see `rules()` in parser.ts, which
|
|
42
64
|
// stamps `grammarTrivia` on EVERY rule precisely so that entering any one of
|
|
43
65
|
// them installs it. Reading it only at the parse ENTRY (grammar.ts) made the
|
|
@@ -83,17 +105,14 @@ export function ref<T>(): Combinator<T> & { define(p: Combinator<T>): void } {
|
|
|
83
105
|
// Hot path is one boolean check.
|
|
84
106
|
const gt = meta.grammarTrivia
|
|
85
107
|
if (gt !== undefined && ownBoundary && ctx.trivia === undefined) {
|
|
86
|
-
|
|
87
|
-
ctx.trivia = gt
|
|
88
|
-
ctx.triviaKindLabels = gt._meta.triviaKindLabels
|
|
89
|
-
try { return resolved.parse(input, pos, ctx) }
|
|
90
|
-
finally { ctx.trivia = undefined; ctx.triviaKindLabels = savedLabels }
|
|
108
|
+
return withRuleTrivia(gt, ctx, () => parser.parse(input, pos, ctx))
|
|
91
109
|
}
|
|
92
|
-
return
|
|
110
|
+
return parser.parse(input, pos, ctx)
|
|
93
111
|
},
|
|
94
112
|
define(p: Combinator<T>): void {
|
|
95
113
|
if (resolved) throw new Error('ref<T>() already defined')
|
|
96
114
|
resolved = p
|
|
115
|
+
resolvedScalar = scalarOf(p)
|
|
97
116
|
ownBoundary = hasOwnTriviaBoundary(p as Combinator<unknown>)
|
|
98
117
|
meta.firstSet = p._meta.firstSet
|
|
99
118
|
meta.canMatchNewline = p._meta.canMatchNewline
|
package/src/combinators/regex.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { recordLineRangeFromContext } from '../line-index.ts'
|
|
|
6
6
|
import { shorthandRanges, parseClassRanges } from '../regex/classes.ts'
|
|
7
7
|
import { firstSetFromRegex } from '../regex/first-set.ts'
|
|
8
8
|
import { directTerminalFailureExpected } from './expected.ts'
|
|
9
|
+
import type { ScalarParser } from './scalar.ts'
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* A regex terminal's first-set (for choice-dispatch fast paths) is derived by
|
|
@@ -143,11 +144,33 @@ export function regex(pattern: string | RegExp, flags = ''): Combinator<string>
|
|
|
143
144
|
const canMatchNewline = raw.canMatchNewline
|
|
144
145
|
const meta: ParserMeta = { firstSet, canMatchNewline, isTrivia: false }
|
|
145
146
|
const def = { tag: 'regex', source, flags: resolvedFlags } as const
|
|
147
|
+
const expected = directTerminalFailureExpected(def)
|
|
148
|
+
const parseScalar: ScalarParser = (input, pos, ctx) => {
|
|
149
|
+
const scanEnd = scan?.(input, pos)
|
|
150
|
+
if (scanEnd !== undefined) {
|
|
151
|
+
if (scanEnd === null) {
|
|
152
|
+
ctx._fx = expected
|
|
153
|
+
return ~pos
|
|
154
|
+
}
|
|
155
|
+
ctx._sv = input.slice(pos, scanEnd)
|
|
156
|
+
return scanEnd
|
|
157
|
+
}
|
|
158
|
+
anchored.lastIndex = pos
|
|
159
|
+
const match = anchored.exec(input)
|
|
160
|
+
if (match === null) {
|
|
161
|
+
ctx._fx = expected
|
|
162
|
+
return ~pos
|
|
163
|
+
}
|
|
164
|
+
ctx._sv = match[0]!
|
|
165
|
+
return pos + match[0]!.length
|
|
166
|
+
}
|
|
146
167
|
|
|
147
168
|
return {
|
|
148
169
|
_tag: 'regex',
|
|
149
170
|
_meta: meta,
|
|
150
171
|
_def: def,
|
|
172
|
+
_stickyRegex: anchored,
|
|
173
|
+
_parseScalar: parseScalar,
|
|
151
174
|
parse(input: string, pos: number, ctx: ParseContext): ParseResult<string> {
|
|
152
175
|
const scanEnd = scan?.(input, pos)
|
|
153
176
|
if (scanEnd !== undefined) {
|