@thomasfosterau/effect-parse 0.1.0 → 0.3.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.
Files changed (161) hide show
  1. package/README.md +291 -231
  2. package/dist/Ascii.d.ts +32 -53
  3. package/dist/Ascii.d.ts.map +1 -1
  4. package/dist/Ascii.js +576 -571
  5. package/dist/Ascii.js.map +1 -1
  6. package/dist/Binary.d.ts +6 -29
  7. package/dist/Binary.d.ts.map +1 -1
  8. package/dist/Binary.js +129 -116
  9. package/dist/Binary.js.map +1 -1
  10. package/dist/Bits.d.ts +4 -2
  11. package/dist/Bits.d.ts.map +1 -1
  12. package/dist/Bits.js +121 -123
  13. package/dist/Bits.js.map +1 -1
  14. package/dist/Compiler.d.ts +39 -0
  15. package/dist/Compiler.d.ts.map +1 -0
  16. package/dist/Compiler.js +48 -0
  17. package/dist/Compiler.js.map +1 -0
  18. package/dist/Encoding.d.ts +29 -46
  19. package/dist/Encoding.d.ts.map +1 -1
  20. package/dist/Encoding.js +76 -75
  21. package/dist/Encoding.js.map +1 -1
  22. package/dist/Expression.d.ts +15 -49
  23. package/dist/Expression.d.ts.map +1 -1
  24. package/dist/Expression.js +151 -132
  25. package/dist/Expression.js.map +1 -1
  26. package/dist/Input.d.ts +251 -177
  27. package/dist/Input.d.ts.map +1 -1
  28. package/dist/Input.js +409 -299
  29. package/dist/Input.js.map +1 -1
  30. package/dist/Nom.d.ts +45 -85
  31. package/dist/Nom.d.ts.map +1 -1
  32. package/dist/Nom.js +423 -453
  33. package/dist/Nom.js.map +1 -1
  34. package/dist/ParseError.d.ts +54 -49
  35. package/dist/ParseError.d.ts.map +1 -1
  36. package/dist/ParseError.js +232 -275
  37. package/dist/ParseError.js.map +1 -1
  38. package/dist/Parser.d.ts +345 -313
  39. package/dist/Parser.d.ts.map +1 -1
  40. package/dist/Parser.js +2034 -1802
  41. package/dist/Parser.js.map +1 -1
  42. package/dist/ParserSchema.d.ts +206 -7
  43. package/dist/ParserSchema.d.ts.map +1 -1
  44. package/dist/ParserSchema.js +678 -49
  45. package/dist/ParserSchema.js.map +1 -1
  46. package/dist/ParserStream.d.ts +26 -20
  47. package/dist/ParserStream.d.ts.map +1 -1
  48. package/dist/ParserStream.js +267 -255
  49. package/dist/ParserStream.js.map +1 -1
  50. package/dist/Syntax.d.ts +401 -0
  51. package/dist/Syntax.d.ts.map +1 -0
  52. package/dist/Syntax.js +717 -0
  53. package/dist/Syntax.js.map +1 -0
  54. package/dist/Text.d.ts +98 -134
  55. package/dist/Text.d.ts.map +1 -1
  56. package/dist/Text.js +534 -496
  57. package/dist/Text.js.map +1 -1
  58. package/dist/Token.d.ts +60 -42
  59. package/dist/Token.d.ts.map +1 -1
  60. package/dist/Token.js +331 -265
  61. package/dist/Token.js.map +1 -1
  62. package/dist/index.d.ts +16 -17
  63. package/dist/index.js +16 -17
  64. package/dist/internal/compiler/closure.d.ts +14 -16
  65. package/dist/internal/compiler/closure.d.ts.map +1 -1
  66. package/dist/internal/compiler/closure.js +1458 -1637
  67. package/dist/internal/compiler/closure.js.map +1 -1
  68. package/dist/internal/compiler/entries.d.ts +11 -11
  69. package/dist/internal/compiler/entries.d.ts.map +1 -1
  70. package/dist/internal/compiler/entries.js +36 -26
  71. package/dist/internal/compiler/entries.js.map +1 -1
  72. package/dist/internal/compiler/first.d.ts +19 -19
  73. package/dist/internal/compiler/first.d.ts.map +1 -1
  74. package/dist/internal/compiler/first.js +251 -227
  75. package/dist/internal/compiler/first.js.map +1 -1
  76. package/dist/internal/compiler/jit.d.ts +6 -17
  77. package/dist/internal/compiler/jit.d.ts.map +1 -1
  78. package/dist/internal/compiler/jit.js +860 -988
  79. package/dist/internal/compiler/jit.js.map +1 -1
  80. package/dist/internal/compiler/registry.d.ts +20 -21
  81. package/dist/internal/compiler/registry.d.ts.map +1 -1
  82. package/dist/internal/compiler/registry.js +21 -41
  83. package/dist/internal/compiler/registry.js.map +1 -1
  84. package/dist/internal/compiler/sets.d.ts +9 -13
  85. package/dist/internal/compiler/sets.d.ts.map +1 -1
  86. package/dist/internal/compiler/sets.js +76 -73
  87. package/dist/internal/compiler/sets.js.map +1 -1
  88. package/dist/internal/entries.d.ts +3 -3
  89. package/dist/internal/entries.d.ts.map +1 -1
  90. package/dist/internal/entries.js +38 -30
  91. package/dist/internal/entries.js.map +1 -1
  92. package/dist/internal/node.d.ts +177 -173
  93. package/dist/internal/node.d.ts.map +1 -1
  94. package/dist/internal/node.js +77 -66
  95. package/dist/internal/node.js.map +1 -1
  96. package/dist/internal/numbers.d.ts +7 -8
  97. package/dist/internal/numbers.d.ts.map +1 -1
  98. package/dist/internal/numbers.js +246 -276
  99. package/dist/internal/numbers.js.map +1 -1
  100. package/dist/internal/resume.d.ts +6 -24
  101. package/dist/internal/resume.d.ts.map +1 -1
  102. package/dist/internal/resume.js +30 -29
  103. package/dist/internal/resume.js.map +1 -1
  104. package/dist/internal/run.d.ts +15 -0
  105. package/dist/internal/run.d.ts.map +1 -0
  106. package/dist/internal/run.js +36 -0
  107. package/dist/internal/run.js.map +1 -0
  108. package/dist/internal/stack.d.ts +16 -0
  109. package/dist/internal/stack.d.ts.map +1 -0
  110. package/dist/internal/stack.js +36 -0
  111. package/dist/internal/stack.js.map +1 -0
  112. package/dist/internal/syntax.d.ts +147 -0
  113. package/dist/internal/syntax.d.ts.map +1 -0
  114. package/dist/internal/syntax.js +309 -0
  115. package/dist/internal/syntax.js.map +1 -0
  116. package/dist/internal/text.d.ts +10 -2
  117. package/dist/internal/text.d.ts.map +1 -1
  118. package/dist/internal/text.js +295 -345
  119. package/dist/internal/text.js.map +1 -1
  120. package/dist/internal/ties.d.ts +30 -0
  121. package/dist/internal/ties.d.ts.map +1 -0
  122. package/dist/internal/ties.js +67 -0
  123. package/dist/internal/ties.js.map +1 -0
  124. package/dist/internal/tokens.d.ts +25 -30
  125. package/dist/internal/tokens.d.ts.map +1 -1
  126. package/dist/internal/tokens.js +369 -363
  127. package/dist/internal/tokens.js.map +1 -1
  128. package/package.json +42 -28
  129. package/src/Ascii.ts +278 -187
  130. package/src/Binary.ts +150 -44
  131. package/src/Bits.ts +6 -3
  132. package/src/Compiler.ts +98 -0
  133. package/src/Expression.ts +24 -16
  134. package/src/Input.ts +210 -35
  135. package/src/Nom.ts +4 -3
  136. package/src/ParseError.ts +49 -52
  137. package/src/Parser.ts +1199 -799
  138. package/src/ParserSchema.ts +982 -23
  139. package/src/ParserStream.ts +104 -80
  140. package/src/Syntax.ts +900 -0
  141. package/src/Text.ts +272 -187
  142. package/src/Token.ts +180 -87
  143. package/src/index.ts +2 -0
  144. package/src/internal/compiler/closure.ts +121 -88
  145. package/src/internal/compiler/entries.ts +21 -8
  146. package/src/internal/compiler/first.ts +17 -15
  147. package/src/internal/compiler/jit.ts +360 -157
  148. package/src/internal/compiler/registry.ts +12 -33
  149. package/src/internal/compiler/sets.ts +17 -11
  150. package/src/internal/entries.ts +4 -2
  151. package/src/internal/node.ts +51 -37
  152. package/src/internal/numbers.ts +22 -20
  153. package/src/internal/resume.ts +8 -4
  154. package/src/internal/run.ts +41 -0
  155. package/src/internal/stack.ts +41 -0
  156. package/src/internal/syntax.ts +426 -0
  157. package/src/internal/text.ts +32 -25
  158. package/src/internal/ties.ts +83 -0
  159. package/src/internal/tokens.ts +96 -51
  160. package/dist/index.d.ts.map +0 -1
  161. package/dist/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/internal/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","names":[],"sources":["../../src/internal/text.ts"],"sourcesContent":["import type { Encoding } from \"../Encoding.js\"\nimport type { Fail, State } from \"../Input.js\"\n\n// -----------------------------------------------------------------------------\n// Decoding results\n// -----------------------------------------------------------------------------\n\n/** `Encoding.decode`: the input is malformed. */\nexport const Invalid = -1\n/** `Encoding.decode`: the input ends inside a sequence. */\nexport const Truncated = -2\n/** `next`: the input has ended. */\nexport const End = -3\n\n// -----------------------------------------------------------------------------\n// Encodings\n// -----------------------------------------------------------------------------\n\n/**\n * Units below this value decode to themselves with width 1, so hot loops can\n * skip `decode`. Defaults to 0x80 for ASCII compatible encodings.\n */\nconst FastLimit: unique symbol = /*#__PURE__*/ Symbol.for(\"effect-parse/Encoding/FastLimit\")\n\n/** @internal */\nexport const fastLimit = (enc: Encoding<any>): number =>\n (enc as any)[FastLimit] ?? (enc.asciiCompatible && enc.unit === 1 ? 0x80 : 0)\n\nconst asciiChars: ReadonlyArray<string> = /*#__PURE__*/ Array.from({ length: 128 }, (_, i) => String.fromCharCode(i))\n\n/**\n * The code point that starts `s`: for a string known to hold one, such as\n * one element of `Array.from(string)`. On an empty string it is `NaN`, which,\n * like the `undefined` of `codePointAt(0)`, matches no code point.\n */\nexport const firstCodePoint = (s: string): number => s.codePointAt(0) ?? Number.NaN\n\n/** `String.fromCodePoint`, with the ASCII characters cached. */\nexport const charOf = (cp: number): string =>\n cp < 128 ? asciiChars[cp] : cp < 0x10000 ? String.fromCharCode(cp) : String.fromCodePoint(cp)\n\nconst decodeString = (s: string, i: number, end: number): number => {\n const c = s.charCodeAt(i)\n if ((c & 0xf800) !== 0xd800) return c\n if (c <= 0xdbff) {\n if (i + 1 >= end) return Truncated\n const d = s.charCodeAt(i + 1)\n if ((d & 0xfc00) === 0xdc00) return ((c - 0xd800) << 10) + (d - 0xdc00) + 0x10000\n }\n return Invalid\n}\n\n/**\n * JavaScript strings: UTF-16 code units. Offsets are code-unit indices and\n * slices are `String.prototype.slice`s, so no decoding is needed.\n */\nexport const string: Encoding<string> = {\n name: \"UTF-16\",\n unit: 1,\n asciiCompatible: true,\n decode: decodeString,\n width: (cp) => (cp > 0xffff ? 2 : 1),\n encode: (text) => text,\n text: (s, start, end) => s.slice(start, end),\n [FastLimit]: 0xd800\n} as Encoding<string>\n\nconst decodeUtf8 = (b: Uint8Array, i: number, end: number): number => {\n const c = b[i]\n if (c < 0x80) return c\n if (c < 0xc2) return Invalid\n if (c < 0xe0) {\n if (i + 1 >= end) return Truncated\n const d = b[i + 1]\n return (d & 0xc0) === 0x80 ? ((c & 0x1f) << 6) | (d & 0x3f) : Invalid\n }\n if (c < 0xf0) {\n if (i + 1 >= end) return Truncated\n const d = b[i + 1]\n // Reject overlong encodings (E0 80..9F) and surrogates (ED A0..BF)\n if (c === 0xe0 ? d < 0xa0 || d > 0xbf : c === 0xed ? d < 0x80 || d > 0x9f : (d & 0xc0) !== 0x80) return Invalid\n if (i + 2 >= end) return Truncated\n const e = b[i + 2]\n return (e & 0xc0) === 0x80 ? ((c & 0x0f) << 12) | ((d & 0x3f) << 6) | (e & 0x3f) : Invalid\n }\n if (c < 0xf5) {\n if (i + 1 >= end) return Truncated\n const d = b[i + 1]\n // Reject overlong encodings (F0 80..8F) and code points above U+10FFFF (F4 90..BF)\n if (c === 0xf0 ? d < 0x90 || d > 0xbf : c === 0xf4 ? d < 0x80 || d > 0x8f : (d & 0xc0) !== 0x80) return Invalid\n if (i + 2 >= end) return Truncated\n const e = b[i + 2]\n if ((e & 0xc0) !== 0x80) return Invalid\n if (i + 3 >= end) return Truncated\n const f = b[i + 3]\n return (f & 0xc0) === 0x80 ? ((c & 0x07) << 18) | ((d & 0x3f) << 12) | ((e & 0x3f) << 6) | (f & 0x3f) : Invalid\n }\n return Invalid\n}\n\n// Building short strings by hand is several times faster than a\n// `TextDecoder` call, which has a high fixed cost.\nconst SHORT = 24\n\nconst utf8Decoder = /*#__PURE__*/ new TextDecoder(\"utf-8\", { ignoreBOM: true })\n\n/**\n * Decodes `b[start, end)`. Some platforms' `TextDecoder` rejects views of a\n * `SharedArrayBuffer`, so those are copied first.\n */\nconst decodeRange = (decoder: TextDecoder, b: Uint8Array, start: number, end: number): string => {\n const view = b.subarray(start, end)\n return decoder.decode(b.buffer instanceof ArrayBuffer ? view : view.slice())\n}\nconst utf8Encoder = /*#__PURE__*/ new TextEncoder()\n\n/** UTF-8 bytes. */\nexport const utf8: Encoding<Uint8Array> = {\n name: \"UTF-8\",\n unit: 1,\n asciiCompatible: true,\n decode: decodeUtf8,\n width: (cp) => (cp < 0x80 ? 1 : cp < 0x800 ? 2 : cp < 0x10000 ? 3 : 4),\n encode: (text) => utf8Encoder.encode(text),\n text: (b, start, end) => {\n if (end - start > SHORT) return decodeRange(utf8Decoder, b, start, end)\n let out = \"\"\n for (let i = start; i < end;) {\n const c = b[i]\n if (c < 0x80) {\n out += asciiChars[c]\n i++\n } else {\n const cp = decodeUtf8(b, i, end)\n out += cp < 0x10000 ? String.fromCharCode(cp) : String.fromCodePoint(cp)\n i += cp < 0x800 ? 2 : cp < 0x10000 ? 3 : 4\n }\n }\n return out\n }\n}\n\nconst makeUtf16 = (littleEndian: boolean): Encoding<Uint8Array> => {\n const lo = littleEndian ? 0 : 1\n const hi = 1 - lo\n let decoder: TextDecoder | undefined\n return {\n name: littleEndian ? \"UTF-16LE\" : \"UTF-16BE\",\n unit: 2,\n asciiCompatible: false,\n decode: (b, i, end) => {\n if (i + 1 >= end) return Truncated\n const c = b[i + lo] | (b[i + hi] << 8)\n if ((c & 0xf800) !== 0xd800) return c\n if (c > 0xdbff) return Invalid\n if (i + 3 >= end) return Truncated\n const d = b[i + 2 + lo] | (b[i + 2 + hi] << 8)\n return (d & 0xfc00) === 0xdc00 ? ((c - 0xd800) << 10) + (d - 0xdc00) + 0x10000 : Invalid\n },\n width: (cp) => (cp > 0xffff ? 4 : 2),\n encode: (text) => {\n const out = new Uint8Array(text.length * 2)\n for (let i = 0; i < text.length; i++) {\n const c = text.charCodeAt(i)\n out[2 * i + lo] = c & 0xff\n out[2 * i + hi] = c >> 8\n }\n return out\n },\n text: (b, start, end) => {\n if (end - start <= SHORT * 2) {\n // The range is well formed, so surrogate pairs can be copied unit by unit\n let out = \"\"\n for (let i = start; i < end; i += 2) out += String.fromCharCode(b[i + lo] | (b[i + hi] << 8))\n return out\n }\n decoder ??= new TextDecoder(littleEndian ? \"utf-16le\" : \"utf-16be\", { ignoreBOM: true })\n return decodeRange(decoder, b, start, end)\n }\n }\n}\n\n/** UTF-16 bytes, little endian. */\nexport const utf16le: Encoding<Uint8Array> = /*#__PURE__*/ makeUtf16(true)\n\n/** UTF-16 bytes, big endian. */\nexport const utf16be: Encoding<Uint8Array> = /*#__PURE__*/ makeUtf16(false)\n\n/** ISO-8859-1: every byte is the code point of the same value. */\nexport const latin1: Encoding<Uint8Array> = {\n name: \"ISO-8859-1\",\n unit: 1,\n asciiCompatible: true,\n decode: (b, i) => b[i],\n width: () => 1,\n encode: (text) => {\n const out = new Uint8Array(text.length)\n for (let i = 0; i < text.length; i++) {\n const c = text.charCodeAt(i)\n if (c > 0xff) throw new RangeError(`${JSON.stringify(text[i])} can't be encoded as ISO-8859-1`)\n out[i] = c\n }\n return out\n },\n text: (b, start, end) => {\n let out = \"\"\n for (let i = start; i < end; i += 8192) {\n out += String.fromCharCode.apply(null, b.subarray(i, Math.min(end, i + 8192)) as unknown as Array<number>)\n }\n return out\n },\n [FastLimit]: 0x100\n} as Encoding<Uint8Array>\n\n// -----------------------------------------------------------------------------\n// Reading code points from a State\n// -----------------------------------------------------------------------------\n\n/** The width of the code point returned by the latest {@link next}. */\nexport let width = 0\n\n/**\n * Decodes the code point at the cursor without consuming it. Returns the\n * code point (setting {@link width}), {@link End}, {@link Invalid}, or\n * {@link Truncated} (only for partial input; on complete input a truncated\n * sequence is {@link Invalid}).\n */\nexport const next = (enc: Encoding<any>, state: State<any>, pos: number = state.pos): number => {\n const end = state.end\n if (pos >= end) return End\n const cp = enc.decode(state.input, pos, end)\n if (cp >= 0) {\n width = enc.width(cp)\n return cp\n }\n return cp === Truncated && !state.partial ? Invalid : cp\n}\n\n/**\n * Fails a parser that expected a code point but found `cp` (one of the\n * negative results of {@link next}, or a code point that did not match).\n */\nexport const failAt = (\n state: State<any>,\n cp: number,\n kind: Parameters<State[\"backtrack\"]>[0],\n expected: ReadonlyArray<string>,\n offset: number = state.pos\n): Fail => {\n if (cp === End) return state.eoi(kind, expected, 1)\n if (cp === Truncated) return state.incomplete(1, expected)\n return state.backtrack(kind, expected, offset)\n}\n\n// Results of `scan`, kept in module variables to avoid allocating\n/** Offset reached by the latest {@link scan}. */\nexport let scanOffset = 0\n/** Number of code points matched by the latest {@link scan}. */\nexport let scanCount = 0\n/**\n * Why the latest {@link scan} stopped: 0 = a non-matching code point or the\n * maximum count, or one of {@link End}, {@link Invalid}, {@link Truncated}.\n */\nexport let scanStop = 0\n\n/**\n * Scans code points from `pos` while `test(cp) !== negate`, up to `max`\n * code points. `fast` is `fastLimit(enc)`, which callers can precompute.\n */\nexport const scan = (\n enc: Encoding<any>,\n state: State<any>,\n test: (cp: number) => boolean,\n negate: boolean,\n max: number,\n pos: number = state.pos,\n fast: number = fastLimit(enc)\n): void => {\n const end = state.end\n const decode = enc.decode\n let i = pos\n let count = 0\n let stop = 0\n if (state.inputKind === 0) {\n const s = state.input as string\n while (count < max) {\n if (i >= end) {\n stop = End\n break\n }\n const c = s.charCodeAt(i)\n if (c < fast) {\n if (test(c) === negate) break\n i++\n } else {\n const cp = decode(s, i, end)\n if (cp < 0) {\n stop = cp === Truncated && state.partial ? Truncated : Invalid\n break\n }\n if (test(cp) === negate) break\n i += enc.width(cp)\n }\n count++\n }\n } else {\n const b = state.input as Uint8Array\n while (count < max) {\n if (i >= end) {\n stop = End\n break\n }\n const c = b[i]\n if (c < fast) {\n if (test(c) === negate) break\n i++\n } else {\n const cp = decode(b, i, end)\n if (cp < 0) {\n stop = cp === Truncated && state.partial ? Truncated : Invalid\n break\n }\n if (test(cp) === negate) break\n i += enc.width(cp)\n }\n count++\n }\n }\n scanOffset = i\n scanCount = count\n scanStop = stop\n}\n\nconst always = () => true\n\n/**\n * Checks that `[start, end)` is well formed, counting its code points.\n * Returns the count, or `-1 - offset` of the first malformed sequence.\n */\nexport const validate = (enc: Encoding<any>, state: State<any>, start: number, end: number): number => {\n const savedEnd = state.end\n const savedPartial = state.partial\n state.end = end\n state.partial = false\n scan(enc, state, always, false, Infinity, start)\n state.end = savedEnd\n state.partial = savedPartial\n return scanStop === Invalid ? -1 - scanOffset : scanCount\n}\n\n// -----------------------------------------------------------------------------\n// Case folding\n// -----------------------------------------------------------------------------\n\nconst foldCache = /*#__PURE__*/ new Map<number, number>()\n\nconst single = (s: string): number => {\n const cp = firstCodePoint(s)\n return s.length === (cp > 0xffff ? 2 : 1) ? cp : -1\n}\n\n/**\n * Simple case folding of a code point: the lowercase of its uppercase, when\n * both map to a single code point (so `\"K\"` (Kelvin) and `\"ſ\"` fold to `\"k\"`\n * and `\"s\"`), otherwise the code point itself.\n */\nexport const fold = (cp: number): number => {\n if (cp < 128) return cp >= 65 && cp <= 90 ? cp + 32 : cp\n let f = foldCache.get(cp)\n if (f === undefined) {\n const c = String.fromCodePoint(cp)\n const upper = c.toUpperCase()\n const viaUpper = single(upper) >= 0 ? single(upper.toLowerCase()) : -1\n f = viaUpper >= 0 ? viaUpper : single(c.toLowerCase())\n if (f < 0) f = cp\n foldCache.set(cp, f)\n }\n return f\n}\n\n// -----------------------------------------------------------------------------\n// Error rendering\n// -----------------------------------------------------------------------------\n\n/**\n * Walks the code points of `[start, end)` leniently: malformed sequences\n * are reported as `-1` and skipped one code unit at a time.\n */\nexport const walk = (\n enc: Encoding<any>,\n input: string | Uint8Array,\n start: number,\n end: number,\n f: (cp: number, offset: number, width: number) => boolean | void\n): void => {\n let i = start\n while (i < end) {\n let cp = enc.decode(input, i, end)\n let w: number\n if (cp >= 0) {\n w = enc.width(cp)\n } else {\n cp = -1\n w = Math.min(enc.unit, end - i)\n }\n if (f(cp, i, w) === false) return\n i += w\n }\n}\n\n/** Decodes `[start, end)`, replacing malformed sequences with U+FFFD. */\nexport const lenientText = (enc: Encoding<any>, input: string | Uint8Array, start: number, end: number): string => {\n let out = \"\"\n walk(enc, input, start, end, (cp) => {\n out += cp < 0 ? \"�\" : charOf(cp)\n })\n return out\n}\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Fail, Failure, Input, State } from "../Input.js";
2
+ //#region src/internal/ties.d.ts
3
+ /** The failures of a round of attempts, folded lazily. */
4
+ export declare class TiedFailures {
5
+ /** The running failure, before the pending ties are merged into it. */
6
+ failure: Failure | undefined;
7
+ /** The oldest pending tie, at `failure`'s offset. */
8
+ tie1: Failure | undefined;
9
+ /** The newest pending tie, at `failure`'s offset. */
10
+ tie2: Failure | undefined;
11
+ /** Forgets every failure, for a new round. */
12
+ clear(): void;
13
+ /**
14
+ * Folds in the failure the latest attempt left on `state`, taking over
15
+ * its own unmerged ties when it is the furthest.
16
+ */
17
+ add<I extends Input>(state: State<I>): void;
18
+ /**
19
+ * Fails `state` with the folded failure (recoverably), or with its
20
+ * current failure when nothing was folded.
21
+ */
22
+ fail<I extends Input>(state: State<I>): Fail;
23
+ /**
24
+ * Records the folded expectations as a hint when the folded failure lies
25
+ * where `state` stopped (an attempt that fails without consuming input).
26
+ */
27
+ hint<I extends Input>(state: State<I>): void;
28
+ }
29
+ //#endregion
30
+ //# sourceMappingURL=ties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ties.d.ts","names":[],"sources":["../../src/internal/ties.ts"],"mappings":";;;qBAkBa;;EAEX,SAAS;;EAET,MAAM;;EAEN,MAAM;;EAGN;;;;;EAUA,IAAI,UAAU,OAAO,OAAO,MAAM;;;;;EA0BlC,KAAK,UAAU,OAAO,OAAO,MAAM,KAAK;;;;;EAWxC,KAAK,UAAU,OAAO,OAAO,MAAM"}
@@ -0,0 +1,67 @@
1
+ import { mergeExpected, mergeTiedFailures } from "../Input.js";
2
+ //#region src/internal/ties.ts
3
+ /** The failures of a round of attempts, folded lazily. */
4
+ var TiedFailures = class {
5
+ /** The running failure, before the pending ties are merged into it. */
6
+ failure = void 0;
7
+ /** The oldest pending tie, at `failure`'s offset. */
8
+ tie1 = void 0;
9
+ /** The newest pending tie, at `failure`'s offset. */
10
+ tie2 = void 0;
11
+ /** Forgets every failure, for a new round. */
12
+ clear() {
13
+ this.failure = void 0;
14
+ this.tie1 = void 0;
15
+ this.tie2 = void 0;
16
+ }
17
+ /**
18
+ * Folds in the failure the latest attempt left on `state`, taking over
19
+ * its own unmerged ties when it is the furthest.
20
+ */
21
+ add(state) {
22
+ const head = state.failureHead;
23
+ const running = this.failure;
24
+ if (running === void 0 || head.offset > running.offset) {
25
+ this.failure = head;
26
+ this.tie1 = state.failureTie1;
27
+ this.tie2 = state.failureTie2;
28
+ return;
29
+ }
30
+ if (head.offset < running.offset) return;
31
+ const failure = state.failure;
32
+ const tie1 = this.tie1;
33
+ if (tie1 === void 0) this.tie1 = failure;
34
+ else if (this.tie2 === void 0) this.tie2 = failure;
35
+ else {
36
+ this.failure = mergeTiedFailures(running, tie1, mergeExpected(running.expected, tie1.expected));
37
+ this.tie1 = this.tie2;
38
+ this.tie2 = failure;
39
+ }
40
+ }
41
+ /**
42
+ * Fails `state` with the folded failure (recoverably), or with its
43
+ * current failure when nothing was folded.
44
+ */
45
+ fail(state) {
46
+ const failure = this.failure;
47
+ if (failure === void 0) return state.failWith("Backtrack", state.failure);
48
+ const tie1 = this.tie1;
49
+ return tie1 === void 0 ? state.failWith("Backtrack", failure) : state.failTies(failure, tie1, this.tie2);
50
+ }
51
+ /**
52
+ * Records the folded expectations as a hint when the folded failure lies
53
+ * where `state` stopped (an attempt that fails without consuming input).
54
+ */
55
+ hint(state) {
56
+ const failure = this.failure;
57
+ if (failure === void 0 || failure.offset !== state.pos) return;
58
+ let expected = failure.expected;
59
+ if (this.tie1 !== void 0) expected = mergeExpected(expected, this.tie1.expected);
60
+ if (this.tie2 !== void 0) expected = mergeExpected(expected, this.tie2.expected);
61
+ state.setHint(failure.offset, expected);
62
+ }
63
+ };
64
+ //#endregion
65
+ export { TiedFailures };
66
+
67
+ //# sourceMappingURL=ties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ties.js","names":[],"sources":["../../src/internal/ties.ts"],"sourcesContent":["/**\n * Tied failures, merged only when read.\n *\n * A combinator that tries several parsers at the same position (an\n * alternation, a permutation round, an operator table) reports the merge\n * of their failures, left to right, as `mergeFailures` would. Most of the\n * time one of the later attempts succeeds and the merge is thrown away, so\n * {@link TiedFailures} keeps the last two failures tied with the running\n * one unmerged, and {@link TiedFailures.fail} hands them to the state with\n * `State.failTies`, which merges them on first read (#38, #44).\n *\n * `Parser.alt` does the same fold in locals, since it is the hottest\n * combinator and cannot afford an accumulator per call.\n */\nimport type { Failure, Fail, Input, State } from \"../Input.js\"\nimport { mergeExpected, mergeTiedFailures } from \"../Input.js\"\n\n/** The failures of a round of attempts, folded lazily. */\nexport class TiedFailures {\n /** The running failure, before the pending ties are merged into it. */\n failure: Failure | undefined = undefined\n /** The oldest pending tie, at `failure`'s offset. */\n tie1: Failure | undefined = undefined\n /** The newest pending tie, at `failure`'s offset. */\n tie2: Failure | undefined = undefined\n\n /** Forgets every failure, for a new round. */\n clear(): void {\n this.failure = undefined\n this.tie1 = undefined\n this.tie2 = undefined\n }\n\n /**\n * Folds in the failure the latest attempt left on `state`, taking over\n * its own unmerged ties when it is the furthest.\n */\n add<I extends Input>(state: State<I>): void {\n const head = state.failureHead\n const running = this.failure\n if (running === undefined || head.offset > running.offset) {\n this.failure = head\n this.tie1 = state.failureTie1\n this.tie2 = state.failureTie2\n return\n }\n if (head.offset < running.offset) return\n const failure = state.failure\n const tie1 = this.tie1\n if (tie1 === undefined) this.tie1 = failure\n else if (this.tie2 === undefined) this.tie2 = failure\n else {\n // A third tie: fold the oldest pending one in, keeping the order\n this.failure = mergeTiedFailures(running, tie1, mergeExpected(running.expected, tie1.expected))\n this.tie1 = this.tie2\n this.tie2 = failure\n }\n }\n\n /**\n * Fails `state` with the folded failure (recoverably), or with its\n * current failure when nothing was folded.\n */\n fail<I extends Input>(state: State<I>): Fail {\n const failure = this.failure\n if (failure === undefined) return state.failWith(\"Backtrack\", state.failure)\n const tie1 = this.tie1\n return tie1 === undefined ? state.failWith(\"Backtrack\", failure) : state.failTies(failure, tie1, this.tie2)\n }\n\n /**\n * Records the folded expectations as a hint when the folded failure lies\n * where `state` stopped (an attempt that fails without consuming input).\n */\n hint<I extends Input>(state: State<I>): void {\n const failure = this.failure\n if (failure === undefined || failure.offset !== state.pos) return\n let expected = failure.expected\n if (this.tie1 !== undefined) expected = mergeExpected(expected, this.tie1.expected)\n if (this.tie2 !== undefined) expected = mergeExpected(expected, this.tie2.expected)\n state.setHint(failure.offset, expected)\n }\n}\n"],"mappings":";;;AAkBA,IAAa,eAAb,MAA0B;;CAExB,UAA+B,KAAA;;CAE/B,OAA4B,KAAA;;CAE5B,OAA4B,KAAA;;CAG5B,QAAc;EACZ,KAAK,UAAU,KAAA;EACf,KAAK,OAAO,KAAA;EACZ,KAAK,OAAO,KAAA;CACd;;;;;CAMA,IAAqB,OAAuB;EAC1C,MAAM,OAAO,MAAM;EACnB,MAAM,UAAU,KAAK;EACrB,IAAI,YAAY,KAAA,KAAa,KAAK,SAAS,QAAQ,QAAQ;GACzD,KAAK,UAAU;GACf,KAAK,OAAO,MAAM;GAClB,KAAK,OAAO,MAAM;GAClB;EACF;EACA,IAAI,KAAK,SAAS,QAAQ,QAAQ;EAClC,MAAM,UAAU,MAAM;EACtB,MAAM,OAAO,KAAK;EAClB,IAAI,SAAS,KAAA,GAAW,KAAK,OAAO;OAC/B,IAAI,KAAK,SAAS,KAAA,GAAW,KAAK,OAAO;OACzC;GAEH,KAAK,UAAU,kBAAkB,SAAS,MAAM,cAAc,QAAQ,UAAU,KAAK,QAAQ,CAAC;GAC9F,KAAK,OAAO,KAAK;GACjB,KAAK,OAAO;EACd;CACF;;;;;CAMA,KAAsB,OAAuB;EAC3C,MAAM,UAAU,KAAK;EACrB,IAAI,YAAY,KAAA,GAAW,OAAO,MAAM,SAAS,aAAa,MAAM,OAAO;EAC3E,MAAM,OAAO,KAAK;EAClB,OAAO,SAAS,KAAA,IAAY,MAAM,SAAS,aAAa,OAAO,IAAI,MAAM,SAAS,SAAS,MAAM,KAAK,IAAI;CAC5G;;;;;CAMA,KAAsB,OAAuB;EAC3C,MAAM,UAAU,KAAK;EACrB,IAAI,YAAY,KAAA,KAAa,QAAQ,WAAW,MAAM,KAAK;EAC3D,IAAI,WAAW,QAAQ;EACvB,IAAI,KAAK,SAAS,KAAA,GAAW,WAAW,cAAc,UAAU,KAAK,KAAK,QAAQ;EAClF,IAAI,KAAK,SAAS,KAAA,GAAW,WAAW,cAAc,UAAU,KAAK,KAAK,QAAQ;EAClF,MAAM,QAAQ,QAAQ,QAAQ,QAAQ;CACxC;AACF"}
@@ -1,29 +1,22 @@
1
- import type { Input, State } from "../Input.js";
1
+ import { Input, State } from "../Input.js";
2
+ //#region src/internal/tokens.d.ts
2
3
  /** A compiled token set. */
3
4
  export interface Matcher {
4
- /** Tests a code point (string input) or a byte (Uint8Array input). */
5
- readonly code: (code: number) => boolean;
6
- /** Tests an element of an array input. */
7
- readonly token: (token: unknown) => boolean;
8
- /** Human readable description, used in error messages. */
9
- readonly description: string;
5
+ /** Tests a code point (string input) or a byte (Uint8Array input). */
6
+ readonly code: (code: number) => boolean;
7
+ /** Tests an element of an array input. */
8
+ readonly token: (token: unknown) => boolean;
9
+ /** Human readable description, used in error messages. */
10
+ readonly description: string;
10
11
  }
11
12
  /** @internal */
12
13
  export interface TokenRangeLike {
13
- readonly _tag: "TokenRange";
14
- readonly from: string | number;
15
- readonly to: string | number;
14
+ readonly _tag: "TokenRange";
15
+ readonly from: string | number;
16
+ readonly to: string | number;
16
17
  }
17
18
  /** @internal */
18
19
  export declare const describeChar: (s: string) => string;
19
- /** Renders bytes as a Rust-style byte string literal: b"GET\r\n". */
20
- export declare const describeBytes: (bytes: Uint8Array) => string;
21
- /**
22
- * Marks a predicate over characters that also accepts a code point (a
23
- * number), so string inputs can call it without allocating a string per
24
- * character.
25
- */
26
- export declare const CodePointPredicate: unique symbol;
27
20
  /**
28
21
  * The code points accepted by a predicate, as sorted, disjoint, inclusive
29
22
  * ranges, when they are known. The compiler turns such predicates into
@@ -37,7 +30,8 @@ export declare const PredicateRanges: unique symbol;
37
30
  export declare const codePointPredicate: <F extends (c: never) => boolean>(name: string, f: F, ranges?: ReadonlyArray<readonly [number, number]>) => F;
38
31
  /**
39
32
  * Compiles a token set. Predicates for string inputs receive the token as a
40
- * string, so they are wrapped here.
33
+ * string, so they are wrapped here; `charOf` avoids `String.fromCodePoint`,
34
+ * which is several times slower, for the Basic Multilingual Plane.
41
35
  */
42
36
  export declare const compile: (set: unknown, kind?: "string" | "code") => Matcher;
43
37
  /**
@@ -45,10 +39,12 @@ export declare const compile: (set: unknown, kind?: "string" | "code") => Matche
45
39
  * token as a string, byte predicates receive numbers.
46
40
  */
47
41
  export interface AnyMatcher {
48
- readonly forString: Matcher;
49
- readonly forCode: Matcher;
50
- readonly description: string;
42
+ readonly forString: Matcher;
43
+ readonly forCode: Matcher;
44
+ readonly description: string;
51
45
  }
46
+ /** Describes a literal for error messages: `"abc"`, `b"abc"` or `["a", 1]`. */
47
+ export declare const describeLiteral: (lit: Input) => string;
52
48
  export declare const compileAny: (set: unknown) => AnyMatcher;
53
49
  /**
54
50
  * Whether the string token at `i` is a high surrogate at the very end of a
@@ -56,8 +52,6 @@ export declare const compileAny: (set: unknown) => AnyMatcher;
56
52
  * not arrived yet.
57
53
  */
58
54
  export declare const splitSurrogate: (state: State<Input>, i: number) => boolean;
59
- /** Reads the code point at `i` of a string. */
60
- export declare const codePointAt: (s: string, i: number) => number;
61
55
  /**
62
56
  * Tests the token at the current position. Returns the token (as the input's
63
57
  * token type) and advances, or returns `NoMatch`/`End`.
@@ -71,18 +65,18 @@ export declare const nextIf: (state: State<Input>, m: AnyMatcher, negate: boolea
71
65
  * whether the end of input was hit before `max` tokens.
72
66
  */
73
67
  export declare const scan: (state: State<Input>, m: AnyMatcher, negate: boolean, max: number) => {
74
- readonly offset: number;
75
- readonly count: number;
76
- readonly hitEnd: boolean;
68
+ readonly offset: number;
69
+ readonly count: number;
70
+ readonly hitEnd: boolean;
77
71
  };
78
72
  /** Advances `n` tokens from `start`, returning the offset reached and the count. */
79
73
  export declare const advance: (state: State<Input>, start: number, n: number) => {
80
- offset: number;
81
- count: number;
74
+ offset: number;
75
+ count: number;
82
76
  };
83
77
  /** Counts tokens between two offsets. */
84
78
  export declare const countTokens: (state: State<Input>, start: number, end: number) => number;
85
- /** Finds `needle` in the input at or after `from`; returns -1 if absent. */
79
+ /** Finds `needle` within `[from, state.end)`; returns -1 if absent. */
86
80
  export declare const indexOf: (state: State<Input>, needle: Input, from: number) => number;
87
81
  /**
88
82
  * Compares the input at the current position with a literal. Returns the
@@ -90,4 +84,5 @@ export declare const indexOf: (state: State<Input>, needle: Input, from: number)
90
84
  * -1 on mismatch, or -2 when the input ends while matching a prefix.
91
85
  */
92
86
  export declare const matchLiteral: (state: State<Input>, lit: Input, caseless: boolean) => number;
87
+ //#endregion
93
88
  //# sourceMappingURL=tokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/internal/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.d.ts","names":[],"sources":["../../src/internal/tokens.ts"],"mappings":";;;iBAOiB;;WAEN,OAAO;;WAEP,QAAQ;;WAER;;;iBAIM;WACN;WACA;WACA;;;qBAQE,eAAgB;;;;;;qBA2FhB;;;;;qBAMA,qBAAsB,WAAW,sBAC5C,cACA,GAAG,GACH,SAAS,6CACR;;;;;;qBAYU,UAAW,cAAc,6BAAmC;;;;;iBAgCxD;WACN,WAAW;WACX,SAAS;WACT;;;qBAuBE,kBAAmB,KAAK;qBASxB,aAAc,iBAAe;;;;;;qBAmB7B,iBAAkB,OAAO,MAAM,QAAQ;;;;;qBAoBvC;qBACA;qBAEA,SAAU,OAAO,MAAM,QAAQ,GAAG,YAAY;;;;;;qBAiC9C,OACX,OAAO,MAAM,QACb,GAAG,YACH,iBACA;WACY;WAAyB;WAAwB;;;qBAkDlD,UAAW,OAAO,MAAM,QAAQ,eAAe;EAAc;EAAgB;;;qBAkB7E,cAAe,OAAO,MAAM,QAAQ,eAAe;;qBAanD,UAAW,OAAO,MAAM,QAAQ,QAAQ,OAAO;;;;;;qBAwC/C,eAAgB,OAAO,MAAM,QAAQ,KAAK,OAAO"}