@thomasfosterau/effect-parse 0.0.0 → 0.2.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/README.md +247 -230
- package/dist/Ascii.d.ts +32 -53
- package/dist/Ascii.d.ts.map +1 -1
- package/dist/Ascii.js +576 -571
- package/dist/Ascii.js.map +1 -1
- package/dist/Binary.d.ts +6 -29
- package/dist/Binary.d.ts.map +1 -1
- package/dist/Binary.js +129 -116
- package/dist/Binary.js.map +1 -1
- package/dist/Bits.d.ts +4 -2
- package/dist/Bits.d.ts.map +1 -1
- package/dist/Bits.js +121 -123
- package/dist/Bits.js.map +1 -1
- package/dist/Compiler.d.ts +39 -0
- package/dist/Compiler.d.ts.map +1 -0
- package/dist/Compiler.js +48 -0
- package/dist/Compiler.js.map +1 -0
- package/dist/Encoding.d.ts +29 -46
- package/dist/Encoding.d.ts.map +1 -1
- package/dist/Encoding.js +76 -75
- package/dist/Encoding.js.map +1 -1
- package/dist/Expression.d.ts +15 -49
- package/dist/Expression.d.ts.map +1 -1
- package/dist/Expression.js +143 -131
- package/dist/Expression.js.map +1 -1
- package/dist/Input.d.ts +206 -177
- package/dist/Input.d.ts.map +1 -1
- package/dist/Input.js +317 -299
- package/dist/Input.js.map +1 -1
- package/dist/Nom.d.ts +44 -84
- package/dist/Nom.d.ts.map +1 -1
- package/dist/Nom.js +423 -453
- package/dist/Nom.js.map +1 -1
- package/dist/ParseError.d.ts +54 -49
- package/dist/ParseError.d.ts.map +1 -1
- package/dist/ParseError.js +233 -275
- package/dist/ParseError.js.map +1 -1
- package/dist/Parser.d.ts +345 -313
- package/dist/Parser.d.ts.map +1 -1
- package/dist/Parser.js +2010 -1802
- package/dist/Parser.js.map +1 -1
- package/dist/ParserSchema.d.ts +8 -7
- package/dist/ParserSchema.d.ts.map +1 -1
- package/dist/ParserSchema.js +49 -49
- package/dist/ParserSchema.js.map +1 -1
- package/dist/ParserStream.d.ts +26 -20
- package/dist/ParserStream.d.ts.map +1 -1
- package/dist/ParserStream.js +267 -255
- package/dist/ParserStream.js.map +1 -1
- package/dist/Syntax.d.ts +401 -0
- package/dist/Syntax.d.ts.map +1 -0
- package/dist/Syntax.js +717 -0
- package/dist/Syntax.js.map +1 -0
- package/dist/Text.d.ts +98 -134
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +534 -496
- package/dist/Text.js.map +1 -1
- package/dist/Token.d.ts +60 -42
- package/dist/Token.d.ts.map +1 -1
- package/dist/Token.js +331 -265
- package/dist/Token.js.map +1 -1
- package/dist/index.d.ts +16 -17
- package/dist/index.js +16 -17
- package/dist/internal/compiler/closure.d.ts +14 -16
- package/dist/internal/compiler/closure.d.ts.map +1 -1
- package/dist/internal/compiler/closure.js +1458 -1637
- package/dist/internal/compiler/closure.js.map +1 -1
- package/dist/internal/compiler/entries.d.ts +11 -11
- package/dist/internal/compiler/entries.d.ts.map +1 -1
- package/dist/internal/compiler/entries.js +36 -26
- package/dist/internal/compiler/entries.js.map +1 -1
- package/dist/internal/compiler/first.d.ts +19 -19
- package/dist/internal/compiler/first.d.ts.map +1 -1
- package/dist/internal/compiler/first.js +251 -227
- package/dist/internal/compiler/first.js.map +1 -1
- package/dist/internal/compiler/jit.d.ts +6 -17
- package/dist/internal/compiler/jit.d.ts.map +1 -1
- package/dist/internal/compiler/jit.js +860 -988
- package/dist/internal/compiler/jit.js.map +1 -1
- package/dist/internal/compiler/registry.d.ts +20 -21
- package/dist/internal/compiler/registry.d.ts.map +1 -1
- package/dist/internal/compiler/registry.js +21 -41
- package/dist/internal/compiler/registry.js.map +1 -1
- package/dist/internal/compiler/sets.d.ts +9 -13
- package/dist/internal/compiler/sets.d.ts.map +1 -1
- package/dist/internal/compiler/sets.js +76 -73
- package/dist/internal/compiler/sets.js.map +1 -1
- package/dist/internal/entries.d.ts +3 -3
- package/dist/internal/entries.d.ts.map +1 -1
- package/dist/internal/entries.js +38 -30
- package/dist/internal/entries.js.map +1 -1
- package/dist/internal/node.d.ts +177 -173
- package/dist/internal/node.d.ts.map +1 -1
- package/dist/internal/node.js +77 -66
- package/dist/internal/node.js.map +1 -1
- package/dist/internal/numbers.d.ts +7 -8
- package/dist/internal/numbers.d.ts.map +1 -1
- package/dist/internal/numbers.js +246 -276
- package/dist/internal/numbers.js.map +1 -1
- package/dist/internal/resume.d.ts +6 -24
- package/dist/internal/resume.d.ts.map +1 -1
- package/dist/internal/resume.js +30 -29
- package/dist/internal/resume.js.map +1 -1
- package/dist/internal/run.d.ts +15 -0
- package/dist/internal/run.d.ts.map +1 -0
- package/dist/internal/run.js +36 -0
- package/dist/internal/run.js.map +1 -0
- package/dist/internal/stack.d.ts +16 -0
- package/dist/internal/stack.d.ts.map +1 -0
- package/dist/internal/stack.js +26 -0
- package/dist/internal/stack.js.map +1 -0
- package/dist/internal/syntax.d.ts +146 -0
- package/dist/internal/syntax.d.ts.map +1 -0
- package/dist/internal/syntax.js +305 -0
- package/dist/internal/syntax.js.map +1 -0
- package/dist/internal/text.d.ts +10 -2
- package/dist/internal/text.d.ts.map +1 -1
- package/dist/internal/text.js +295 -345
- package/dist/internal/text.js.map +1 -1
- package/dist/internal/tokens.d.ts +25 -30
- package/dist/internal/tokens.d.ts.map +1 -1
- package/dist/internal/tokens.js +369 -363
- package/dist/internal/tokens.js.map +1 -1
- package/package.json +42 -28
- package/src/Ascii.ts +278 -187
- package/src/Binary.ts +150 -44
- package/src/Bits.ts +6 -3
- package/src/Compiler.ts +98 -0
- package/src/Expression.ts +10 -5
- package/src/Input.ts +106 -28
- package/src/Nom.ts +4 -3
- package/src/ParseError.ts +48 -51
- package/src/Parser.ts +1163 -795
- package/src/ParserStream.ts +104 -80
- package/src/Syntax.ts +900 -0
- package/src/Text.ts +272 -187
- package/src/Token.ts +180 -87
- package/src/index.ts +2 -0
- package/src/internal/compiler/closure.ts +121 -88
- package/src/internal/compiler/entries.ts +21 -8
- package/src/internal/compiler/first.ts +17 -15
- package/src/internal/compiler/jit.ts +360 -157
- package/src/internal/compiler/registry.ts +12 -33
- package/src/internal/compiler/sets.ts +17 -11
- package/src/internal/entries.ts +4 -2
- package/src/internal/node.ts +51 -37
- package/src/internal/numbers.ts +22 -20
- package/src/internal/resume.ts +8 -4
- package/src/internal/run.ts +41 -0
- package/src/internal/stack.ts +36 -0
- package/src/internal/syntax.ts +421 -0
- package/src/internal/text.ts +32 -25
- package/src/internal/tokens.ts +96 -51
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jit.js","sourceRoot":"","sources":["../../../src/internal/compiler/jit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jit.js","names":["closureBackend"],"sources":["../../../src/internal/compiler/jit.ts"],"sourcesContent":["// fallow-ignore-file duplicate-export -- every compiler module exports its `backend` under the same name,\n// which the Compiler module imports by path; no barrel re-exports both.\n/**\n * The JIT: emits JavaScript source for a parser's description and builds\n * it with `new Function`.\n *\n * Every rule (the root, every `suspend` target and every non-leaf parser\n * with several parents) becomes a function `f(p)` taking the cursor and\n * returning the value, or `Fail`, leaving the new cursor in the register\n * `P`. Everything else is inlined as straight-line code, with labelled\n * blocks for failure. The cursor is a local; the input and its end are\n * hoisted into locals. Failures only set `state.mode`, as in the closure\n * compiler.\n *\n * Nodes without an inline form run their closure-compiled steps (which run\n * the interpreter for what they can't compile) on the shared state, with\n * `state.pos` kept in sync.\n */\nimport * as Predicate from \"effect/Predicate\"\nimport * as Option from \"effect/Option\"\nimport type { Encoding } from \"../../Encoding.js\"\nimport type { State } from \"../../Input.js\"\nimport { Fail } from \"../../Input.js\"\nimport type { Node, NodeOf, ParserLike } from \"../node.js\"\nimport { addEntry, flushEntries, fromEntries, isPlainKey } from \"../entries.js\"\nimport { children, nodeOf } from \"../node.js\"\nimport { floatScan, floatTexts, scanFloatBytes, scanFloatString, toFloat } from \"../numbers.js\"\nimport { compileAny } from \"../tokens.js\"\nimport * as Resume from \"../resume.js\"\nimport { charOf, fastLimit, latin1, string, utf16be, utf16le, utf8, validate } from \"../text.js\"\nimport type { ClosureCompiler, Fallback, Step } from \"./closure.js\"\nimport { backend as closureBackend, createClosureCompiler } from \"./closure.js\"\nimport { buildsEntries, pairOf } from \"./entries.js\"\nimport type { Backend } from \"./registry.js\"\nimport type { First } from \"./first.js\"\nimport { planAlt, Strict } from \"./first.js\"\nimport type { CharSet } from \"./sets.js\"\nimport { kindOfEncoding, reachesAbove, TableSize, textSet, tokenSet } from \"./sets.js\"\n\n/** Helpers available to generated code as `R`. */\nconst runtime = {\n take: Resume.take,\n save: Resume.save,\n Done: Resume.Done,\n /** Records the result of a resumed repetition (see `Resume.done`). */\n done: (state: State<any>, key: object, entry: number, value: unknown, pos: number): void =>\n Resume.save(state, key, entry, new Resume.Done(value, pos)),\n some: Option.some,\n none: Option.none,\n charOf,\n scanFloatString,\n scanFloatBytes,\n isPlainKey,\n addEntry,\n flushEntries,\n /** `Text.taken`: the text of `[start, end)`, or `Fail` if it is malformed. */\n textOf: (enc: Encoding<any>, fast: number, s: State<any>, start: number, end: number): unknown => {\n const input = s.input\n let i = start\n if (s.inputKind === 0) while (i < end && (input as string).charCodeAt(i) < fast) i++\n else while (i < end && (input as Uint8Array)[i] < fast) i++\n if (i < end && validate(enc, s, i, end) < 0) {\n s.mode = \"Backtrack\"\n return Fail\n }\n return enc.text(input, start, end)\n }\n}\n\nlet checked: FunctionConstructor | undefined\nlet supported = false\n\n/**\n * Whether `new Function` works here (it doesn't under a Content Security\n * Policy). Checked once, and again if `globalThis.Function` is replaced.\n */\nconst jitSupported = (): boolean => {\n if (checked !== globalThis.Function) {\n checked = globalThis.Function\n try {\n supported = checked(\"return true\")() === true\n } catch {\n supported = false\n }\n }\n return supported\n}\n\nconst BT = `$S.mode=\"Backtrack\";`\n\nconst builtinEncodings: ReadonlySet<Encoding<any>> = /*#__PURE__*/ new Set([string, utf8, utf16le, utf16be, latin1])\n\n/** How many units past the cursor a single token can depend on (see the closure compiler). */\nconst Margin = 4\n\n/** How generated code reads the code units of an encoding (see `Emitter.reader`). */\ninterface Reader {\n readonly width: number\n readonly fast: number\n readonly guard: (i: string) => string\n readonly unit: (i: string) => string\n}\n\n/** Per generated function: its local variables. */\nclass Fn {\n readonly vars: Array<string> = []\n}\n\nconst isLeaf = (node: Node): boolean => {\n switch (node._tag) {\n case \"Succeed\":\n case \"Fail\":\n case \"Eof\":\n case \"Location\":\n case \"RestLen\":\n case \"Any\":\n case \"Literal\":\n case \"OneOf\":\n case \"TakeWhile\":\n return true\n default:\n return false\n }\n}\n\nconst lowerAscii = (c: number): number => (c >= 65 && c <= 90 ? c + 32 : c)\nconst isLetter = (c: number): boolean => (c >= 65 && c <= 90) || (c >= 97 && c <= 122)\n\n/** The inclusive ranges of 1s in a table. */\nconst runsOf = (table: Uint8Array): Array<[number, number]> => {\n const out: Array<[number, number]> = []\n for (let i = 0; i < table.length; i++) {\n if (table[i] !== 1) continue\n let j = i\n while (j + 1 < table.length && table[j + 1] === 1) j++\n out.push([i, j])\n i = j\n }\n return out\n}\n\n/** A JavaScript expression testing `v` against ranges, or `undefined` if too long. */\nconst rangeTest = (runs: ReadonlyArray<readonly [number, number]>, v: string): string | undefined => {\n if (runs.length === 0) return \"false\"\n if (runs.length > 4) return undefined\n return runs.map(([a, b]) => (a === b ? `${v}===${a}` : `(${v}>=${a}&&${v}<=${b})`)).join(\"||\")\n}\n\n/** The inclusive ranges of `[0, size)` where `table[c] === value`. */\nconst runsWhere = (table: Uint8Array, size: number, value: 0 | 1): Array<[number, number]> => {\n const out: Array<[number, number]> = []\n for (let i = 0; i < size; i++) {\n if (table[i] !== value) continue\n let j = i\n while (j + 1 < size && table[j + 1] === value) j++\n out.push([i, j])\n i = j\n }\n return out\n}\n\n/** How many comparisons it takes to test a run of `[0, size)`. */\nconst runCost = ([a, b]: readonly [number, number], size: number): number =>\n a === b || a === 0 || b === size - 1 ? 1 : 2\n\n/**\n * A JavaScript expression testing whether `v`, known to be in `[0, size)`,\n * is accepted by `table`, or `undefined` if that takes too many comparisons.\n * It tests the accepted runs or the rejected ones, whichever is cheaper:\n * `c!==34&&c!==92&&c>=32` rather than three two-sided ranges.\n */\nconst tableTest = (table: Uint8Array, v: string, size: number): string | undefined => {\n const accept = runsWhere(table, size, 1)\n const reject = runsWhere(table, size, 0)\n if (accept.length === 0) return \"false\"\n if (reject.length === 0) return \"true\"\n const cost = (runs: ReadonlyArray<readonly [number, number]>) => runs.reduce((n, r) => n + runCost(r, size), 0)\n const acceptCost = cost(accept)\n const rejectCost = cost(reject)\n if (Math.min(acceptCost, rejectCost) > 6) return undefined\n const terms =\n acceptCost <= rejectCost\n ? accept\n .map(([a, b]) =>\n a === b\n ? `${v}===${a}`\n : a === 0\n ? `${v}<=${b}`\n : b === size - 1\n ? `${v}>=${a}`\n : `(${v}>=${a}&&${v}<=${b})`\n )\n .join(\"||\")\n : reject\n .map(([a, b]) =>\n a === b ? `${v}!==${a}` : a === 0 ? `${v}>${b}` : b === size - 1 ? `${v}<${a}` : `(${v}<${a}||${v}>${b})`\n )\n .join(\"&&\")\n return `(${terms})`\n}\n\n/**\n * A repetition that builds its own result (see `Emitter.entries`): `init`\n * starts it, `element(fail, check)` parses one element, runs `check` (the\n * repetition's loop check) and adds the element, and `finish` ends it.\n */\ninterface Collect {\n readonly init: string\n readonly element: (fail: string, check: string) => string\n readonly finish: string\n}\n\nclass Emitter {\n readonly constants: Array<unknown> = []\n private readonly constantIndex = new Map<unknown, number>()\n readonly functions: Array<string> = []\n private readonly rules = [new Map<ParserLike, string>(), new Map<ParserLike, string>()]\n private readonly refs = new Map<ParserLike, number>()\n private readonly closure: ClosureCompiler\n private next = 0\n\n constructor(\n readonly root: ParserLike,\n readonly kind: 0 | 1 | 2,\n readonly resumable = false\n ) {\n this.closure = createClosureCompiler(kind, resumable)\n this.countRefs(root)\n }\n\n get fallbacks(): ReadonlyArray<Fallback> {\n return this.closure.fallbacks\n }\n\n /** Counts the distinct parents of each parser. */\n private countRefs(root: ParserLike): void {\n const seen = new Set<ParserLike>()\n const stack = [root]\n for (let p = stack.pop(); p !== undefined; p = stack.pop()) {\n if (seen.has(p)) continue\n seen.add(p)\n for (const c of new Set(children(nodeOf(p)))) {\n this.refs.set(c, (this.refs.get(c) ?? 0) + 1)\n stack.push(c)\n }\n }\n }\n\n const(value: unknown): string {\n let i = this.constantIndex.get(value)\n if (i === undefined) {\n i = this.constants.length\n this.constants.push(value)\n this.constantIndex.set(value, i)\n }\n return `C[${i}]`\n }\n\n /** A JavaScript literal for simple values, otherwise a constant. */\n lit(value: unknown): string {\n if (value === undefined) return \"void 0\"\n if (value === null || Predicate.isBoolean(value)) return String(value)\n if (Predicate.isNumber(value) && Number.isFinite(value) && !Object.is(value, -0)) return String(value)\n if (Predicate.isString(value) && value.length < 64) return JSON.stringify(value)\n return this.const(value)\n }\n\n v(fn: Fn): string {\n const name = `v${this.next++}`\n fn.vars.push(name)\n return name\n }\n\n label(): string {\n return `L${this.next++}`\n }\n\n unit(i: string): string {\n return this.kind === 0 ? `I.charCodeAt(${i})` : `I[${i}]`\n }\n\n /**\n * How generated code reads an encoding's code units: units below `fast`\n * are whole code points, `width` input units long. `guard(i)` says that a\n * whole unit is available at `i`.\n */\n reader(enc: Encoding<any>): Reader {\n if (enc === utf16le || enc === utf16be) {\n const [lo, hi] = enc === utf16le ? [\"\", \"+1\"] : [\"+1\", \"\"]\n return {\n width: 2,\n fast: 0xd800,\n guard: (i) => `${i}+1<E`,\n unit: (i) => `(I[${i}${lo}]|I[${i}${hi}]<<8)`\n }\n }\n return { width: 1, fast: enc.unit === 1 ? fastLimit(enc) : 0, guard: (i) => `${i}<E`, unit: (i) => this.unit(i) }\n }\n\n /** The function implementing a rule, generating it on first use. */\n rule(p: ParserLike, used: boolean): string {\n const rules = this.rules[used ? 1 : 0]\n let name = rules.get(p)\n if (name !== undefined) return name\n name = `f${this.next++}`\n rules.set(p, name)\n const fn = new Fn()\n const out = used ? this.v(fn) : null\n const done = this.label()\n const body = this.inline(p, used, out, `break ${done};`, fn, 0)\n this.functions.push(\n `function ${name}(p){const I=$I,E=$E;${fn.vars.length > 0 ? `let ${fn.vars.join(\",\")};` : \"\"}` +\n `${done}:{${body}P=p;return ${out ?? \"void 0\"}}return F}`\n )\n return name\n }\n\n /**\n * Code for `p`: on success it falls through with `p` advanced and, when\n * `out` is given, the value in `out`; on failure it runs `fail`.\n */\n gen(p: ParserLike, used: boolean, out: string | null, fail: string, fn: Fn, depth: number): string {\n const node = nodeOf(p)\n if (node._tag === \"Suspend\") return this.call(this.rule(node.resolve(), used), out, fail)\n if (!isLeaf(node) && (((this.refs.get(p) ?? 0) > 1 && !this.small(p)) || depth > 32)) {\n return this.call(this.rule(p, used), out, fail)\n }\n return this.inline(p, used, out, fail, fn, depth)\n }\n\n /** Whether a parser is small enough to inline wherever it is used. */\n private small(p: ParserLike): boolean {\n let budget = 6\n const visit = (q: ParserLike): boolean => {\n const node = nodeOf(q)\n if (--budget < 0 || node._tag === \"Suspend\" || node._tag === \"Escaped\" || node._tag === \"Dispatch\") return false\n return children(node).every(visit)\n }\n return visit(p)\n }\n\n /**\n * In a resumable build: token code (which fails by breaking out of `bad`)\n * that read within `lookahead` units of the end of a partial input re-runs\n * interpreted, since it may have to report `Incomplete` there. Token code\n * leaves `p` where it stopped reading, even when it fails.\n */\n private partialSafe(\n p: ParserLike,\n code: string,\n bad: string,\n lookahead: number,\n out: string | null,\n fail: string,\n fn: Fn\n ): string {\n const ahead = Math.max(lookahead, Margin)\n const st = this.v(fn)\n const ok = this.v(fn)\n const t = this.v(fn)\n const leaf = this.label()\n return (\n `${st}=p;${ok}=false;${leaf}:{${bad}:{${code}${ok}=true;}` +\n `if(!$S.partial||p+${ahead}<=E){if(${ok})break ${leaf};${fail}}` +\n `p=${st};$S.pos=p;${t}=${this.const(p.step)}($S);if(${t}===F){${fail}}p=$S.pos;${out === null ? \"\" : `${out}=${t};`}}`\n )\n }\n\n /**\n * Token code for string and byte input, or the parser's step for input\n * the code can't read. In a resumable build, code that read within\n * `lookahead` units of the end of a partial input re-runs interpreted.\n */\n private leaf(\n p: ParserLike,\n node: NodeOf<\"Any\" | \"Literal\" | \"OneOf\" | \"TakeWhile\">,\n used: boolean,\n out: string | null,\n fail: string,\n fn: Fn,\n lookahead: number = Margin\n ): string {\n if (!this.native(node.encoding)) return this.delegate(p, used, out, fail, fn)\n if (!this.resumable) return this.token(node, out, fail, fn) ?? this.delegate(p, used, out, fail, fn)\n const bad = this.label()\n const code = this.token(node, out, `break ${bad};`, fn)\n if (code === undefined) return this.delegate(p, used, out, fail, fn)\n return this.partialSafe(p, code, bad, lookahead, out, fail, fn)\n }\n\n /** Whether a token parser reads array input as such (`Token`'s, on an array). */\n private array(enc: Encoding<any> | undefined): boolean {\n return this.kind === 2 && enc === undefined\n }\n\n /**\n * Token code for array input, built by `code` with its failure code. Its\n * set's predicate (or membership test) is called on the element, as the\n * interpreter calls it. In a resumable build, code that read the last\n * element of a partial input re-runs interpreted.\n */\n private arrayLeaf(p: ParserLike, code: (fail: string) => string, out: string | null, fail: string, fn: Fn): string {\n if (!this.resumable) return code(fail)\n const bad = this.label()\n return this.partialSafe(p, code(`break ${bad};`), bad, 1, out, fail, fn)\n }\n\n private arrayAny(out: string | null, fail: string): string {\n return `if(p>=E){${BT}${fail}}${out === null ? \"\" : `${out}=I[p];`}p++;`\n }\n\n private arrayOneOf(node: NodeOf<\"OneOf\">, out: string | null, fail: string): string {\n const m = this.const(compileAny(node.set).forCode.token)\n return `if(p>=E||${m}(I[p])===${node.negate}){${BT}${fail}}${out === null ? \"\" : `${out}=I[p];`}p++;`\n }\n\n private arrayTakeWhile(node: NodeOf<\"TakeWhile\">, out: string | null, fail: string, fn: Fn): string {\n const m = this.const(compileAny(node.set).forCode.token)\n const st = this.v(fn)\n const max = node.max === Infinity ? \"\" : `&&p-${st}<${node.max}`\n return (\n `${st}=p;while(p<E${max}&&${m}(I[p])!==${node.negate})p++;` +\n (node.min > 0 ? `if(p-${st}<${node.min}){${BT}${fail}}` : \"\") +\n (out === null ? \"\" : `${out}=I.slice(${st},p);`)\n )\n }\n\n call(name: string, out: string | null, fail: string): string {\n if (out === null) return `if(${name}(p)===F){${fail}}p=P;`\n return `${out}=${name}(p);if(${out}===F){${fail}}p=P;`\n }\n\n /** Runs the closure-compiled step of `p` on the shared state. */\n delegate(p: ParserLike, used: boolean, out: string | null, fail: string, fn: Fn): string {\n const step = this.const(this.closure.compile(p, used))\n const t = out ?? this.v(fn)\n return `$S.pos=p;${t}=${step}($S);if(${t}===F){${fail}}p=$S.pos;`\n }\n\n private native(enc: Encoding<any> | undefined): boolean {\n return enc === undefined ? this.kind !== 2 : kindOfEncoding(enc) === this.kind\n }\n\n inline(p: ParserLike, used: boolean, out: string | null, fail: string, fn: Fn, depth: number): string {\n const node = nodeOf(p)\n const set = (value: string) => (out === null ? \"\" : `${out}=${value};`)\n const d = depth + 1\n switch (node._tag) {\n case \"Succeed\":\n return set(this.lit(node.value))\n case \"Sync\":\n return used ? set(`${this.const(node.evaluate)}()`) : \"\"\n case \"Fail\":\n return `$S.mode=${JSON.stringify(node.mode)};${fail}`\n case \"Eof\":\n return (\n `if(p<E){${BT}${fail}}` +\n (this.resumable ? `if($S.partial){$S.mode=\"Incomplete\";${fail}}` : \"\") +\n set(\"void 0\")\n )\n case \"Location\":\n return set(\"p\")\n case \"RestLen\":\n return set(\"E-p\")\n case \"Suspend\":\n return this.call(this.rule(node.resolve(), used), out, fail)\n case \"Any\":\n if (this.array(node.encoding)) return this.arrayLeaf(p, (f) => this.arrayAny(out, f), out, fail, fn)\n return this.leaf(p, node, used, out, fail, fn)\n case \"OneOf\":\n if (this.array(node.encoding)) return this.arrayLeaf(p, (f) => this.arrayOneOf(node, out, f), out, fail, fn)\n return this.leaf(p, node, used, out, fail, fn)\n case \"TakeWhile\":\n if (this.array(node.encoding))\n return this.arrayLeaf(p, (f) => this.arrayTakeWhile(node, out, f, fn), out, fail, fn)\n return this.leaf(p, node, used, out, fail, fn)\n case \"Literal\":\n return this.leaf(p, node, used, out, fail, fn, node.literal.length * 4)\n case \"Escaped\": {\n // Streaming builds use the closure compiler's escapes, which keep checkpoints\n if (!this.native(node.encoding) || this.resumable) return this.delegate(p, used, out, fail, fn)\n return this.escaped(p, node, out, fail, fn, d)\n }\n case \"Map\": {\n if (!used) return this.gen(node.self, false, null, fail, fn, d)\n if (node.f === toFloat && out !== null) {\n const code = this.float(node, out, fail, fn, d)\n if (code !== undefined) return code\n }\n // Streaming builds keep the array, which their checkpoints hold\n if (node.f === fromEntries && out !== null && !this.resumable && buildsEntries(node.self)) {\n return this.entries(node.self, out, fail, fn, d)\n }\n const t = this.v(fn)\n return this.gen(node.self, true, t, fail, fn, d) + set(`${this.const(node.f)}(${t})`)\n }\n case \"As\":\n return this.gen(node.self, false, null, fail, fn, d) + (used ? set(this.lit(node.value)) : \"\")\n case \"Tap\": {\n const t = out ?? this.v(fn)\n return this.gen(node.self, true, t, fail, fn, d) + `${this.const(node.f)}(${t});`\n }\n case \"TryMap\":\n case \"FilterMap\": {\n const t = this.v(fn)\n const r = this.v(fn)\n const [tag, field] = node._tag === \"TryMap\" ? [\"Success\", \"success\"] : [\"Some\", \"value\"]\n return (\n this.gen(node.self, true, t, fail, fn, d) +\n `${r}=${this.const(node.f)}(${t});if(${r}._tag!==\"${tag}\"){${BT}${fail}}${set(`${r}.${field}`)}`\n )\n }\n case \"Filter\": {\n const t = out ?? this.v(fn)\n return this.gen(node.self, true, t, fail, fn, d) + `if(!${this.const(node.predicate)}(${t})){${BT}${fail}}`\n }\n case \"FlatMap\": {\n const t = this.v(fn)\n const r = out ?? this.v(fn)\n this.closure.note(p, node, \"the parser returned by the function runs interpreted\")\n return (\n this.gen(node.self, true, t, fail, fn, d) +\n `$S.pos=p;${r}=${this.const(node.f)}(${t}).step($S);if(${r}===F){${fail}}p=$S.pos;`\n )\n }\n case \"Taken\": {\n if (node.encoding !== undefined && !this.native(node.encoding)) return this.delegate(p, used, out, fail, fn)\n const st = this.v(fn)\n const body = `${st}=p;` + this.gen(node.self, false, null, fail, fn, d)\n if (out === null && node.encoding === undefined) return body\n if (node.encoding === undefined) {\n return (\n body +\n set(this.kind === 0 ? `I.slice(${st},p)` : this.kind === 1 ? `I.subarray(${st},p)` : `$S.slice(${st},p)`)\n )\n }\n const t = out ?? this.v(fn)\n const enc = this.const(node.encoding)\n return body + `${t}=R.textOf(${enc},${fastLimit(node.encoding)},$S,${st},p);if(${t}===F){${fail}}`\n }\n case \"WithTaken\":\n case \"WithSpan\": {\n const st = this.v(fn)\n const t = this.v(fn)\n const extra = node._tag === \"WithSpan\" ? `{start:${st},end:p}` : `$S.slice(${st},p)`\n return `${st}=p;` + this.gen(node.self, true, t, fail, fn, d) + set(`[${t},${extra}]`)\n }\n case \"Span\": {\n const st = this.v(fn)\n return `${st}=p;` + this.gen(node.self, false, null, fail, fn, d) + set(`{start:${st},end:p}`)\n }\n case \"Mode\": {\n const ok = this.label()\n const bad = this.label()\n return (\n `${ok}:{${bad}:{${this.gen(node.self, used, out, `break ${bad};`, fn, d)}break ${ok};}` +\n `if($S.mode===${JSON.stringify(node.from)})$S.mode=${JSON.stringify(node.to)};${fail}}`\n )\n }\n case \"Context\":\n case \"Expected\":\n case \"MapError\":\n case \"OrFail\":\n case \"Trace\":\n case \"Syntax\":\n case \"RetryAfter\":\n return this.gen(node.self, used, out, fail, fn, d)\n case \"ResumeAfter\": {\n if (!used) return this.gen(node.self, false, null, fail, fn, d)\n const t = this.v(fn)\n return this.gen(node.self, true, t, fail, fn, d) + set(`R.some(${t})`)\n }\n case \"Opt\":\n case \"OrElseSucceed\": {\n const st = this.v(fn)\n const ok = this.label()\n const bad = this.label()\n const t = out === null ? null : this.v(fn)\n const some = node._tag === \"Opt\" ? `R.some(${t})` : `${t}`\n const orElse = node._tag === \"Opt\" ? \"R.none()\" : `${this.const(node.value)}()`\n return (\n `${st}=p;${ok}:{${bad}:{${this.gen(node.self, used, t, `break ${bad};`, fn, d)}${set(some)}break ${ok};}` +\n `if($S.mode!==\"Backtrack\"){${fail}}p=${st};${set(orElse)}}`\n )\n }\n case \"Peek\": {\n const st = this.v(fn)\n return `${st}=p;${this.gen(node.self, used, out, fail, fn, d)}p=${st};`\n }\n case \"Not\": {\n const st = this.v(fn)\n const ok = this.label()\n const bad = this.label()\n return (\n `${st}=p;${ok}:{${bad}:{${this.gen(node.self, false, null, `break ${bad};`, fn, d)}p=${st};${BT}${fail}}` +\n `if($S.mode!==\"Backtrack\"){${fail}}p=${st};}${set(\"void 0\")}`\n )\n }\n case \"Seq\":\n return this.seq(node, used, out, fail, fn, d)\n case \"Struct\": {\n if (out === null) return node.parsers.map((q) => this.gen(q, false, null, fail, fn, d)).join(\"\")\n const vars = node.parsers.map(() => this.v(fn))\n const code = node.parsers.map((q, i) => this.gen(q, true, vars[i], fail, fn, d)).join(\"\")\n if (node.keys.includes(\"__proto__\")) {\n return code + `${out}={};` + node.keys.map((k, i) => `${out}[${JSON.stringify(k)}]=${vars[i]};`).join(\"\")\n }\n return code + `${out}={${node.keys.map((k, i) => `${JSON.stringify(k)}:${vars[i]}`).join(\",\")}};`\n }\n case \"ZipWith\": {\n if (out === null)\n return this.gen(node.self, false, null, fail, fn, d) + this.gen(node.that, false, null, fail, fn, d)\n const x = this.v(fn)\n const y = this.v(fn)\n return (\n this.gen(node.self, true, x, fail, fn, d) +\n this.gen(node.that, true, y, fail, fn, d) +\n `${out}=${this.const(node.f)}(${x},${y});`\n )\n }\n case \"Alt\":\n return this.alt(node, used, out, fail, fn, d)\n case \"Dispatch\":\n return this.dispatch(p, node, used, out, fail, fn, d)\n case \"Repeat\":\n case \"Fold\":\n return this.repeat(node, used, out, fail, fn, d)\n case \"Separated\":\n return this.separated(node, used, out, fail, fn, d)\n default:\n return this.delegate(p, used, out, fail, fn)\n }\n }\n\n /**\n * `Ascii.float` and `Text.float` (`map(floatText, toFloat)`): numbers in\n * decimal notation are matched and converted in one pass by\n * `scanFloatString` or `scanFloatBytes`, without slicing the input; the\n * rest (`nan`, `inf`, failures before a digit) runs the parser. Returns\n * `undefined` when this does not apply.\n */\n private float(node: NodeOf<\"Map\">, out: string, fail: string, fn: Fn, d: number): string | undefined {\n if (!floatTexts.has(node.self) || this.kind === 2) return undefined\n let taken = nodeOf(node.self)\n while (taken._tag === \"Expected\") taken = nodeOf(taken.self)\n if (taken._tag !== \"Taken\") return undefined\n const enc = taken.encoding\n // Decimal notation is ASCII, which these encodings read unit by unit\n if (enc !== undefined && !(this.native(enc) && enc.unit === 1 && enc.asciiCompatible)) return undefined\n const t = this.v(fn)\n const scan = this.const(floatScan)\n // Near the end of a partial input, the parser may have to report `Incomplete`\n const near = this.resumable ? `||$S.partial&&${scan}.read+${Margin}>E` : \"\"\n return (\n `${out}=${this.kind === 0 ? \"R.scanFloatString\" : \"R.scanFloatBytes\"}(I,p,E);` +\n `if(${out}===void 0${near}){${this.gen(node.self, true, t, fail, fn, d)}${out}=${this.const(toFloat)}(${t})}` +\n `else if(${out}===F){${BT}${fail}}else p=${scan}.end;`\n )\n }\n\n seq(node: NodeOf<\"Seq\">, used: boolean, out: string | null, fail: string, fn: Fn, d: number): string {\n const output = node.output\n if (out === null || !used) return node.parsers.map((q) => this.gen(q, false, null, fail, fn, d)).join(\"\")\n if (Predicate.isNumber(output)) {\n return node.parsers.map((q, i) => this.gen(q, i === output, i === output ? out : null, fail, fn, d)).join(\"\")\n }\n const keep = (i: number) => output === \"tuple\" || output.includes(i)\n const vars = node.parsers.map((_, i) => (keep(i) ? this.v(fn) : null))\n const code = node.parsers.map((q, i) => this.gen(q, keep(i), vars[i], fail, fn, d)).join(\"\")\n return code + `${out}=[${vars.filter((v) => v !== null).join(\",\")}];`\n }\n\n /** A test that the unit `u` may start `first` (false for -1, the end of the input). */\n private startTest(first: First, u: string): string {\n const runs = runsOf(first.units)\n const small = rangeTest(runs, u)\n const low = small ?? `${this.const(first.units)}[${u}]===1`\n if (!first.high) return small !== undefined ? `(${low})` : `(${u}<${TableSize}&&${low})`\n return `(${u}>=${TableSize}||${low})`\n }\n\n alt(node: NodeOf<\"Alt\">, used: boolean, out: string | null, fail: string, fn: Fn, d: number): string {\n const parsers = node.parsers\n if (parsers.length === 0) return `${BT}${fail}`\n if (parsers.length === 1) return this.gen(parsers[0], used, out, fail, fn, d)\n const firsts = this.kind === 2 ? undefined : parsers.map((q) => this.closure.firsts.of(q))\n const prune = firsts !== undefined && planAlt(firsts) !== undefined\n const st = this.v(fn)\n const u = prune ? this.v(fn) : \"\"\n const done = this.label()\n // Near the end of a partial input, no branch is skipped: it may be incomplete rather than fail\n const read = this.resumable ? `$S.partial&&p+${Margin}>E?-2:p<E?${this.unit(\"p\")}:-1` : `p<E?${this.unit(\"p\")}:-1`\n let code = `${st}=p;${prune ? `${u}=${read};` : \"\"}${done}:{`\n parsers.forEach((q, i) => {\n const bad = this.label()\n const branch =\n `${bad}:{${this.gen(q, used, out, `break ${bad};`, fn, d)}break ${done};}` +\n `if($S.mode!==\"Backtrack\"){${fail}}p=${st};`\n const f = firsts?.[i]\n code +=\n prune && f !== undefined && f.mode === Strict\n ? `if(${this.resumable ? `${u}===-2||` : \"\"}${this.startTest(f, u)}){${branch}}`\n : branch\n })\n return code + `${BT}${fail}}`\n }\n\n dispatch(\n p: ParserLike,\n node: NodeOf<\"Dispatch\">,\n used: boolean,\n out: string | null,\n fail: string,\n fn: Fn,\n d: number\n ): string {\n const choose = this.const(node.choose)\n if (node.cases === undefined) {\n // The general path: run the selector, choose, then run the case's step\n this.closure.note(p, node, \"the parser returned by the function of cases runs interpreted\")\n const st = this.v(fn)\n const k = this.v(fn)\n const q = this.v(fn)\n const r = out ?? this.v(fn)\n return (\n `${st}=p;${this.gen(node.selector, true, k, fail, fn, d)}${q}=${choose}(${k});` +\n `if(${q}===void 0){p=${st};${BT}${fail}}$S.pos=p;${r}=${q}.step($S);` +\n `if(${r}===F){${fail}}p=$S.pos;`\n )\n }\n // The cases are known: number them, and run the chosen one inline\n const cases = new Map<ParserLike, number>()\n for (const key of Reflect.ownKeys(node.cases)) {\n const q = node.cases[key as any]\n if (!cases.has(q)) cases.set(q, cases.size)\n }\n if (node.otherwise !== undefined && !cases.has(node.otherwise)) cases.set(node.otherwise, cases.size)\n const index = this.const(cases)\n // `inline`: the cases' code goes here; otherwise (a fallback next to the\n // switch on units below, which inlines them already) they are called as rules\n const general = (inline: boolean): string => {\n const st = this.v(fn)\n const k = this.v(fn)\n const q = this.v(fn)\n const sw = this.label()\n let code =\n `${st}=p;${this.gen(node.selector, true, k, fail, fn, d)}${q}=${choose}(${k});` +\n `if(${q}===void 0){p=${st};${BT}${fail}}${sw}:switch(${index}.get(${q})){`\n for (const [c, i] of cases) {\n const body = inline ? this.gen(c, used, out, fail, fn, d) : this.call(this.rule(c, used), out, fail)\n code += `case ${i}:{${body}break ${sw};}`\n }\n // Unreachable unless the record of cases changed after `dispatch` read it\n const r = out ?? this.v(fn)\n return code + `default:{$S.pos=p;${r}=${q}.step($S);if(${r}===F){${fail}}p=$S.pos;}}`\n }\n let sel = nodeOf(node.selector)\n const peek = sel._tag === \"Peek\"\n if (peek) sel = nodeOf((sel as NodeOf<\"Peek\">).self)\n if (sel._tag !== \"Any\" || !this.native(sel.encoding)) return general(true)\n const enc = sel.encoding\n const r = enc === undefined ? undefined : this.reader(enc)\n const limit = r === undefined ? (this.kind === 0 ? 0xd800 : TableSize) : Math.min(r.fast, 0xd800)\n const size = Math.min(limit, TableSize)\n if (size === 0) return general(true)\n // Group the units by the case they select\n const groups = new Map<ParserLike, Array<number>>()\n for (let unit = 0; unit < size; unit++) {\n const q = node.choose(enc === undefined && this.kind === 1 ? unit : charOf(unit))\n if (q === undefined) continue\n let g = groups.get(q)\n if (g === undefined) groups.set(q, (g = []))\n g.push(unit)\n }\n const u = this.v(fn)\n const sw = this.label()\n // A unit cut short by the end of the input takes the general path\n const read = r === undefined ? `p<E?${this.unit(\"p\")}:-1` : `${r.guard(\"p\")}?${r.unit(\"p\")}:p<E?${size}:-1`\n // Near the end of a partial input, the general path handles incomplete units\n const near = this.resumable ? `$S.partial&&p+${Margin}>E?${size}:` : \"\"\n let code = `${u}=${near}${read};${sw}:switch(${u}){`\n for (const [q, units] of groups) {\n code +=\n units.map((x) => `case ${x}:`).join(\"\") +\n `{${peek ? \"\" : `p+=${r?.width ?? 1};`}${this.gen(q, used, out, fail, fn, d)}break ${sw};}`\n }\n code += `case -1:{${BT}${fail}}default:{if(${u}<${size}){${BT}${fail}}${general(false)}}}`\n return code\n }\n\n repeat(\n node: NodeOf<\"Repeat\"> | NodeOf<\"Fold\">,\n used: boolean,\n out: string | null,\n fail: string,\n fn: Fn,\n d: number,\n collect?: Collect\n ): string {\n const { max, min } = node\n const loop = this.label()\n const bad = this.label()\n const n = this.v(fn)\n const st = this.v(fn)\n const isFold = node._tag === \"Fold\"\n const cond = isFold ? (node as NodeOf<\"Fold\">).while : undefined\n const keep = out !== null && used && collect === undefined\n // `while` needs the accumulator even when the output is unused\n const tracked = keep || cond !== undefined\n const x = tracked ? this.v(fn) : null\n const acc = out !== null && keep ? out : this.v(fn)\n let init = collect?.init ?? \"\"\n let add = \"\"\n if (tracked) {\n if (isFold) {\n init = `${acc}=${this.const((node as NodeOf<\"Fold\">).init)}();`\n add = `${acc}=${this.const((node as NodeOf<\"Fold\">).f)}(${acc},${x});`\n } else {\n init = `${acc}=[];`\n add = `${acc}.push(${x});`\n }\n }\n const check = max === Infinity ? `if(p===${st}){$S.mode=\"Cut\";${fail}}` : \"\"\n const bound = max === Infinity ? \"\" : `${n}<${max}`\n const r = this.resumable ? this.resumePoint(fn) : undefined\n const save =\n r === undefined\n ? \"\"\n : `if($S.mode===\"Incomplete\"&&$S.resume!==void 0)R.save($S,${r.key},${r.entry},{acc:${acc},count:${n},pos:${st}});`\n // With `collect` (never in resumable builds), the element adds itself once the loop check passed\n const element =\n collect === undefined\n ? `${this.gen(node.self, tracked, x, `break ${bad};`, fn, d)}${check}${add}`\n : collect.element(`break ${bad};`, check)\n const stop =\n cond === undefined ? \"\" : `if(${min > 0 ? `${n}>=${min}&&` : \"\"}!${this.const(cond)}(${acc}))break ${loop};`\n const body =\n `${loop}:for(;${bound};${n}++){${stop}${st}=p;` +\n `${bad}:{${element}continue ${loop};}` +\n `${save}if($S.mode!==\"Backtrack\"${min > 0 ? `||${n}<${min}` : \"\"}){${fail}}p=${st};break ${loop};}`\n if (r === undefined) return `${init}${n}=0;${body}${collect?.finish ?? \"\"}`\n return r.wrap(acc, `${acc}=cp.acc;${n}=cp.count;p=cp.pos;`, `${init}${n}=0;`, body)\n }\n\n /**\n * In a resumable build, a repetition entered at `entry` may restart from a\n * checkpoint (`restore`, with the checkpoint in `cp`), or return the result\n * of a `Done` one; a resumed repetition records its result when it ends.\n */\n private resumePoint(fn: Fn) {\n const key = this.const({})\n const entry = this.v(fn)\n const resumed = this.v(fn)\n const done = this.label()\n return {\n key,\n entry,\n resumed,\n wrap: (value: string, restore: string, fresh: string, body: string) =>\n `${entry}=p;${resumed}=false;${done}:{if($S.resume!==void 0){const cp=R.take($S,${key},p);` +\n `if(cp instanceof R.Done){p=cp.pos;${value}=cp.value;break ${done};}` +\n `if(cp!==void 0){${restore}${resumed}=true;}}if(!${resumed}){${fresh}}${body}` +\n `if(${resumed})R.done($S,${key},${entry},${value},p);}`\n }\n }\n\n separated(\n node: NodeOf<\"Separated\">,\n used: boolean,\n out: string | null,\n fail: string,\n fn: Fn,\n d: number,\n collect?: Collect\n ): string {\n const { max, min } = node\n const keep = out !== null && used && collect === undefined\n if (max === 0) return collect !== undefined ? collect.init + collect.finish : keep ? `${out}=[];` : \"\"\n const x = keep ? this.v(fn) : null\n const acc = out !== null && keep ? out : this.v(fn)\n const n = this.v(fn)\n const st = this.v(fn)\n const done = this.label()\n const loop = this.label()\n const push = keep ? `${acc}.push(${x});` : \"\"\n const r = this.resumable ? this.resumePoint(fn) : undefined\n const save =\n r === undefined\n ? \"\"\n : `if($S.mode===\"Incomplete\"&&$S.resume!==void 0)R.save($S,${r.key},${r.entry},{acc:${acc},count:${n},pos:${st}});`\n // Runs `body`; on its failure, stops the repetition (or fails if `fatal`)\n const attempt = (body: (fail: string) => string, success: string, fatal: string, checkpoint: string) => {\n const ok = this.label()\n const bad = this.label()\n return (\n `${ok}:{${bad}:{${body(`break ${bad};`)}${success}break ${ok};}` +\n `${checkpoint}if($S.mode!==\"Backtrack\"${fatal}){${fail}}p=${st};break ${done};}`\n )\n }\n const self = (f: string) =>\n collect === undefined ? this.gen(node.self, keep, x, f, fn, d) : collect.element(f, \"\")\n const sep = (f: string) => this.gen(node.separator, false, null, f, fn, d)\n const check = max === Infinity ? `if(p===${st}){$S.mode=\"Cut\";${fail}}` : \"\"\n const first =\n `${collect?.init ?? (keep ? `${acc}=[];` : \"\")}${n}=0;${st}=p;` +\n attempt(self, `${push}${n}++;`, min > 0 ? \"||true\" : \"\", \"\")\n const rest =\n `${loop}:while(${max === Infinity ? \"true\" : `${n}<${max}`}){${st}=p;` +\n attempt(sep, \"\", `||${n}<${min}`, save) +\n check +\n attempt(self, `${push}${n}++;continue ${loop};`, `||${n}<${min}`, save) +\n `}`\n if (r === undefined) return `${done}:{${first}${rest}}${collect?.finish ?? \"\"}`\n // `done` ends the repetition; the checkpoint wrapper records the result after it\n return r.wrap(acc, `${acc}=cp.acc;${n}=cp.count;p=cp.pos;`, \"\", `${done}:{if(!${r.resumed}){${first}}${rest}}`)\n }\n\n /**\n * `map(self, Object.fromEntries)`, where `buildsEntries(self)`: builds the\n * object directly, assigning each entry as it is parsed (see\n * `internal/entries.ts`), without the pairs and their array. `cut`,\n * `preceded`, `terminated` and diagnostics around the repetition are\n * compiled as usual around it.\n */\n private entries(p: ParserLike, out: string, fail: string, fn: Fn, d: number): string {\n const node = nodeOf(p)\n switch (node._tag) {\n case \"Mode\": {\n const ok = this.label()\n const bad = this.label()\n return (\n `${ok}:{${bad}:{${this.entries(node.self, out, `break ${bad};`, fn, d)}break ${ok};}` +\n `if($S.mode===${JSON.stringify(node.from)})$S.mode=${JSON.stringify(node.to)};${fail}}`\n )\n }\n case \"Seq\": {\n const i = node.output as number\n return node.parsers\n .map((q, j) => (j === i ? this.entries(q, out, fail, fn, d) : this.gen(q, false, null, fail, fn, d)))\n .join(\"\")\n }\n case \"Repeat\":\n case \"Separated\": {\n const pair = pairOf(node.self)\n if (pair === undefined) {\n // Not reached (`buildsEntries` found the pair): build the pairs, then the object\n const t = this.v(fn)\n return this.gen(p, true, t, fail, fn, d) + `${out}=${this.const(fromEntries)}(${t});`\n }\n const deferred = this.v(fn)\n const key = this.v(fn)\n const value = this.v(fn)\n const collect: Collect = {\n init: `${out}={};${deferred}=void 0;`,\n element: (f, check) =>\n pair.parsers\n .map((q, j) =>\n this.gen(\n q,\n j === pair.key || j === pair.value,\n j === pair.key ? key : j === pair.value ? value : null,\n f,\n fn,\n d\n )\n )\n .join(\"\") +\n check +\n `if(${deferred}===void 0&&R.isPlainKey(${key}))${out}[${key}]=${value};` +\n `else ${deferred}=R.addEntry(${out},${deferred},${key},${value});`,\n finish: `if(${deferred}!==void 0)R.flushEntries(${out},${deferred});`\n }\n return node._tag === \"Repeat\"\n ? this.repeat(node, true, out, fail, fn, d, collect)\n : this.separated(node, true, out, fail, fn, d, collect)\n }\n default:\n return this.entries((node as { readonly self: ParserLike }).self, out, fail, fn, d)\n }\n }\n\n // ---------------------------------------------------------------------------\n // Tokens\n // ---------------------------------------------------------------------------\n\n /** An expression: is the unit `c`, known to be below `size` (at most `TableSize`), accepted? */\n private member(accept: Uint8Array, c: string, size: number = TableSize): string {\n return tableTest(accept, c, size) ?? `${this.const(accept)}[${c}]===1`\n }\n\n /** An expression: is the code point `c` (at least `TableSize`) accepted? */\n private memberHigh(set: CharSet, negate: boolean, c: string): string {\n if (set.ranges !== undefined && !set.ranges.some(([, b]) => b >= TableSize)) return negate ? \"true\" : \"false\"\n return `${this.const(set.test)}(${c})!==${negate}`\n }\n\n /**\n * An expression: does a `Text` set accept the unit `c`, known to be below\n * `r.fast`? Code points from `TableSize` up are tested by the set's\n * function, unless its ranges show they are all rejected.\n */\n private textAccepts(r: Reader, cs: CharSet, accept: Uint8Array, negate: boolean, c: string): string {\n if (r.fast <= TableSize) return `(${this.member(accept, c, r.fast)})`\n const member = this.member(accept, c)\n if (reachesAbove(cs, TableSize)) return `(${c}<${TableSize}?${member}:${this.const(cs.test)}(${c})!==${negate})`\n return negate ? `(${c}>=${TableSize}||${member})` : `(${c}<${TableSize}&&${member})`\n }\n\n /**\n * An expression: does a `Text` set reject `c`, a code point that `decode`\n * returned? The built-in encodings only decode code points from `r.fast`\n * up there.\n */\n private textRejectsDecoded(enc: Encoding<any>, r: Reader, cs: CharSet, negate: boolean, c: string): string {\n if (r.fast > 0 && builtinEncodings.has(enc) && !reachesAbove(cs, r.fast)) return String(!negate)\n return `${this.const(cs.test)}(${c})===${negate}`\n }\n\n token(\n node: NodeOf<\"Any\" | \"Literal\" | \"OneOf\" | \"TakeWhile\">,\n out: string | null,\n fail: string,\n fn: Fn\n ): string | undefined {\n const set = (value: string) => (out === null ? \"\" : `${out}=${value};`)\n const enc = node.encoding\n const kind = this.kind as 0 | 1\n const failBT = `{${BT}${fail}}`\n switch (node._tag) {\n case \"Any\": {\n if (enc === undefined) {\n if (kind === 1) return `if(p>=E)${failBT}${set(\"I[p]\")}p++;`\n const c = this.v(fn)\n return (\n `if(p>=E)${failBT}${c}=I.charCodeAt(p);` +\n `if(${c}>=55296&&${c}<=56319&&p+1<I.length&&(I.charCodeAt(p+1)&64512)===56320){${set(\"I.slice(p,p+2)\")}p+=2}` +\n `else{${set(\"I[p]\")}p++}`\n )\n }\n const r = this.reader(enc)\n const c = this.v(fn)\n const dec = `${this.const(enc.decode)}(I,p,E)`\n return (\n `if(p>=E)${failBT}` +\n (r.fast > 0\n ? `if(${r.guard(\"p\")}&&(${c}=${r.unit(\"p\")})<${r.fast}){${set(`R.charOf(${c})`)}p+=${r.width}}else`\n : \"\") +\n `{${c}=${dec};if(${c}<0)${failBT}${set(`R.charOf(${c})`)}p+=${this.const(enc.width)}(${c})}`\n )\n }\n case \"Literal\": {\n const lit = node.literal\n if (enc !== undefined) {\n if (node.caseless) return undefined\n const encoded = enc.encode(lit as string)\n return (\n this.literalUnits(Predicate.isString(encoded) ? unitsOf(encoded) : Array.from(encoded), false, fail) +\n set(this.lit(lit))\n )\n }\n const literalKind = Predicate.isString(lit) ? 0 : lit instanceof Uint8Array ? 1 : 2\n if (kind === 0 && literalKind !== 0) return undefined\n if (literalKind === 2) return undefined\n const codes =\n kind === 0\n ? unitsOf(lit as string)\n : Array.from(literalKind === 0 ? new TextEncoder().encode(lit as string) : (lit as Uint8Array))\n const len = codes.length\n const value =\n !node.caseless && literalKind === kind\n ? this.lit(lit)\n : kind === 0\n ? `I.slice(p-${len},p)`\n : `I.subarray(p-${len},p)`\n return this.literalUnits(codes, node.caseless, fail) + set(value)\n }\n case \"OneOf\": {\n const negate = node.negate\n const cs = enc === undefined ? tokenSet(node.set, kind) : textSet(node.set)\n const accept = acceptTable(cs, negate)\n const c = this.v(fn)\n const value = (len: string) => (this.kind === 0 ? `I.slice(p,p+${len})` : `I[p]`)\n if (enc === undefined) {\n if (kind === 1)\n return `if(p>=E)${failBT}${c}=I[p];if(!(${this.member(accept, c)}))${failBT}${set(\"I[p]\")}p++;`\n const cp = this.v(fn)\n if (!negate && this.memberHigh(cs, negate, cp) === \"false\") {\n return `if(p>=E)${failBT}${c}=I.charCodeAt(p);if(${c}>=${TableSize}||!(${this.member(accept, c)}))${failBT}${set(\"I[p]\")}p++;`\n }\n return (\n `if(p>=E)${failBT}${c}=I.charCodeAt(p);` +\n `if(${c}<${TableSize}){if(!(${this.member(accept, c)}))${failBT}${set(\"I[p]\")}p++}` +\n `else{${cp}=${c};if(${c}>=55296&&${c}<=56319&&p+1<I.length){const d=I.charCodeAt(p+1);` +\n `if((d&64512)===56320)${cp}=((${c}-55296)<<10)+(d-56320)+65536}` +\n `if(!(${this.memberHigh(cs, negate, cp)}))${failBT}` +\n `if(${cp}>65535){${set(value(\"2\"))}p+=2}else{${set(\"I[p]\")}p++}}`\n )\n }\n const r = this.reader(enc)\n return (\n `if(p>=E)${failBT}` +\n (r.fast > 0\n ? `if(${r.guard(\"p\")}&&(${c}=${r.unit(\"p\")})<${r.fast}){if(!${this.textAccepts(r, cs, accept, negate, c)})${failBT}${set(`R.charOf(${c})`)}p+=${r.width}}else`\n : \"\") +\n `{${c}=${this.const(enc.decode)}(I,p,E);if(${c}<0||${this.textRejectsDecoded(enc, r, cs, negate, c)})${failBT}` +\n `${set(`R.charOf(${c})`)}p+=${this.const(enc.width)}(${c})}`\n )\n }\n case \"TakeWhile\":\n return this.takeWhile(node, out, fail, fn)\n }\n }\n\n /** Matches literal units at `p`, advancing past them. */\n private literalUnits(codes: ReadonlyArray<number>, caseless: boolean, fail: string): string {\n const len = codes.length\n if (len === 0) return \"\"\n const test = (c: number, i: number) => {\n const at = this.unit(i === 0 ? \"p\" : `p+${i}`)\n if (caseless && isLetter(c)) return `(${at}|32)===${lowerAscii(c)}`\n return `${at}===${c}`\n }\n if (len <= 8) {\n // Reading past the end gives NaN or undefined, which matches nothing\n return `if(!(${codes.map(test).join(\"&&\")})){${BT}${fail}}p+=${len};`\n }\n if (this.kind === 0 && !caseless) {\n const str = String.fromCharCode(...codes)\n return `if(!I.startsWith(${JSON.stringify(str)},p)){${BT}${fail}}p+=${len};`\n }\n const expect = this.const(Uint8Array.from(caseless ? codes.map(lowerAscii) : codes))\n const lower = caseless ? `${this.const(lowerAscii)}` : \"\"\n return `if(E-p<${len}){${BT}${fail}}for(let i=0;i<${len};i++)if(${lower}(${this.unit(\"p+i\")})!==${expect}[i]){${BT}${fail}}p+=${len};`\n }\n\n private takeWhile(node: NodeOf<\"TakeWhile\">, out: string | null, fail: string, fn: Fn): string {\n const enc = node.encoding\n const { max, min, negate } = node\n const kind = this.kind as 0 | 1\n const cs = enc === undefined ? tokenSet(node.set, kind) : textSet(node.set)\n const accept = acceptTable(cs, negate)\n const st = this.v(fn)\n const c = this.v(fn)\n const n = this.v(fn)\n const loop = this.label()\n const counted = max !== Infinity || min > 1\n const count = counted ? `${n}++;` : \"\"\n const bound = max !== Infinity ? `&&${n}<${max}` : \"\"\n const slice =\n enc !== undefined ? `${this.const(enc.text)}(I,${st},p)` : kind === 0 ? `I.slice(${st},p)` : `I.subarray(${st},p)`\n const finish =\n (min > 0 ? `if(${counted ? n : `p-${st}`}<${min}){${BT}${fail}}` : \"\") + (out === null ? \"\" : `${out}=${slice};`)\n const head = `${st}=p;${counted ? `${n}=0;` : \"\"}${loop}:while(p<E${bound}){${c}=${this.unit(\"p\")};`\n const member = this.member(accept, c)\n if (kind === 1 && (enc === undefined || fastLimit(enc) >= TableSize)) {\n // Bytes, one token each\n return `${head}if(!(${member}))break;p++;${count}}${finish}`\n }\n if (enc !== undefined) {\n // Text: inline the encoding's single-unit code points, decode the rest\n const r = this.reader(enc)\n // The loop condition already checks a unit of width 1\n const guard = r.width === 1 ? \"\" : `${r.guard(\"p\")}&&`\n return (\n `${st}=p;${counted ? `${n}=0;` : \"\"}${loop}:while(p<E${bound}){` +\n (r.fast > 0\n ? `if(${guard}(${c}=${r.unit(\"p\")})<${r.fast}){if(!${this.textAccepts(r, cs, accept, negate, c)})break ${loop};p+=${r.width}}else`\n : \"\") +\n `{${c}=${this.const(enc.decode)}(I,p,E);if(${c}<0||${this.textRejectsDecoded(enc, r, cs, negate, c)})break ${loop};` +\n `p+=${this.const(enc.width)}(${c})}${count}}${finish}`\n )\n }\n const fast = 0xd800\n const small = TableSize\n const highTest = (v: string) => this.memberHigh(cs, negate, v)\n // Token on strings: code points, with lenient surrogates\n const cp = this.v(fn)\n const never = highTest(c) === \"false\"\n // Every code point from `TableSize` up is accepted: without a count,\n // surrogate pairs can be skipped a unit at a time\n const always = highTest(c) === \"true\"\n const rest =\n never && !negate\n ? `break;`\n : always && !counted\n ? `p++;`\n : `if(${c}<${fast}||${c}>56319){if(!(${highTest(c)}))break ${loop};p++}` +\n `else{${cp}=${c};if(p+1<I.length){const d=I.charCodeAt(p+1);if((d&64512)===56320)${cp}=((${c}-55296)<<10)+(d-56320)+65536}` +\n `if(!(${highTest(cp)}))break ${loop};p+=${cp}>65535?2:1}`\n return `${head}if(${c}<${small}){if(!(${member}))break;p++}else ${rest}${count}}${finish}`\n }\n\n escaped(p: ParserLike, node: NodeOf<\"Escaped\">, out: string | null, fail: string, fn: Fn, d: number): string {\n const enc = node.encoding\n const ctrl = node.control\n const r = enc === undefined ? undefined : this.reader(enc)\n if (r !== undefined && !(ctrl < r.fast)) return this.delegate(p, !node.raw, out, fail, fn)\n const raw = node.raw\n const acc = raw ? null : (out ?? this.v(fn))\n const x = raw ? null : this.v(fn)\n const b = this.v(fn)\n const st = this.v(fn)\n const okv = this.v(fn)\n const loop = this.label()\n const bad = this.label()\n const normal = this.gen(node.normal, !raw, x, `break ${bad};`, fn, d)\n const escape = this.gen(node.escape, !raw, x, fail, fn, d)\n const onNormal = raw\n ? `if(p===${b}){$S.mode=\"Cut\";${fail}}continue ${loop};`\n : `if(p!==${b}){${acc}+=${x};continue ${loop}}`\n const slice =\n enc !== undefined\n ? `${this.const(enc.text)}(I,${st},p)`\n : this.kind === 0\n ? `I.slice(${st},p)`\n : `I.subarray(${st},p)`\n const ctrlTest = r === undefined ? `p<E&&${this.unit(\"p\")}===${ctrl}` : `${r.guard(\"p\")}&&${r.unit(\"p\")}===${ctrl}`\n return (\n `${raw ? `${st}=p;` : `${acc}=\"\";`}${loop}:while(p<E){${b}=p;${okv}=false;` +\n `${bad}:{${normal}${okv}=true;}` +\n `if(${okv}){${onNormal}}else{if($S.mode!==\"Backtrack\"){${fail}}p=${b}}` +\n `if(${ctrlTest}){p+=${r?.width ?? 1};${escape}${raw ? \"\" : `${acc}+=${x};`}}else break ${loop};}` +\n (raw && out !== null ? `${out}=${slice};` : \"\")\n )\n }\n}\n\n/** The UTF-16 code units of a string. */\nconst unitsOf = (s: string): Array<number> => Array.from({ length: s.length }, (_, i) => s.charCodeAt(i))\n\n/** 1 where a small code is accepted (taking `negate` into account). */\nconst acceptTable = (set: CharSet, negate: boolean): Uint8Array => {\n const t = new Uint8Array(TableSize)\n for (let c = 0; c < TableSize; c++) t[c] = (set.table[c] === 1) !== negate ? 1 : 0\n return t\n}\n\n/** Generates the source of a compiled parser, without building it. */\nconst generate = (\n root: ParserLike,\n kind: 0 | 1 | 2,\n resumable = false\n): {\n readonly source: string\n readonly constants: ReadonlyArray<unknown>\n readonly fallbacks: ReadonlyArray<Fallback>\n} => {\n const e = new Emitter(root, kind, resumable)\n const main = e.rule(root, true)\n const source =\n `\"use strict\";let $I,$E,$S,P;${e.functions.join(\"\\n\")}\\n` +\n `return function run(state){const sI=$I,sE=$E,sS=$S,sP=P;$I=state.input;$E=state.end;$S=state;` +\n `try{const v=${main}(state.pos);if(v!==F)state.pos=P;return v}finally{$I=sI;$E=sE;$S=sS;P=sP}}`\n return { source, constants: e.constants, fallbacks: e.fallbacks }\n}\n\n/** Compiles a root parser for one input kind with `new Function`. */\nconst compileJit = (\n root: ParserLike,\n kind: 0 | 1 | 2,\n resumable = false\n): {\n readonly step: Step\n readonly fallbacks: ReadonlyArray<Fallback>\n readonly source: string\n} => {\n const { constants, fallbacks, source } = generate(root, kind, resumable)\n const run = globalThis.Function(\"C\", \"F\", \"R\", source)(constants, Fail, runtime) as Step\n // Generated code reads past `end` expecting nothing to match there, which\n // holds when `end` is the input's length, as it is in the runners.\n let closure: Step | undefined\n const step: Step = (state) =>\n state.end === state.input.length\n ? run(state)\n : (closure ??= createClosureCompiler(kind, resumable).compile(root, true))(state)\n return { step, fallbacks, source }\n}\n\n/**\n * The JIT as a backend: generated code where `new Function` is allowed,\n * otherwise (or if generating fails) the closure compiler.\n */\nexport const backend: Backend = {\n build: (p, kind, resumable) => {\n if (!jitSupported()) return closureBackend.build(p, kind, resumable)\n try {\n const { fallbacks, source, step } = compileJit(p, kind, resumable)\n return { backend: \"jit\", step, fallbacks, error: undefined, source }\n } catch (error) {\n // Fall back to the closure compiler, remembering why\n return { ...closureBackend.build(p, kind, resumable), jitError: error }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import type { State } from "../../Input.js";
|
|
6
|
-
import type { ParserLike } from "../node.js";
|
|
7
|
-
import type { Fallback, Step } from "./closure.js";
|
|
8
|
-
/** Which compiler to use. */
|
|
9
|
-
export type Backend = "auto" | "closure";
|
|
1
|
+
import { State } from "../../Input.js";
|
|
2
|
+
import { Fallback, Step } from "./closure.js";
|
|
3
|
+
import { ParserLike } from "../node.js";
|
|
4
|
+
//#region src/internal/compiler/registry.d.ts
|
|
10
5
|
/** What was compiled for a parser and an input kind. */
|
|
11
6
|
export interface Compiled {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
7
|
+
/** The compiler actually used. */
|
|
8
|
+
readonly backend: "jit" | "closure" | undefined;
|
|
9
|
+
readonly step: Step | undefined;
|
|
10
|
+
/** Parts of the grammar that run interpreted, and why. */
|
|
11
|
+
readonly fallbacks: ReadonlyArray<Fallback>;
|
|
12
|
+
/** Why compilation failed, if it did (the parser then runs interpreted). */
|
|
13
|
+
readonly error: unknown;
|
|
14
|
+
/** Why the JIT failed, if it did (the closure compiler is then used). */
|
|
15
|
+
readonly jitError?: unknown;
|
|
16
|
+
/** The generated source, for the JIT. */
|
|
17
|
+
readonly source?: string;
|
|
18
|
+
}
|
|
19
|
+
/** A compiler: builds the compiled form of a parser for an input kind. */
|
|
20
|
+
export interface Backend {
|
|
21
|
+
readonly build: (p: ParserLike, kind: 0 | 1 | 2, resumable: boolean) => Compiled;
|
|
23
22
|
}
|
|
24
23
|
export declare const register: (p: ParserLike, backend: Backend) => void;
|
|
25
|
-
export declare const isRegistered: (p: ParserLike) => boolean;
|
|
26
24
|
/**
|
|
27
25
|
* The compiled form of a registered parser for an input kind, compiling it
|
|
28
26
|
* if needed. `resumable` selects the build used by streaming parses, which
|
|
@@ -31,4 +29,5 @@ export declare const isRegistered: (p: ParserLike) => boolean;
|
|
|
31
29
|
export declare const compiled: (p: ParserLike, kind: 0 | 1 | 2, resumable?: boolean) => Compiled | undefined;
|
|
32
30
|
/** The compiled step for running `p` on `state`, if it is registered. */
|
|
33
31
|
export declare const stepFor: (p: ParserLike, state: State<any>, resumable?: boolean) => Step | undefined;
|
|
32
|
+
//#endregion
|
|
34
33
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","
|
|
1
|
+
{"version":3,"file":"registry.d.ts","names":[],"sources":["../../../src/internal/compiler/registry.ts"],"mappings":";;;;;iBAYiB;;WAEN;WACA,MAAM;;WAEN,WAAW,cAAc;;WAEzB;;WAEA;;WAEA;;;iBAIM;WACN,QAAQ,GAAG,YAAY,iBAAiB,uBAAuB;;qBAU7D,WAAY,GAAG,YAAY,SAAS;;;;;;qBAUpC,WAAY,GAAG,YAAY,iBAAiB,wBAAoB;;qBAQhE,UAAW,GAAG,YAAY,OAAO,YAAY,wBAAoB"}
|
|
@@ -1,46 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
export const isRegistered = (p) => registry.has(p);
|
|
10
|
-
const build = (p, kind, backend, resumable) => {
|
|
11
|
-
if (backend === "auto" && jitSupported()) {
|
|
12
|
-
try {
|
|
13
|
-
const { fallbacks, source, step } = compileJit(p, kind, resumable);
|
|
14
|
-
return { backend: "jit", step, fallbacks, error: undefined, source };
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
// Fall back to the closure compiler, remembering why
|
|
18
|
-
return { ...buildClosure(p, kind, resumable), jitError: error };
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return buildClosure(p, kind, resumable);
|
|
22
|
-
};
|
|
23
|
-
const buildClosure = (p, kind, resumable) => {
|
|
24
|
-
try {
|
|
25
|
-
const { fallbacks, step } = compileClosure(p, kind, resumable);
|
|
26
|
-
return { backend: "closure", step, fallbacks, error: undefined };
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
return { backend: undefined, step: undefined, fallbacks: [], error };
|
|
30
|
-
}
|
|
1
|
+
//#region src/internal/compiler/registry.ts
|
|
2
|
+
const registry = /*#__PURE__*/ new WeakMap();
|
|
3
|
+
const register = (p, backend) => {
|
|
4
|
+
const entry = registry.get(p);
|
|
5
|
+
if (entry === void 0 || entry.backend !== backend) registry.set(p, {
|
|
6
|
+
backend,
|
|
7
|
+
byKind: []
|
|
8
|
+
});
|
|
31
9
|
};
|
|
32
10
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return entry.byKind[index] ??= build(p, kind, entry.backend, resumable);
|
|
11
|
+
* The compiled form of a registered parser for an input kind, compiling it
|
|
12
|
+
* if needed. `resumable` selects the build used by streaming parses, which
|
|
13
|
+
* supports partial input and checkpoints.
|
|
14
|
+
*/
|
|
15
|
+
const compiled = (p, kind, resumable = false) => {
|
|
16
|
+
const entry = registry.get(p);
|
|
17
|
+
if (entry === void 0) return void 0;
|
|
18
|
+
const index = resumable ? kind + 3 : kind;
|
|
19
|
+
return entry.byKind[index] ??= entry.backend.build(p, kind, resumable);
|
|
43
20
|
};
|
|
44
21
|
/** The compiled step for running `p` on `state`, if it is registered. */
|
|
45
|
-
|
|
22
|
+
const stepFor = (p, state, resumable = false) => compiled(p, state.inputKind, resumable)?.step;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { compiled, register, stepFor };
|
|
25
|
+
|
|
46
26
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","
|
|
1
|
+
{"version":3,"file":"registry.js","names":[],"sources":["../../../src/internal/compiler/registry.ts"],"sourcesContent":["/**\n * The registry of compiled parsers, keyed by parser (see the `Compiler`\n * module). Compiled steps are built lazily, once per input kind.\n *\n * Nothing here imports a compiler: a parser is registered with the backend\n * that compiles it, so a program bundles only the backends it uses.\n */\nimport type { State } from \"../../Input.js\"\nimport type { ParserLike } from \"../node.js\"\nimport type { Fallback, Step } from \"./closure.js\"\n\n/** What was compiled for a parser and an input kind. */\nexport interface Compiled {\n /** The compiler actually used. */\n readonly backend: \"jit\" | \"closure\" | undefined\n readonly step: Step | undefined\n /** Parts of the grammar that run interpreted, and why. */\n readonly fallbacks: ReadonlyArray<Fallback>\n /** Why compilation failed, if it did (the parser then runs interpreted). */\n readonly error: unknown\n /** Why the JIT failed, if it did (the closure compiler is then used). */\n readonly jitError?: unknown\n /** The generated source, for the JIT. */\n readonly source?: string\n}\n\n/** A compiler: builds the compiled form of a parser for an input kind. */\nexport interface Backend {\n readonly build: (p: ParserLike, kind: 0 | 1 | 2, resumable: boolean) => Compiled\n}\n\ninterface Entry {\n readonly backend: Backend\n readonly byKind: Array<Compiled | undefined>\n}\n\nconst registry = /*#__PURE__*/ new WeakMap<ParserLike, Entry>()\n\nexport const register = (p: ParserLike, backend: Backend): void => {\n const entry = registry.get(p)\n if (entry === undefined || entry.backend !== backend) registry.set(p, { backend, byKind: [] })\n}\n\n/**\n * The compiled form of a registered parser for an input kind, compiling it\n * if needed. `resumable` selects the build used by streaming parses, which\n * supports partial input and checkpoints.\n */\nexport const compiled = (p: ParserLike, kind: 0 | 1 | 2, resumable = false): Compiled | undefined => {\n const entry = registry.get(p)\n if (entry === undefined) return undefined\n const index = resumable ? kind + 3 : kind\n return (entry.byKind[index] ??= entry.backend.build(p, kind, resumable))\n}\n\n/** The compiled step for running `p` on `state`, if it is registered. */\nexport const stepFor = (p: ParserLike, state: State<any>, resumable = false): Step | undefined =>\n compiled(p, state.inputKind, resumable)?.step\n"],"mappings":";AAoCA,MAAM,yBAAyB,IAAI,QAA2B;AAE9D,MAAa,YAAY,GAAe,YAA2B;CACjE,MAAM,QAAQ,SAAS,IAAI,CAAC;CAC5B,IAAI,UAAU,KAAA,KAAa,MAAM,YAAY,SAAS,SAAS,IAAI,GAAG;EAAE;EAAS,QAAQ,CAAC;CAAE,CAAC;AAC/F;;;;;;AAOA,MAAa,YAAY,GAAe,MAAiB,YAAY,UAAgC;CACnG,MAAM,QAAQ,SAAS,IAAI,CAAC;CAC5B,IAAI,UAAU,KAAA,GAAW,OAAO,KAAA;CAChC,MAAM,QAAQ,YAAY,OAAO,IAAI;CACrC,OAAQ,MAAM,OAAO,WAAW,MAAM,QAAQ,MAAM,GAAG,MAAM,SAAS;AACxE;;AAGA,MAAa,WAAW,GAAe,OAAmB,YAAY,UACpE,SAAS,GAAG,MAAM,WAAW,SAAS,CAAC,EAAE"}
|
|
@@ -1,20 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* exact test for the rest, and the code point ranges when they are known.
|
|
4
|
-
*/
|
|
5
|
-
import type { Encoding } from "../../Encoding.js";
|
|
1
|
+
import { Encoding } from "../../Encoding.js";
|
|
2
|
+
//#region src/internal/compiler/sets.d.ts
|
|
6
3
|
/** Size of the membership table: every byte, and the Latin-1 code points. */
|
|
7
4
|
export declare const TableSize = 256;
|
|
8
5
|
export interface CharSet {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
/** Tests a code point (or byte, for `Token` on bytes). */
|
|
7
|
+
readonly test: (code: number) => boolean;
|
|
8
|
+
/** `table[c] === 1` iff `test(c)`, for `c < TableSize`. */
|
|
9
|
+
readonly table: Uint8Array;
|
|
10
|
+
/** Sorted inclusive ranges of accepted code points, when known. */
|
|
11
|
+
readonly ranges: ReadonlyArray<readonly [number, number]> | undefined;
|
|
15
12
|
}
|
|
16
|
-
/** The code point ranges of a token set, or `undefined` if it has an unknown predicate. */
|
|
17
|
-
export declare const rangesOf: (set: unknown) => Array<[number, number]> | undefined;
|
|
18
13
|
/**
|
|
19
14
|
* The set as a `Token` parser sees it: string predicates receive strings on
|
|
20
15
|
* string input, everything receives numbers on byte input.
|
|
@@ -26,4 +21,5 @@ export declare const textSet: (set: unknown) => CharSet;
|
|
|
26
21
|
export declare const reachesAbove: (s: CharSet, limit: number) => boolean;
|
|
27
22
|
/** The input kind a `Text` encoding reads: 0 for strings, 1 for bytes. */
|
|
28
23
|
export declare const kindOfEncoding: (enc: Encoding<any>) => 0 | 1;
|
|
24
|
+
//#endregion
|
|
29
25
|
//# sourceMappingURL=sets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sets.d.ts","
|
|
1
|
+
{"version":3,"file":"sets.d.ts","names":[],"sources":["../../../src/internal/compiler/sets.ts"],"mappings":";;;qBAYa;iBAEI;;WAEN,OAAO;;WAEP,OAAO;;WAEP,QAAQ;;;;;;qBAkEN,WAAY,cAAc,gBAAc;;qBAMxC,UAAW,iBAAe;;qBAG1B,eAAgB,GAAG,SAAS;;qBAI5B,iBAAkB,KAAK"}
|