ranty-js 1.0.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 (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/dist/core/binding.d.ts +34 -0
  4. package/dist/core/binding.d.ts.map +1 -0
  5. package/dist/core/compiler/index.d.ts +5 -0
  6. package/dist/core/compiler/index.d.ts.map +1 -0
  7. package/dist/core/compiler/lexer.d.ts +30 -0
  8. package/dist/core/compiler/lexer.d.ts.map +1 -0
  9. package/dist/core/compiler/message.d.ts +4 -0
  10. package/dist/core/compiler/message.d.ts.map +1 -0
  11. package/dist/core/compiler/parser.d.ts +6 -0
  12. package/dist/core/compiler/parser.d.ts.map +1 -0
  13. package/dist/core/compiler/reader.d.ts +12 -0
  14. package/dist/core/compiler/reader.d.ts.map +1 -0
  15. package/dist/core/compiler/token-reader.d.ts +17 -0
  16. package/dist/core/compiler/token-reader.d.ts.map +1 -0
  17. package/dist/core/constants.d.ts +8 -0
  18. package/dist/core/constants.d.ts.map +1 -0
  19. package/dist/core/data-source.d.ts +6 -0
  20. package/dist/core/data-source.d.ts.map +1 -0
  21. package/dist/core/errors.d.ts +56 -0
  22. package/dist/core/errors.d.ts.map +1 -0
  23. package/dist/core/format-state.d.ts +28 -0
  24. package/dist/core/format-state.d.ts.map +1 -0
  25. package/dist/core/int64.d.ts +9 -0
  26. package/dist/core/int64.d.ts.map +1 -0
  27. package/dist/core/lang.d.ts +142 -0
  28. package/dist/core/lang.d.ts.map +1 -0
  29. package/dist/core/map-proto.d.ts +11 -0
  30. package/dist/core/map-proto.d.ts.map +1 -0
  31. package/dist/core/messages.d.ts +28 -0
  32. package/dist/core/messages.d.ts.map +1 -0
  33. package/dist/core/module-resolver.d.ts +22 -0
  34. package/dist/core/module-resolver.d.ts.map +1 -0
  35. package/dist/core/program.d.ts +14 -0
  36. package/dist/core/program.d.ts.map +1 -0
  37. package/dist/core/ranty.d.ts +70 -0
  38. package/dist/core/ranty.d.ts.map +1 -0
  39. package/dist/core/rng.d.ts +17 -0
  40. package/dist/core/rng.d.ts.map +1 -0
  41. package/dist/core/runtime/vm.d.ts +113 -0
  42. package/dist/core/runtime/vm.d.ts.map +1 -0
  43. package/dist/core/stdlib/assertion.d.ts +3 -0
  44. package/dist/core/stdlib/assertion.d.ts.map +1 -0
  45. package/dist/core/stdlib/block.d.ts +3 -0
  46. package/dist/core/stdlib/block.d.ts.map +1 -0
  47. package/dist/core/stdlib/boolean.d.ts +3 -0
  48. package/dist/core/stdlib/boolean.d.ts.map +1 -0
  49. package/dist/core/stdlib/collections.d.ts +3 -0
  50. package/dist/core/stdlib/collections.d.ts.map +1 -0
  51. package/dist/core/stdlib/compare.d.ts +3 -0
  52. package/dist/core/stdlib/compare.d.ts.map +1 -0
  53. package/dist/core/stdlib/convert.d.ts +3 -0
  54. package/dist/core/stdlib/convert.d.ts.map +1 -0
  55. package/dist/core/stdlib/format.d.ts +3 -0
  56. package/dist/core/stdlib/format.d.ts.map +1 -0
  57. package/dist/core/stdlib/general.d.ts +3 -0
  58. package/dist/core/stdlib/general.d.ts.map +1 -0
  59. package/dist/core/stdlib/generate.d.ts +3 -0
  60. package/dist/core/stdlib/generate.d.ts.map +1 -0
  61. package/dist/core/stdlib/index.d.ts +3 -0
  62. package/dist/core/stdlib/index.d.ts.map +1 -0
  63. package/dist/core/stdlib/math.d.ts +3 -0
  64. package/dist/core/stdlib/math.d.ts.map +1 -0
  65. package/dist/core/stdlib/proto.d.ts +3 -0
  66. package/dist/core/stdlib/proto.d.ts.map +1 -0
  67. package/dist/core/stdlib/shared.d.ts +24 -0
  68. package/dist/core/stdlib/shared.d.ts.map +1 -0
  69. package/dist/core/stdlib/strings.d.ts +3 -0
  70. package/dist/core/stdlib/strings.d.ts.map +1 -0
  71. package/dist/core/stdlib/verify.d.ts +3 -0
  72. package/dist/core/stdlib/verify.d.ts.map +1 -0
  73. package/dist/core/util.d.ts +9 -0
  74. package/dist/core/util.d.ts.map +1 -0
  75. package/dist/core/values.d.ts +47 -0
  76. package/dist/core/values.d.ts.map +1 -0
  77. package/dist/core/virtual-module-resolver.d.ts +14 -0
  78. package/dist/core/virtual-module-resolver.d.ts.map +1 -0
  79. package/dist/hosts/browser/index.d.ts +3 -0
  80. package/dist/hosts/browser/index.d.ts.map +1 -0
  81. package/dist/hosts/node/cli-utils.d.ts +18 -0
  82. package/dist/hosts/node/cli-utils.d.ts.map +1 -0
  83. package/dist/hosts/node/cli.d.ts +2 -0
  84. package/dist/hosts/node/cli.d.ts.map +1 -0
  85. package/dist/hosts/node/dev-repl.d.ts +2 -0
  86. package/dist/hosts/node/dev-repl.d.ts.map +1 -0
  87. package/dist/index.d.ts +15 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/ranty.js +9268 -0
  90. package/dist/ranty.js.map +1 -0
  91. package/docs/README.md +24 -0
  92. package/docs/context-system/README.md +85 -0
  93. package/docs/repo-workflow/README.md +40 -0
  94. package/package.json +90 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranty.js","sources":["../src/core/errors.ts","../src/core/program.ts","../src/core/values.ts","../src/core/util.ts","../src/core/messages.ts","../src/core/compiler/message.ts","../src/core/compiler/reader.ts","../src/core/compiler/lexer.ts","../src/core/compiler/token-reader.ts","../src/core/compiler/parser.ts","../src/core/compiler/index.ts","../src/core/virtual-module-resolver.ts","../src/hosts/browser/index.ts","../src/core/constants.ts","../src/core/int64.ts","../src/core/module-resolver.ts","../src/core/binding.ts","../src/core/format-state.ts","../src/core/rng.ts","../src/core/map-proto.ts","../src/core/stdlib/shared.ts","../src/core/runtime/vm.ts","../src/core/stdlib/assertion.ts","../src/core/stdlib/block.ts","../src/core/stdlib/boolean.ts","../src/core/stdlib/collections.ts","../src/core/stdlib/compare.ts","../src/core/stdlib/convert.ts","../src/core/stdlib/format.ts","../src/core/stdlib/general.ts","../src/core/stdlib/generate.ts","../src/core/stdlib/math.ts","../src/core/stdlib/proto.ts","../src/core/stdlib/strings.ts","../src/core/stdlib/verify.ts","../src/core/stdlib/index.ts","../src/core/ranty.ts","../src/hosts/node/cli-utils.ts","../src/hosts/node/cli.ts","../src/index.ts"],"sourcesContent":["import type { CompilerMessage } from \"./messages\";\n\nexport type CompilerErrorKind = \"syntax\" | \"io\";\n\nexport class CompilerError extends Error {\n readonly kind: CompilerErrorKind;\n\n constructor(kind: CompilerErrorKind, message?: string) {\n super(message ?? (kind === \"syntax\" ? \"syntax error\" : \"I/O error\"));\n this.name = \"CompilerError\";\n this.kind = kind;\n }\n}\n\nexport type ModuleResolveErrorReason =\n | { readonly kind: \"not_found\" }\n | {\n readonly kind: \"compile_failed\";\n readonly messages: readonly CompilerMessage[];\n }\n | { readonly kind: \"file_io_error\"; readonly error: unknown };\n\nexport class ModuleResolveError extends Error {\n readonly moduleName: string;\n readonly reason: ModuleResolveErrorReason;\n\n constructor(moduleName: string, reason: ModuleResolveErrorReason) {\n const message =\n reason.kind === \"not_found\"\n ? `module '${moduleName}' not found`\n : reason.kind === \"compile_failed\"\n ? `module '${moduleName}' failed to compile`\n : `module '${moduleName}' failed due to file I/O`;\n super(message);\n this.name = \"ModuleResolveError\";\n this.moduleName = moduleName;\n this.reason = reason;\n }\n}\n\nexport class ModuleLoadError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ModuleLoadError\";\n }\n}\n\nexport class DataSourceError extends Error {\n readonly type: \"user\" | \"internal\";\n\n constructor(type: \"user\" | \"internal\", message: string) {\n super(`${type === \"user\" ? \"user error\" : \"internal\"}: ${message}`);\n this.name = \"DataSourceError\";\n this.type = type;\n }\n}\n\nexport enum RuntimeErrorType {\n StackOverflow = \"STACK_OVERFLOW_ERROR\",\n StackUnderflow = \"STACK_UNDERFLOW_ERROR\",\n InvalidAccess = \"INVALID_ACCESS_ERROR\",\n InvalidOperation = \"INVALID_OP_ERROR\",\n LazyBindingCycle = \"LAZY_BINDING_CYCLE_ERROR\",\n InternalError = \"INTERNAL_ERROR\",\n ArgumentMismatch = \"ARG_MISMATCH_ERROR\",\n ArgumentError = \"ARG_ERROR\",\n CannotInvokeValue = \"INVOKE_ERROR\",\n AssertError = \"ASSERT_ERROR\",\n TypeError = \"TYPE_ERROR\",\n ValueError = \"VALUE_ERROR\",\n IndexError = \"INDEX_ERROR\",\n KeyError = \"KEY_ERROR\",\n SliceError = \"SLICE_ERROR\",\n SelectorError = \"SELECTOR_ERROR\",\n ModuleError = \"MODULE_ERROR\",\n UserError = \"USER_ERROR\",\n ControlFlowError = \"CONTROL_FLOW_ERROR\",\n DataSourceError = \"DATA_SOURCE_ERROR\"\n}\n\nexport class RuntimeError extends Error {\n readonly errorType: RuntimeErrorType;\n readonly description: string | undefined;\n readonly stackTrace: string | undefined;\n\n constructor(\n errorType: RuntimeErrorType,\n description?: string,\n stackTrace?: string\n ) {\n super(`[${errorType}] ${description ?? errorType}`);\n this.name = \"RuntimeError\";\n this.errorType = errorType;\n this.description = description;\n this.stackTrace = stackTrace;\n }\n}\n","import type { Sequence } from \"./lang\";\n\nexport interface RantyProgramInfo {\n readonly path?: string;\n readonly name?: string;\n}\n\nexport class RantyProgram {\n readonly source: string;\n readonly info: RantyProgramInfo;\n readonly root: Sequence;\n\n constructor(source: string, info: RantyProgramInfo = {}, root: Sequence) {\n this.source = source;\n this.info = info;\n this.root = root;\n }\n\n name(): string | undefined {\n return this.info.name;\n }\n\n path(): string | undefined {\n return this.info.path;\n }\n}\n","import type { RantyInt } from \"./int64\";\n\nconst COLLECTION_KIND = Symbol(\"ranty-js.collection.kind\");\n\nexport type RantyCollectionKind = \"list\" | \"tuple\";\n\nexport interface RantyRange {\n readonly type: \"range\";\n readonly start: RantyInt | bigint | number;\n readonly end: RantyInt | bigint | number;\n readonly step?: RantyInt | bigint | number;\n}\n\nexport interface RantySelectorValue {\n readonly type: \"selector\";\n readonly mode: string;\n index: number;\n direction: 1 | -1;\n frozen: boolean;\n initialized: boolean;\n readonly matchValue?: RantyValue;\n}\n\nexport interface RantyAttributeValue {\n readonly type: \"attribute\";\n readonly name:\n | \"rep\"\n | \"sep\"\n | \"sel\"\n | \"mut\"\n | \"reset\"\n | \"if\"\n | \"elseif\"\n | \"else\";\n readonly value: RantyValue;\n}\n\nexport interface RantyTemporalValue {\n readonly type: \"temporal\";\n readonly values: readonly RantyValue[];\n}\n\ntype TaggedCollection = {\n readonly [COLLECTION_KIND]?: RantyCollectionKind;\n};\n\nexport type RantyMapValue = Map<string, RantyValue>;\nexport type RantyTupleValue = readonly RantyValue[] & TaggedCollection;\nexport type RantyListValue = RantyValue[] & TaggedCollection;\nexport type RantyCallable = (...args: readonly RantyValue[]) => RantyValue;\nexport type RantyScalar = string | number | bigint | boolean | null;\nexport type RantyValue =\n | RantyScalar\n | RantyRange\n | RantySelectorValue\n | RantyAttributeValue\n | RantyTemporalValue\n | RantyMapValue\n | RantyTupleValue\n | RantyListValue\n | RantyCallable;\n\nfunction tagCollection<T extends RantyValue[] | readonly RantyValue[]>(\n values: T,\n kind: RantyCollectionKind\n): T {\n Object.defineProperty(values, COLLECTION_KIND, {\n value: kind,\n enumerable: false,\n configurable: true\n });\n return values;\n}\n\nexport function makeListValue(\n values: readonly RantyValue[] = []\n): RantyListValue {\n return tagCollection([...values], \"list\") as RantyListValue;\n}\n\nexport function makeTupleValue(\n values: readonly RantyValue[] = []\n): RantyTupleValue {\n return tagCollection([...values], \"tuple\") as RantyTupleValue;\n}\n\nexport function getCollectionKind(value: unknown): RantyCollectionKind | null {\n if (!Array.isArray(value)) {\n return null;\n }\n\n return (value as TaggedCollection)[COLLECTION_KIND] === \"tuple\"\n ? \"tuple\"\n : \"list\";\n}\n\nexport function isTupleValue(value: unknown): value is RantyTupleValue {\n return getCollectionKind(value) === \"tuple\";\n}\n\nexport function isListValue(value: unknown): value is RantyListValue {\n return getCollectionKind(value) === \"list\";\n}\n\nexport function cloneCollectionValue(\n value: readonly RantyValue[]\n): RantyTupleValue | RantyListValue {\n return getCollectionKind(value) === \"tuple\"\n ? makeTupleValue(value)\n : makeListValue(value);\n}\n\nexport function makeCollectionValue(\n kind: RantyCollectionKind,\n values: readonly RantyValue[] = []\n): RantyTupleValue | RantyListValue {\n return kind === \"tuple\" ? makeTupleValue(values) : makeListValue(values);\n}\n\nexport function makeTemporalValue(\n values: readonly RantyValue[] = []\n): RantyTemporalValue {\n return {\n type: \"temporal\",\n values: [...values]\n };\n}\n\nexport function isTemporalValue(value: unknown): value is RantyTemporalValue {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"temporal\"\n );\n}\n","import type * as NodeFs from \"node:fs\";\nimport type * as NodePath from \"node:path\";\n\nimport { getCollectionKind } from \"./values\";\n\nexport function runtimeRequire<T>(id: string): T | null {\n const builtinLoader = (\n globalThis as {\n process?: { getBuiltinModule?: (moduleId: string) => unknown };\n }\n ).process?.getBuiltinModule;\n\n if (typeof builtinLoader === \"function\") {\n const builtin = builtinLoader(id.startsWith(\"node:\") ? id.slice(5) : id);\n if (builtin != null) {\n return builtin as T;\n }\n }\n\n const candidate = Function(\n \"return typeof require !== 'undefined' ? require : undefined;\"\n )() as ((moduleId: string) => unknown) | undefined;\n\n if (!candidate) {\n return null;\n }\n\n return candidate(id) as T;\n}\n\nexport function loadNodeFs(): {\n readonly fs: typeof NodeFs;\n readonly path: typeof NodePath;\n} | null {\n const fs = runtimeRequire<typeof NodeFs>(\"node:fs\");\n const path = runtimeRequire<typeof NodePath>(\"node:path\");\n\n if (!fs || !path) {\n return null;\n }\n\n return { fs, path };\n}\n\nexport function renderRantyValue(value: unknown): string {\n if (value == null) {\n return \"\";\n }\n\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"bigint\") {\n return String(value);\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"@true\" : \"@false\";\n }\n\n if (typeof value === \"function\") {\n return \"[function(...)]\";\n }\n\n if (Array.isArray(value)) {\n const kind = getCollectionKind(value);\n const rendered = value.map((item) => renderRantyValue(item)).join(\"; \");\n if (kind === \"tuple\") {\n if (value.length === 0) {\n return \"()\";\n }\n if (value.length === 1) {\n return `(${rendered};)`;\n }\n return `(${rendered})`;\n }\n return value.length === 0 ? \"(:)\" : `(: ${rendered})`;\n }\n\n if (value instanceof Map) {\n const parts: string[] = [];\n for (const [key, item] of value.entries()) {\n parts.push(`${key} = ${renderRantyValue(item)}`);\n }\n return parts.length > 0 ? `(:: ${parts.join(\"; \")})` : \"(::)\";\n }\n\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n typeof value.type === \"string\"\n ) {\n switch (value.type) {\n case \"attribute\":\n return \"\";\n case \"selector\":\n return `[selector:${String((value as { mode?: unknown }).mode ?? \"\")}]`;\n case \"range\": {\n const range = value as {\n start?: unknown;\n end?: unknown;\n step?: unknown;\n };\n const base = `${String(range.start ?? \"\")}..${String(range.end ?? \"\")}`;\n return range.step === undefined\n ? base\n : `${base}:${String(range.step)}`;\n }\n case \"temporal\":\n return ((value as { values?: unknown[] }).values ?? [])\n .map((item) => renderRantyValue(item))\n .join(\"\");\n default:\n break;\n }\n }\n\n return String(value);\n}\n","export type Severity = \"warning\" | \"error\";\n\nexport interface CompilerSpan {\n readonly start: number;\n readonly end: number;\n}\n\nexport interface CompilerPosition {\n readonly span: CompilerSpan;\n}\n\nexport class CompilerMessage {\n readonly code: string;\n readonly message: string;\n readonly severity: Severity;\n readonly inlineMessage: string | undefined;\n readonly pos: CompilerPosition | undefined;\n\n constructor(options: {\n code: string;\n message: string;\n severity: Severity;\n inlineMessage?: string;\n pos?: CompilerPosition;\n }) {\n this.code = options.code;\n this.message = options.message;\n this.severity = options.severity;\n this.inlineMessage = options.inlineMessage;\n this.pos = options.pos;\n }\n\n isWarning(): boolean {\n return this.severity === \"warning\";\n }\n\n isError(): boolean {\n return this.severity === \"error\";\n }\n}\n\nexport interface Reporter {\n report(message: CompilerMessage): void;\n}\n","import { CompilerMessage, type Reporter, type Severity } from \"../messages\";\n\nexport function reportCompilerMessage(\n reporter: Reporter,\n code: string,\n message: string,\n severity: Severity,\n start: number,\n end: number,\n inlineMessage?: string\n): void {\n const payload = {\n code,\n message,\n severity,\n pos: {\n span: {\n start,\n end\n }\n }\n } as const;\n\n reporter.report(\n new CompilerMessage({\n ...payload,\n ...(inlineMessage === undefined ? {} : { inlineMessage })\n })\n );\n}\n\nexport function nullReporter(): Reporter {\n return {\n report() {}\n };\n}\n","export class SourceReader {\n readonly source: string;\n #index = 0;\n\n constructor(source: string) {\n this.source = source;\n }\n\n index(): number {\n return this.#index;\n }\n\n setIndex(index: number): void {\n this.#index = index;\n }\n\n isEof(): boolean {\n return this.#index >= this.source.length;\n }\n\n peek(offset = 0): string | undefined {\n return this.source[this.#index + offset];\n }\n\n next(): string | undefined {\n const char = this.peek();\n if (char != null) {\n this.#index += 1;\n }\n return char;\n }\n\n consumeWhile(predicate: (char: string) => boolean): string {\n const start = this.#index;\n while (!this.isEof()) {\n const char = this.peek();\n if (char == null || !predicate(char)) {\n break;\n }\n this.#index += 1;\n }\n return this.source.slice(start, this.#index);\n }\n}\n","import { CompilerError } from \"../errors\";\nimport type { Reporter } from \"../messages\";\nimport { reportCompilerMessage } from \"./message\";\nimport { SourceReader } from \"./reader\";\n\ninterface TokenBase {\n readonly start: number;\n readonly end: number;\n}\n\nexport type RantyToken =\n | (TokenBase & {\n readonly type: \"whitespace\";\n readonly value: string;\n })\n | (TokenBase & {\n readonly type: \"comment\";\n readonly value: string;\n })\n | (TokenBase & {\n readonly type: \"string\";\n readonly value: string;\n readonly raw: string;\n })\n | (TokenBase & {\n readonly type: \"number\";\n readonly value: string;\n })\n | (TokenBase & {\n readonly type: \"identifier\";\n readonly value: string;\n })\n | (TokenBase & {\n readonly type: \"symbol\";\n readonly value: string;\n })\n | (TokenBase & {\n readonly type: \"eof\";\n });\n\nconst MULTI_CHAR_SYMBOLS = [\n \"**=\",\n \"|>\",\n \"..\",\n \"+=\",\n \"-=\",\n \"*=\",\n \"/=\",\n \"%=\",\n \"&=\",\n \"|=\",\n \"^=\",\n \"?=\",\n \"**\"\n] as const;\n\nfunction syntaxError(\n reporter: Reporter,\n message: string,\n start: number,\n end: number,\n inlineMessage?: string\n): never {\n reportCompilerMessage(\n reporter,\n \"SYNTAX_ERROR\",\n message,\n \"error\",\n start,\n end,\n inlineMessage\n );\n throw new CompilerError(\"syntax\", message);\n}\n\nfunction decodeEscape(char: string): string {\n switch (char) {\n case '\"':\n return '\"';\n case \"\\\\\":\n return \"\\\\\";\n case \"n\":\n return \"\\n\";\n case \"r\":\n return \"\\r\";\n case \"t\":\n return \"\\t\";\n case \"s\":\n return \" \";\n case \"[\":\n return \"[\";\n case \"]\":\n return \"]\";\n default:\n return char;\n }\n}\n\nfunction canStartNumber(reader: SourceReader): boolean {\n const char = reader.peek();\n const next = reader.peek(1);\n\n if (char == null) {\n return false;\n }\n\n if (/\\d/.test(char)) {\n return true;\n }\n\n if ((char === \"+\" || char === \"-\") && next != null) {\n return /\\d/.test(next) || (next === \".\" && /\\d/.test(reader.peek(2) ?? \"\"));\n }\n\n if (char === \".\") {\n return /\\d/.test(next ?? \"\");\n }\n\n return false;\n}\n\nexport function lex(source: string, reporter: Reporter): RantyToken[] {\n const reader = new SourceReader(source);\n const tokens: RantyToken[] = [];\n\n while (!reader.isEof()) {\n const start = reader.index();\n const char = reader.peek();\n\n if (char == null) {\n break;\n }\n\n if (/\\s/u.test(char)) {\n const value = reader.consumeWhile((next) => /\\s/u.test(next));\n tokens.push({\n type: \"whitespace\",\n value,\n start,\n end: reader.index()\n });\n continue;\n }\n\n if (char === \"#\") {\n const value = reader.consumeWhile(\n (next) => next !== \"\\n\" && next !== \"\\r\"\n );\n tokens.push({\n type: \"comment\",\n value,\n start,\n end: reader.index()\n });\n continue;\n }\n\n if (char === '\"') {\n reader.next();\n let value = \"\";\n\n while (!reader.isEof()) {\n const next = reader.next();\n if (next == null) {\n break;\n }\n\n if (next === '\"') {\n tokens.push({\n type: \"string\",\n value,\n raw: source.slice(start, reader.index()),\n start,\n end: reader.index()\n });\n value = \"\";\n break;\n }\n\n if (next === \"\\\\\") {\n const escaped = reader.next();\n if (escaped == null) {\n syntaxError(\n reporter,\n \"unterminated string literal\",\n start,\n reader.index(),\n \"string\"\n );\n }\n value += decodeEscape(escaped);\n continue;\n }\n\n value += next;\n }\n\n if (value !== \"\") {\n const previous = tokens[tokens.length - 1];\n if (previous?.type !== \"string\" || previous.start !== start) {\n syntaxError(\n reporter,\n \"unterminated string literal\",\n start,\n reader.index(),\n \"string\"\n );\n }\n }\n\n continue;\n }\n\n if (canStartNumber(reader)) {\n if (char === \"+\" || char === \"-\") {\n reader.next();\n }\n\n if (reader.peek() === \".\") {\n reader.next();\n }\n\n reader.consumeWhile((next) => /\\d/u.test(next));\n if (reader.peek() === \".\" && /\\d/u.test(reader.peek(1) ?? \"\")) {\n reader.next();\n reader.consumeWhile((next) => /\\d/u.test(next));\n }\n\n tokens.push({\n type: \"number\",\n value: source.slice(start, reader.index()),\n start,\n end: reader.index()\n });\n continue;\n }\n\n const multiChar = MULTI_CHAR_SYMBOLS.find((symbol) =>\n source.startsWith(symbol, start)\n );\n if (multiChar) {\n reader.setIndex(start + multiChar.length);\n tokens.push({\n type: \"symbol\",\n value: multiChar,\n start,\n end: reader.index()\n });\n continue;\n }\n\n if (/[A-Za-z0-9_]/u.test(char)) {\n const value = reader.consumeWhile((next) => /[A-Za-z0-9_-]/u.test(next));\n tokens.push({\n type: \"identifier\",\n value,\n start,\n end: reader.index()\n });\n continue;\n }\n\n reader.next();\n tokens.push({\n type: \"symbol\",\n value: char,\n start,\n end: reader.index()\n });\n }\n\n tokens.push({\n type: \"eof\",\n start: source.length,\n end: source.length\n });\n\n return tokens;\n}\n","import type { RantyToken } from \"./lexer\";\n\nfunction isTrivia(token: RantyToken | undefined): boolean {\n return token?.type === \"whitespace\" || token?.type === \"comment\";\n}\n\nexport class TokenReader {\n readonly source: string;\n readonly tokens: readonly RantyToken[];\n #index = 0;\n\n constructor(tokens: readonly RantyToken[], source: string) {\n this.tokens = tokens;\n this.source = source;\n }\n\n mark(): number {\n return this.#index;\n }\n\n reset(mark: number): void {\n this.#index = mark;\n }\n\n index(): number {\n return this.peekRaw()?.start ?? this.source.length;\n }\n\n isEof(): boolean {\n return this.peekRaw()?.type === \"eof\";\n }\n\n peek(offset = 0): RantyToken | undefined {\n const index = this.#index + offset;\n return index >= 0 && index < this.tokens.length\n ? this.tokens[index]\n : undefined;\n }\n\n peekRaw(offset = 0): RantyToken | undefined {\n return this.peek(offset);\n }\n\n next(): RantyToken | undefined {\n const token = this.peekRaw();\n if (token) {\n this.#index += 1;\n }\n return token;\n }\n\n consumeTrivia(): void {\n while (isTrivia(this.peekRaw())) {\n this.#index += 1;\n }\n }\n\n currentToken(): RantyToken | undefined {\n return this.peekRaw();\n }\n}\n","import { CompilerError } from \"../errors\";\nimport type {\n AnglePathSegment,\n AngleNode,\n AngleSetStatement,\n AngleStatement,\n BinaryOpNode,\n BlockEditDirective,\n BlockElementNode,\n BlockNode,\n FunctionDefNode,\n FunctionParam,\n InvocationNode,\n ListLiteralNode,\n MapLiteralEntryNode,\n MapLiteralNode,\n NumberLiteralNode,\n PipeValueNode,\n Sequence,\n SequenceNode,\n SpreadNode,\n StringLiteralNode,\n TextNode,\n TupleLiteralNode,\n UnaryOpNode\n} from \"../lang\";\nimport type { Reporter } from \"../messages\";\nimport { reportCompilerMessage } from \"./message\";\nimport { lex, type RantyToken } from \"./lexer\";\nimport { TokenReader } from \"./token-reader\";\n\nconst IDENTIFIER_PATTERN = /^[A-Za-z0-9_-]+$/;\nconst PATH_PATTERN = /^[A-Za-z0-9_-]+(?:\\/[A-Za-z0-9_-]+)*$/;\nconst INTEGER_PATTERN = /^[+-]?\\d+$/;\nconst MUTABLE_ATTRIBUTE_NAMES = new Set([\"rep\", \"sep\", \"sel\", \"mut\"]);\nconst READ_ONLY_ATTRIBUTE_NAMES = new Set([\"step\", \"total\"]);\nconst VALID_KEYWORD_NAMES = new Set([\n \"require\",\n \"true\",\n \"false\",\n \"not\",\n \"neg\",\n \"eq\",\n \"neq\",\n \"lt\",\n \"le\",\n \"gt\",\n \"ge\",\n \"step\",\n \"total\",\n \"rep\",\n \"sep\",\n \"sel\",\n \"mut\",\n \"if\",\n \"elseif\",\n \"else\",\n \"return\",\n \"continue\",\n \"break\",\n \"on\",\n \"weight\"\n]);\n\ntype OperatorTokenName =\n | \"not\"\n | \"neg\"\n | \"add\"\n | \"sub\"\n | \"mul\"\n | \"div\"\n | \"mod\"\n | \"pow\"\n | \"eq\"\n | \"neq\"\n | \"lt\"\n | \"le\"\n | \"gt\"\n | \"ge\"\n | \"and\"\n | \"or\"\n | \"xor\";\ntype BinaryOperatorName = Exclude<OperatorTokenName, \"not\" | \"neg\">;\n\ninterface OperatorTokenNode {\n readonly kind: \"operator-token\";\n readonly op: OperatorTokenName;\n readonly span: { readonly start: number; readonly end: number };\n}\n\ntype WorkingNode = SequenceNode | OperatorTokenNode;\ntype BindingRole = \"normal\" | \"fallible_optional_arg\";\n\ninterface TrackedBinding {\n readonly isConst: boolean;\n readonly role: BindingRole;\n}\n\nfunction syntaxError(\n reporter: Reporter,\n message: string,\n start: number,\n end: number,\n inlineMessage?: string\n): never {\n reportCompilerMessage(\n reporter,\n \"SYNTAX_ERROR\",\n message,\n \"error\",\n start,\n end,\n inlineMessage\n );\n throw new CompilerError(\"syntax\", message);\n}\n\nfunction compilerError(\n reporter: Reporter,\n code: string,\n message: string,\n start: number,\n end: number,\n inlineMessage?: string\n): never {\n reportCompilerMessage(\n reporter,\n code,\n message,\n \"error\",\n start,\n end,\n inlineMessage\n );\n throw new CompilerError(\"syntax\", message);\n}\n\nfunction decodeEscape(char: string): string {\n switch (char) {\n case '\"':\n return '\"';\n case \"\\\\\":\n return \"\\\\\";\n case \"n\":\n return \"\\n\";\n case \"r\":\n return \"\\r\";\n case \"t\":\n return \"\\t\";\n case \"s\":\n return \" \";\n case \"[\":\n return \"[\";\n case \"]\":\n return \"]\";\n case \"{\":\n return \"{\";\n case \"}\":\n return \"}\";\n case \"<\":\n return \"<\";\n case \">\":\n return \">\";\n default:\n return char;\n }\n}\n\nfunction decodeTextEscapes(value: string): string {\n let output = \"\";\n\n for (let index = 0; index < value.length; index += 1) {\n const char = value[index];\n if (char === \"\\\\\" && index + 1 < value.length) {\n output += decodeEscape(value[index + 1] ?? \"\");\n index += 1;\n continue;\n }\n output += char ?? \"\";\n }\n\n return output;\n}\n\nfunction isTriviaToken(token: RantyToken | undefined): boolean {\n return token?.type === \"whitespace\" || token?.type === \"comment\";\n}\n\nfunction tokenValue(token: RantyToken | undefined): string | undefined {\n if (!token || token.type === \"eof\") {\n return undefined;\n }\n\n if (token.type === \"string\") {\n return token.raw;\n }\n\n return token.value;\n}\n\nfunction tokenEnd(token: RantyToken | undefined, fallback: number): number {\n return token?.end ?? fallback;\n}\n\nclass Parser {\n readonly #reader: TokenReader;\n readonly #reporter: Reporter;\n\n constructor(reader: TokenReader, reporter: Reporter) {\n this.#reader = reader;\n this.#reporter = reporter;\n }\n\n parse(): Sequence {\n const root = this.parseSequence(new Set());\n this.validateNoMisplacedMetadata(root);\n this.validateBindingRules(root);\n this.reportUnusedTopLevelBindings(root);\n return root;\n }\n\n private parseSequence(\n terminators: ReadonlySet<string>,\n options: { readonly allowSymbolicOperators?: boolean } = {}\n ): Sequence {\n const nodes: WorkingNode[] = [];\n let trimLeadingWhitespace = false;\n const allowSymbolicOperators = options.allowSymbolicOperators ?? false;\n\n while (!this.#reader.isEof()) {\n if (trimLeadingWhitespace) {\n this.skipTrivia();\n trimLeadingWhitespace = false;\n }\n\n if (this.trySkipComment()) {\n continue;\n }\n\n const token = this.peekToken();\n if (\n !token ||\n token.type === \"eof\" ||\n this.isTerminatorToken(token, terminators)\n ) {\n break;\n }\n if (this.matchesSymbol(\"|>\")) {\n break;\n }\n\n if (token.type === \"string\") {\n nodes.push(this.parseStringLiteral());\n continue;\n }\n\n if (this.matchesSymbol(\"[\")) {\n nodes.push(this.parseBracketNode());\n continue;\n }\n\n if (this.matchesSymbol(\"{\")) {\n nodes.push(this.parseBlock(false));\n continue;\n }\n\n if (this.matchesSymbol(\"~\")) {\n this.trimTrailingWhitespace(nodes);\n this.nextToken();\n this.skipInlineWhitespace();\n if (!this.matchesSymbol(\"{\")) {\n compilerError(\n this.#reporter,\n \"R0130\",\n \"sink must target a supported expression unit\",\n this.currentIndex(),\n this.currentIndex() + 1,\n \"~\"\n );\n }\n nodes.push(this.parseBlock(true));\n trimLeadingWhitespace = true;\n continue;\n }\n\n if (this.matchesSymbol(\"<\")) {\n nodes.push(this.parseAngleNode());\n continue;\n }\n\n if (this.isProtectedBlockStart()) {\n this.expect(\"@\");\n nodes.push(this.parseBlock(false, true));\n continue;\n }\n\n if (this.matchesSymbol(\"`\")) {\n this.nextToken();\n this.skipInlineWhitespace();\n nodes.push(this.parseHintedNode());\n continue;\n }\n\n if (this.matchesSymbol(\"@\")) {\n nodes.push(...this.parseKeywordNodes(terminators));\n continue;\n }\n\n if (allowSymbolicOperators && this.isSymbolicOperatorStart()) {\n nodes.push(this.parseSymbolOperator());\n continue;\n }\n\n if (this.matchesSymbol(\"(\")) {\n nodes.push(this.parseParenNode());\n continue;\n }\n\n const number = this.tryParseNumberLiteral();\n if (number) {\n nodes.push(number);\n continue;\n }\n\n const text = this.parseText(terminators, allowSymbolicOperators);\n if (text.value.length > 0) {\n nodes.push(text);\n }\n }\n\n return {\n kind: \"sequence\",\n nodes: this.foldOperators(nodes)\n };\n }\n\n private peekToken(offset = 0): RantyToken | undefined {\n return this.#reader.peek(offset);\n }\n\n private nextToken(): RantyToken | undefined {\n return this.#reader.next();\n }\n\n private peekValue(offset = 0): string | undefined {\n return tokenValue(this.peekToken(offset));\n }\n\n private currentIndex(): number {\n return this.#reader.index();\n }\n\n private mark(): number {\n return this.#reader.mark();\n }\n\n private reset(mark: number): void {\n this.#reader.reset(mark);\n }\n\n private skipTrivia(): void {\n while (true) {\n const token = this.peekToken();\n if (!isTriviaToken(token)) {\n return;\n }\n this.nextToken();\n }\n }\n\n private matchesType(type: RantyToken[\"type\"], offset = 0): boolean {\n return this.peekToken(offset)?.type === type;\n }\n\n private matchesSymbol(value: string, offset = 0): boolean {\n const token = this.peekToken(offset);\n return token?.type === \"symbol\" && token.value === value;\n }\n\n private matchesIdentifier(offset = 0): boolean {\n return this.peekToken(offset)?.type === \"identifier\";\n }\n\n private isTerminatorToken(\n token: RantyToken,\n terminators: ReadonlySet<string>\n ): boolean {\n return token.type === \"symbol\" && terminators.has(token.value);\n }\n\n private isSymbolicOperatorStart(): boolean {\n const token = this.peekToken();\n if (token?.type !== \"symbol\") {\n return false;\n }\n\n return [\"+\", \"-\", \"*\", \"**\", \"/\", \"%\", \"&\", \"|\", \"^\"].includes(token.value);\n }\n\n private tryParseNumberLiteral(): NumberLiteralNode | null {\n const token = this.peekToken();\n if (token?.type !== \"number\") {\n return null;\n }\n\n this.nextToken();\n\n return {\n kind: \"number\",\n value: INTEGER_PATTERN.test(token.value)\n ? BigInt(token.value)\n : Number(token.value),\n span: {\n start: token.start,\n end: token.end\n }\n };\n }\n\n private parseText(\n terminators: ReadonlySet<string>,\n allowSymbolicOperators: boolean\n ): TextNode {\n const start = this.currentIndex();\n let value = \"\";\n let end = start;\n\n while (!this.#reader.isEof()) {\n const token = this.peekToken();\n if (!token || token.type === \"eof\") {\n break;\n }\n\n if (token.type === \"comment\") {\n break;\n }\n if (token.type === \"string\") {\n break;\n }\n if (token.type === \"symbol\" && token.value === \"\\\\\") {\n value += tokenValue(this.nextToken()) ?? \"\";\n end = this.currentIndex();\n if (this.#reader.isEof()) {\n break;\n }\n value += tokenValue(this.nextToken()) ?? \"\";\n end = this.currentIndex();\n continue;\n }\n if (this.isTerminatorToken(token, terminators)) {\n break;\n }\n if (\n token.type === \"symbol\" &&\n [\"[\", \"{\", \"<\", \"(\", \"@\", \"~\", \"`\"].includes(token.value)\n ) {\n break;\n }\n if (\n allowSymbolicOperators &&\n token.type === \"symbol\" &&\n [\"+\", \"-\", \"*\", \"**\", \"/\", \"%\", \"&\", \"|\", \"^\"].includes(token.value)\n ) {\n break;\n }\n if (token.type === \"symbol\" && token.value === \"|>\") {\n break;\n }\n if (\n token.type === \"symbol\" &&\n token.value === \"~\" &&\n this.matchesSymbol(\"{\", 1)\n ) {\n break;\n }\n if (token.type === \"number\" && value.trim().length === 0) {\n break;\n }\n\n value += tokenValue(this.nextToken()) ?? \"\";\n end = token.end;\n }\n\n return {\n kind: \"text\",\n value: decodeTextEscapes(value),\n span: {\n start,\n end\n }\n };\n }\n\n private parseParenNode():\n | MapLiteralNode\n | ListLiteralNode\n | TupleLiteralNode {\n const start = this.currentIndex();\n this.expect(\"(\");\n this.skipInlineWhitespace();\n\n if (this.matchesSymbol(\":\")) {\n this.nextToken();\n if (this.matchesSymbol(\":\")) {\n this.nextToken();\n return this.parseMapLiteralBody(start);\n }\n return this.parseCollectionLiteralBody(start, \"list\");\n }\n\n return this.parseCollectionLiteralBody(start, \"tuple\");\n }\n\n private parseMapLiteralBody(start: number): MapLiteralNode {\n const entries: MapLiteralEntryNode[] = [];\n\n while (true) {\n this.skipInlineWhitespace();\n if (this.trySkipComment()) {\n this.skipInlineWhitespace();\n }\n\n if (this.matchesSymbol(\")\")) {\n this.nextToken();\n break;\n }\n\n const key = this.parseIdentifier(\"map key\");\n this.skipInlineWhitespace();\n this.expect(\"=\");\n this.skipInlineWhitespace();\n\n const value = this.trimSequenceWhitespace(\n this.parseSequence(new Set([\";\", \")\"]), {\n allowSymbolicOperators: true\n })\n );\n entries.push({ key, value });\n\n this.skipInlineWhitespace();\n if (this.matchesSymbol(\";\")) {\n this.nextToken();\n continue;\n }\n if (this.matchesSymbol(\")\")) {\n this.nextToken();\n break;\n }\n\n syntaxError(\n this.#reporter,\n \"expected ';' or ')' in map literal\",\n this.#reader.index(),\n this.#reader.index() + 1,\n \"map\"\n );\n }\n\n return {\n kind: \"map\",\n entries,\n span: { start, end: this.#reader.index() }\n };\n }\n\n private parseCollectionLiteralBody(\n start: number,\n kind: \"list\" | \"tuple\"\n ): ListLiteralNode | TupleLiteralNode {\n const items: Sequence[] = [];\n\n while (true) {\n this.skipInlineWhitespace();\n if (this.trySkipComment()) {\n this.skipInlineWhitespace();\n }\n\n if (this.matchesSymbol(\")\")) {\n this.nextToken();\n break;\n }\n\n items.push(\n this.trimSequenceWhitespace(\n this.parseSequence(new Set([\";\", \")\"]), {\n allowSymbolicOperators: true\n })\n )\n );\n\n this.skipInlineWhitespace();\n if (this.matchesSymbol(\";\")) {\n this.nextToken();\n continue;\n }\n if (this.matchesSymbol(\")\")) {\n this.nextToken();\n break;\n }\n\n syntaxError(\n this.#reporter,\n `expected ';' or ')' in ${kind} literal`,\n this.#reader.index(),\n this.#reader.index() + 1,\n kind\n );\n }\n\n return {\n kind,\n items,\n span: { start, end: this.#reader.index() }\n };\n }\n\n private parseStringLiteral(): StringLiteralNode {\n const token = this.nextToken();\n if (!token || token.type !== \"string\") {\n const start = this.currentIndex();\n syntaxError(\n this.#reporter,\n \"unterminated string literal\",\n start,\n start + 1,\n \"string\"\n );\n }\n\n return {\n kind: \"string\",\n value: token.value,\n span: { start: token.start, end: token.end }\n };\n }\n\n private parseKeywordNodes(terminators: ReadonlySet<string>): WorkingNode[] {\n const start = this.currentIndex();\n this.expect(\"@\");\n const keyword = this.parseIdentifier(\"keyword\");\n const name = `@${keyword}`;\n\n if (!VALID_KEYWORD_NAMES.has(keyword)) {\n compilerError(\n this.#reporter,\n \"R0200\",\n `invalid keyword: '${name}'`,\n start,\n this.#reader.index(),\n name\n );\n }\n\n if ([\"not\", \"neg\", \"eq\", \"neq\", \"lt\", \"le\", \"gt\", \"ge\"].includes(keyword)) {\n return [\n this.makeKeywordOperatorToken(\n start,\n keyword as Extract<\n OperatorTokenName,\n \"not\" | \"neg\" | \"eq\" | \"neq\" | \"lt\" | \"le\" | \"gt\" | \"ge\"\n >\n )\n ];\n }\n\n if (keyword === \"require\") {\n return [this.parseRequireInvocation(start, terminators)];\n }\n\n if (READ_ONLY_ATTRIBUTE_NAMES.has(keyword)) {\n const checkpoint = this.mark();\n this.skipInlineWhitespace();\n const next = this.peekToken();\n if (\n next &&\n next.type !== \"eof\" &&\n !this.isTerminatorToken(next, terminators)\n ) {\n compilerError(\n this.#reporter,\n \"R0206\",\n `attribute keyword '@${keyword}' is read-only`,\n start,\n this.#reader.index(),\n name\n );\n }\n this.reset(checkpoint);\n }\n\n if (\n [\"if\", \"elseif\", \"else\", \"rep\", \"sep\", \"sel\", \"mut\"].includes(keyword)\n ) {\n const checkpoint = this.mark();\n this.skipInlineWhitespace();\n\n if (this.matchesSymbol(\":\")) {\n return this.finishKeywordBlockSugar(start, name, []);\n }\n\n const argCheckpoint = this.mark();\n const arg = this.parseSequence(new Set([\":\"]), {\n allowSymbolicOperators: true\n });\n if (this.matchesSymbol(\":\")) {\n return this.finishKeywordBlockSugar(start, name, [\n this.trimSequenceWhitespace(arg)\n ]);\n }\n\n this.reset(argCheckpoint);\n this.reset(checkpoint);\n } else if (\n [\"return\", \"break\", \"continue\", \"on\", \"weight\"].includes(keyword)\n ) {\n const checkpoint = this.mark();\n this.skipInlineWhitespace();\n const next = this.peekToken();\n if (\n !next ||\n next.type === \"eof\" ||\n this.isTerminatorToken(next, terminators)\n ) {\n if (keyword === \"on\" || keyword === \"weight\") {\n compilerError(\n this.#reporter,\n \"R0207\",\n `@${keyword} metadata must appear on a block element with a value`,\n start,\n this.#reader.index(),\n name\n );\n }\n this.reset(checkpoint);\n return [this.makeInvocationNode(start, name, [])];\n }\n\n const arg = this.trimSequenceWhitespace(\n this.parseSequence(\n keyword === \"on\" || keyword === \"weight\"\n ? new Set([...terminators, \"@\"])\n : terminators,\n { allowSymbolicOperators: true }\n )\n );\n return [this.makeInvocationNode(start, name, [arg])];\n }\n\n return [this.makeInvocationNode(start, name, [])];\n }\n\n private parseRequireInvocation(\n start: number,\n terminators: ReadonlySet<string>\n ): InvocationNode {\n this.skipInlineWhitespace();\n const next = this.peekToken();\n if (\n !next ||\n next.type === \"eof\" ||\n this.isTerminatorToken(next, terminators)\n ) {\n syntaxError(\n this.#reporter,\n \"missing argument for @require\",\n start,\n this.#reader.index(),\n \"@require\"\n );\n }\n\n const args: Sequence[] = [];\n const aliasStart = this.currentIndex();\n\n if (next.type !== \"string\") {\n const alias = this.parseIdentifier(\"module alias\");\n this.skipInlineWhitespace();\n if (!this.matchesSymbol(\":\")) {\n compilerError(\n this.#reporter,\n \"R0203\",\n \"@require path should be a string literal\",\n aliasStart,\n this.#reader.index(),\n \"@require\"\n );\n }\n this.nextToken();\n args.push(\n this.stringSequence(alias, aliasStart, aliasStart + alias.length)\n );\n this.skipInlineWhitespace();\n }\n\n if (!this.matchesType(\"string\")) {\n compilerError(\n this.#reporter,\n \"R0203\",\n \"@require path should be a string literal\",\n start,\n this.#reader.index(),\n \"@require\"\n );\n }\n\n const pathNode = this.parseStringLiteral();\n args.push({\n kind: \"sequence\",\n nodes: [pathNode]\n });\n\n return {\n kind: \"invoke\",\n name: \"@require\",\n args,\n span: { start, end: this.#reader.index() }\n };\n }\n\n private finishKeywordBlockSugar(\n start: number,\n name: string,\n args: readonly Sequence[]\n ): SequenceNode[] {\n this.expect(\":\");\n this.skipInlineWhitespace();\n\n if (!this.matchesSymbol(\"{\")) {\n syntaxError(\n this.#reporter,\n `${name} block sugar must be followed by a block`,\n start,\n this.#reader.index(),\n name\n );\n }\n\n return [this.makeInvocationNode(start, name, args), this.parseBlock(false)];\n }\n\n private makeInvocationNode(\n start: number,\n name: string,\n args: readonly Sequence[]\n ): InvocationNode {\n return {\n kind: \"invoke\",\n name,\n args,\n span: { start, end: this.#reader.index() }\n };\n }\n\n private stringSequence(value: string, start: number, end: number): Sequence {\n return {\n kind: \"sequence\",\n nodes: [\n {\n kind: \"string\",\n value,\n span: { start, end }\n }\n ]\n };\n }\n\n private parseBracketNode(): SequenceNode {\n const start = this.currentIndex();\n this.expect(\"[\");\n const marker = this.peekValue();\n\n if (this.matchesSymbol(\"]\")) {\n this.nextToken();\n const node: PipeValueNode = {\n kind: \"pipe-value\",\n span: { start, end: this.currentIndex() }\n };\n return node;\n }\n\n if (marker === \"$\" || marker === \"%\" || marker === \"?\") {\n return this.parseFunctionDefinition(start);\n }\n\n return this.parseInvocation(start);\n }\n\n private parseFunctionDefinition(start: number): FunctionDefNode {\n let name: string | null = null;\n let global = false;\n let descope = 0;\n let isConst = false;\n const params: FunctionParam[] = [];\n\n const marker = this.peekValue();\n this.nextToken();\n if (marker === \"$\" || marker === \"%\") {\n isConst = marker === \"%\";\n if (this.matchesSymbol(\"/\")) {\n global = true;\n this.nextToken();\n } else {\n while (this.matchesSymbol(\"^\")) {\n descope += 1;\n this.nextToken();\n }\n }\n name = this.parsePathIdentifier(\"function\");\n } else if (marker !== \"?\") {\n syntaxError(\n this.#reporter,\n \"invalid function definition\",\n start,\n this.currentIndex(),\n \"function\"\n );\n }\n\n if (this.matchesSymbol(\":\")) {\n this.nextToken();\n this.skipInlineWhitespace();\n\n while (true) {\n params.push(this.parseFunctionParam());\n if (this.matchesSymbol(\";\")) {\n this.nextToken();\n this.skipInlineWhitespace();\n continue;\n }\n break;\n }\n }\n\n if (!this.matchesSymbol(\"]\")) {\n syntaxError(\n this.#reporter,\n \"unterminated function signature\",\n start,\n this.currentIndex(),\n name ?? \"function\"\n );\n }\n this.nextToken();\n this.skipInlineWhitespace();\n\n if (!this.matchesSymbol(\"{\")) {\n syntaxError(\n this.#reporter,\n \"function definition must be followed by a body block\",\n start,\n this.currentIndex(),\n name ?? \"function\"\n );\n }\n\n const bodyBlock = this.parseBlock(false);\n return {\n kind: \"function\",\n name,\n global,\n descope,\n isConst,\n params,\n body: bodyBlock.elements[0]?.sequence ?? { kind: \"sequence\", nodes: [] },\n span: { start, end: bodyBlock.span.end }\n };\n }\n\n private parseFunctionParam(): FunctionParam {\n const start = this.currentIndex();\n let isLazy = false;\n\n if (\n this.matchesSymbol(\"@\") &&\n this.matchesIdentifier(1) &&\n this.peekValue(1) === \"lazy\"\n ) {\n this.nextToken();\n this.nextToken();\n this.skipInlineWhitespace();\n isLazy = true;\n }\n\n const name = this.parseIdentifier(\"parameter\");\n let optional = false;\n let variadic: FunctionParam[\"variadic\"] = \"none\";\n let defaultValue: Sequence | undefined;\n\n this.skipInlineWhitespace();\n\n if (this.matchesSymbol(\"?\")) {\n optional = true;\n this.nextToken();\n this.skipInlineWhitespace();\n if (!this.matchesSymbol(\";\") && !this.matchesSymbol(\"]\")) {\n defaultValue = this.trimSequenceWhitespace(\n this.parseSequence(new Set([\";\", \"]\"]), {\n allowSymbolicOperators: true\n })\n );\n }\n } else if (this.matchesSymbol(\"*\")) {\n variadic = \"star\";\n this.nextToken();\n } else if (this.matchesSymbol(\"+\")) {\n variadic = \"plus\";\n this.nextToken();\n }\n\n return {\n span: { start, end: this.currentIndex() },\n name,\n isLazy,\n optional,\n variadic,\n ...(defaultValue ? { defaultValue } : {})\n };\n }\n\n private parseInvocation(start: number): SequenceNode {\n let current = this.sequenceOf(this.parseInvocationStage(start));\n\n while (true) {\n this.skipInlineWhitespace();\n if (this.matchesSymbol(\"|>\")) {\n this.nextToken();\n current = this.lowerPipeStage(current);\n continue;\n }\n\n if (this.matchesSymbol(\">\")) {\n this.nextToken();\n const assignment = this.parseAssignmentPipe(start, current);\n if (!this.matchesSymbol(\"]\")) {\n syntaxError(\n this.#reporter,\n \"unterminated invocation\",\n start,\n this.currentIndex(),\n \"invoke\"\n );\n }\n this.nextToken();\n return {\n ...assignment,\n span: { start, end: this.currentIndex() }\n };\n }\n\n if (this.matchesSymbol(\"]\")) {\n this.nextToken();\n const node = current.nodes[0];\n if (!node || current.nodes.length !== 1 || node.kind !== \"invoke\") {\n syntaxError(\n this.#reporter,\n \"invalid invocation pipeline\",\n start,\n this.currentIndex(),\n \"invoke\"\n );\n }\n return {\n ...node,\n span: { start, end: this.currentIndex() }\n };\n }\n\n syntaxError(\n this.#reporter,\n \"unterminated invocation\",\n start,\n this.currentIndex(),\n \"invoke\"\n );\n }\n }\n\n private parseInvocationStage(start: number): InvocationNode {\n this.skipInlineWhitespace();\n\n let name = \"call\";\n const args: Sequence[] = [];\n\n if (this.tryConsumePipeCallTarget()) {\n // `[]` and `([])` lower to `call`; the pipe value is injected later.\n } else if (this.matchesSymbol(\"(\")) {\n args.push(this.parseParenthesizedGroupSequence(\"invocation\"));\n } else {\n name = this.parsePathIdentifier(\"invocation\");\n }\n\n this.skipInlineWhitespace();\n if (this.matchesSymbol(\":\")) {\n this.nextToken();\n\n while (true) {\n this.skipInlineWhitespace();\n if (this.trySkipComment()) {\n this.skipInlineWhitespace();\n }\n\n const separator = this.peekToken();\n if (!separator || separator.type === \"eof\") {\n syntaxError(\n this.#reporter,\n \"unterminated invocation\",\n start,\n this.currentIndex(),\n name\n );\n }\n if (\n separator.type === \"symbol\" &&\n (separator.value === \"]\" ||\n separator.value === \">\" ||\n separator.value === \"|>\")\n ) {\n break;\n }\n\n args.push(this.parseInvocationArg());\n this.skipInlineWhitespace();\n const delimiter = this.peekToken();\n if (delimiter?.type === \"symbol\" && delimiter.value === \";\") {\n this.nextToken();\n continue;\n }\n if (\n delimiter?.type === \"symbol\" &&\n (delimiter.value === \"]\" ||\n delimiter.value === \">\" ||\n delimiter.value === \"|>\")\n ) {\n break;\n }\n\n syntaxError(\n this.#reporter,\n \"expected ';', '|>', '>' or ']' after invocation argument\",\n this.currentIndex(),\n this.currentIndex() + 1,\n name\n );\n }\n } else if (!this.isInvocationStageTerminator()) {\n syntaxError(\n this.#reporter,\n \"unterminated invocation\",\n start,\n this.currentIndex(),\n name\n );\n }\n\n return {\n kind: \"invoke\",\n name,\n args,\n span: { start, end: this.currentIndex() }\n };\n }\n\n private parseInvocationArg(): Sequence {\n const start = this.currentIndex();\n let spread = false;\n let temporal = false;\n let label: string | undefined;\n\n if (this.matchesSymbol(\"**\")) {\n spread = true;\n temporal = true;\n this.nextToken();\n this.skipInlineWhitespace();\n } else if (\n this.matchesSymbol(\"*\") &&\n this.matchesIdentifier(1) &&\n this.matchesSymbol(\"*\", 2)\n ) {\n spread = true;\n temporal = true;\n this.nextToken();\n label = this.parseIdentifier(\"temporal label\");\n this.expect(\"*\");\n this.skipInlineWhitespace();\n } else if (this.matchesSymbol(\"*\") && !this.matchesSymbol(\"*\", 1)) {\n spread = true;\n this.nextToken();\n this.skipInlineWhitespace();\n }\n\n const parsed = this.parseSequence(new Set([\";\", \"]\", \">\"]), {\n allowSymbolicOperators: true\n });\n const value = this.normalizeInvocationArg(\n this.stripInvocationArgLayoutWhitespace(parsed)\n );\n\n if (!spread) {\n return value;\n }\n\n const spreadNode: SpreadNode = {\n kind: \"spread\",\n value,\n ...(temporal ? { temporal: true } : {}),\n ...(label ? { label } : {}),\n span: { start, end: this.#reader.index() }\n };\n\n return {\n kind: \"sequence\",\n nodes: [spreadNode]\n };\n }\n\n private stripInvocationArgLayoutWhitespace(sequence: Sequence): Sequence {\n if (sequence.nodes.length !== 1 || sequence.nodes[0]?.kind !== \"text\") {\n return sequence;\n }\n\n const node = sequence.nodes[0];\n const raw = this.#reader.source.slice(node.span.start, node.span.end);\n const trimmedRaw = raw.replace(/\\s+$/u, \"\");\n if (trimmedRaw.length === raw.length) {\n return sequence;\n }\n\n return {\n kind: \"sequence\",\n nodes: [\n {\n ...node,\n value: decodeTextEscapes(trimmedRaw),\n span: {\n start: node.span.start,\n end: node.span.start + trimmedRaw.length\n }\n }\n ]\n };\n }\n\n private tryConsumePipeCallTarget(): boolean {\n if (this.matchesSymbol(\"[\") && this.matchesSymbol(\"]\", 1)) {\n this.nextToken();\n this.nextToken();\n return true;\n }\n\n if (\n this.matchesSymbol(\"(\") &&\n this.matchesSymbol(\"[\", 1) &&\n this.matchesSymbol(\"]\", 2) &&\n this.matchesSymbol(\")\", 3)\n ) {\n this.nextToken();\n this.nextToken();\n this.nextToken();\n this.nextToken();\n return true;\n }\n\n return false;\n }\n\n private isInvocationStageTerminator(): boolean {\n return (\n this.matchesSymbol(\"]\") ||\n this.matchesSymbol(\">\") ||\n this.matchesSymbol(\"|>\")\n );\n }\n\n private lowerPipeStage(current: Sequence): Sequence {\n const stage = this.parseInvocationStage(this.currentIndex());\n let usesPipeValue = false;\n\n const args = stage.args.map((arg) => {\n const replaced = this.replacePipeValueInSequence(arg, current);\n usesPipeValue ||= replaced.used;\n return replaced.sequence;\n });\n\n return {\n kind: \"sequence\",\n nodes: [\n {\n ...stage,\n args: usesPipeValue ? args : [current, ...args]\n }\n ]\n };\n }\n\n private parseAssignmentPipe(start: number, current: Sequence): AngleNode {\n this.skipInlineWhitespace();\n\n let define = false;\n let isConst = false;\n let global = false;\n let descope = 0;\n\n if (this.matchesSymbol(\"$\") || this.matchesSymbol(\"%\")) {\n define = true;\n isConst = this.matchesSymbol(\"%\");\n this.nextToken();\n if (this.matchesSymbol(\"/\")) {\n global = true;\n this.nextToken();\n }\n } else if (this.matchesSymbol(\"/\")) {\n global = true;\n this.nextToken();\n } else {\n while (this.matchesSymbol(\"^\")) {\n descope += 1;\n this.nextToken();\n }\n }\n\n const name = this.matchesSymbol(\"@\")\n ? this.parseAttributeAccessorName()\n : this.parseIdentifier(\"identifier\");\n const path: AnglePathSegment[] = [];\n\n while (true) {\n this.skipInlineWhitespace();\n if (!this.matchesSymbol(\"/\") || this.matchesSymbol(\"/=\", 0)) {\n break;\n }\n this.nextToken();\n path.push(this.parseAnglePathSegment(name));\n }\n\n return {\n kind: \"angle\",\n statements: [\n {\n kind: \"set\",\n span: { start, end: this.#reader.index() },\n name,\n path,\n global,\n descope,\n define,\n isConst,\n isLazy: false,\n value: current\n }\n ],\n span: { start, end: this.#reader.index() }\n };\n }\n\n private parseBlock(sink: boolean, protectedBlock = false): BlockNode {\n const start = this.currentIndex();\n this.expect(\"{\");\n const elements: BlockElementNode[] = [];\n\n while (true) {\n elements.push(this.parseBlockElement(start));\n if (this.matchesSymbol(\"|\")) {\n this.nextToken();\n continue;\n }\n if (this.matchesSymbol(\"}\")) {\n this.nextToken();\n break;\n }\n syntaxError(\n this.#reporter,\n \"unterminated block\",\n start,\n this.currentIndex(),\n \"block\"\n );\n }\n\n return this.normalizeBlock({\n kind: \"block\",\n elements,\n sink,\n protectedBlock,\n span: { start, end: this.currentIndex() }\n });\n }\n\n private parseBlockElement(blockStart: number): BlockElementNode {\n const edit = this.tryParseBlockEditDirective();\n if (edit) {\n return {\n sequence: {\n kind: \"sequence\",\n nodes: []\n },\n edit\n };\n }\n\n const rawSequence = this.parseSequence(new Set([\"|\", \"}\"]));\n const nodes = [...rawSequence.nodes];\n let on: Sequence | undefined;\n let weight: Sequence | undefined;\n\n while (true) {\n this.trimTrailingWhitespace(nodes);\n const last = nodes.at(-1);\n if (\n last?.kind !== \"invoke\" ||\n (last.name !== \"@on\" && last.name !== \"@weight\")\n ) {\n break;\n }\n\n if (last.args.length !== 1) {\n compilerError(\n this.#reporter,\n \"R0207\",\n `${last.name} metadata must have exactly one value`,\n last.span.start,\n last.span.end,\n last.name\n );\n }\n\n if (last.name === \"@on\") {\n if (on) {\n compilerError(\n this.#reporter,\n \"R0041\",\n \"duplicate @on modifier on block element\",\n last.span.start,\n last.span.end,\n last.name\n );\n }\n on = last.args[0];\n } else {\n if (weight) {\n compilerError(\n this.#reporter,\n \"R0041\",\n \"duplicate @weight modifier on block element\",\n last.span.start,\n last.span.end,\n last.name\n );\n }\n weight = last.args[0];\n }\n\n nodes.pop();\n }\n\n const sequence = this.trimSequenceWhitespace({\n kind: \"sequence\",\n nodes\n });\n\n this.validateNoMisplacedMetadata(sequence, blockStart);\n\n return {\n sequence,\n ...(on ? { on } : {}),\n ...(weight ? { weight } : {})\n };\n }\n\n private normalizeBlock(block: BlockNode): BlockNode {\n const elements: BlockElementNode[] = [];\n\n for (const element of block.elements) {\n elements.push(...this.expandBlockElement(element, block.span));\n }\n\n return {\n ...block,\n elements\n };\n }\n\n private expandBlockElement(\n element: BlockElementNode,\n span: BlockNode[\"span\"]\n ): readonly BlockElementNode[] {\n const expandableChildren = element.sequence.nodes\n .map((node, index) => ({ node, index }))\n .filter(\n ({ node }) => node.kind === \"block\" && !node.protectedBlock\n ) as ReadonlyArray<{ readonly node: BlockNode; readonly index: number }>;\n\n if (expandableChildren.length === 0) {\n return [element];\n }\n\n let expanded: readonly BlockElementNode[] = [element];\n\n for (const { index } of expandableChildren) {\n const next: BlockElementNode[] = [];\n\n for (const candidate of expanded) {\n const child = candidate.sequence.nodes[index];\n if (child?.kind !== \"block\" || child.protectedBlock) {\n next.push(candidate);\n continue;\n }\n\n for (const childElement of child.elements) {\n next.push(\n this.inlineChildBlockElement(\n candidate,\n index,\n child,\n childElement,\n span\n )\n );\n }\n }\n\n expanded = next;\n }\n\n return expanded;\n }\n\n private inlineChildBlockElement(\n candidate: BlockElementNode,\n expressionIndex: number,\n childBlock: BlockNode,\n childElement: BlockElementNode,\n span: BlockNode[\"span\"]\n ): BlockElementNode {\n const lifted = this.liftBlockElementMetadata(candidate, childElement, span);\n const nodes = [...lifted.sequence.nodes];\n nodes[expressionIndex] = {\n kind: \"block\",\n elements: [this.stripBlockElementMetadata(childElement)],\n sink: childBlock.sink,\n protectedBlock: false,\n span: childBlock.span\n };\n\n return {\n ...lifted,\n sequence: {\n kind: \"sequence\",\n nodes\n }\n };\n }\n\n private liftBlockElementMetadata(\n target: BlockElementNode,\n source: BlockElementNode,\n span: BlockNode[\"span\"]\n ): BlockElementNode {\n let on = target.on;\n let weight = target.weight;\n\n if (source.on) {\n if (on) {\n compilerError(\n this.#reporter,\n \"R0041\",\n \"duplicate @on modifier on block element\",\n span.start,\n span.end,\n \"@on\"\n );\n }\n\n on = source.on;\n }\n\n if (source.weight) {\n if (weight) {\n compilerError(\n this.#reporter,\n \"R0041\",\n \"duplicate @weight modifier on block element\",\n span.start,\n span.end,\n \"@weight\"\n );\n }\n\n weight = source.weight;\n }\n\n return {\n sequence: target.sequence,\n ...(target.edit ? { edit: target.edit } : {}),\n ...(on ? { on } : {}),\n ...(weight ? { weight } : {})\n };\n }\n\n private stripBlockElementMetadata(\n element: BlockElementNode\n ): BlockElementNode {\n return {\n sequence: element.sequence,\n ...(element.edit ? { edit: element.edit } : {})\n };\n }\n\n private tryParseBlockEditDirective(): BlockEditDirective | null {\n const start = this.mark();\n this.skipTrivia();\n\n if (!this.matchesSymbol(\"@\")) {\n this.reset(start);\n return null;\n }\n\n if (this.matchesSymbol(\"{\", 1)) {\n this.reset(start);\n return null;\n }\n\n this.nextToken();\n const keyword = this.parseIdentifier(\"keyword\");\n if (keyword !== \"edit\") {\n this.reset(start);\n return null;\n }\n\n this.skipInlineWhitespace();\n\n let name: string | undefined;\n if (this.matchesSymbol(\":\")) {\n this.nextToken();\n } else {\n name = this.parseIdentifier(\"edit binding\");\n this.skipInlineWhitespace();\n if (!this.matchesSymbol(\":\")) {\n syntaxError(\n this.#reporter,\n \"expected ':' after @edit binding\",\n this.currentIndex(),\n this.currentIndex() + 1,\n \"@edit\"\n );\n }\n this.nextToken();\n }\n\n this.skipInlineWhitespace();\n\n return {\n ...(name ? { name } : {}),\n body: this.trimSequenceWhitespace(\n this.parseSequence(new Set([\"|\", \"}\"]), {\n allowSymbolicOperators: true\n })\n )\n };\n }\n\n private parseHintedNode(): SequenceNode {\n if (this.isProtectedBlockStart()) {\n this.expect(\"@\");\n return this.parseBlock(false, true);\n }\n if (this.matchesSymbol(\"<\")) {\n return this.parseAngleNode();\n }\n if (this.matchesSymbol(\"{\")) {\n return this.parseBlock(false);\n }\n if (this.matchesSymbol(\"[\")) {\n return this.parseBracketNode();\n }\n if (this.matchesSymbol(\"(\")) {\n return this.parseParenNode();\n }\n if (this.matchesType(\"string\")) {\n return this.parseStringLiteral();\n }\n\n const number = this.tryParseNumberLiteral();\n if (number) {\n return number;\n }\n\n compilerError(\n this.#reporter,\n \"R0131\",\n \"hint must target a supported expression unit\",\n this.currentIndex(),\n this.currentIndex() + 1,\n \"`\"\n );\n }\n\n private parseAngleNode(): AngleNode {\n const start = this.currentIndex();\n this.expect(\"<\");\n const statements: AngleStatement[] = [];\n\n while (true) {\n this.skipInlineWhitespace();\n if (this.trySkipComment()) {\n this.skipInlineWhitespace();\n }\n\n const token = this.peekToken();\n if (!token || token.type === \"eof\") {\n syntaxError(\n this.#reporter,\n \"unterminated angle expression\",\n start,\n this.currentIndex(),\n \">\"\n );\n }\n if (this.matchesSymbol(\">\")) {\n this.nextToken();\n break;\n }\n\n statements.push(this.parseAngleStatement());\n this.skipInlineWhitespace();\n\n if (this.matchesSymbol(\";\")) {\n this.nextToken();\n continue;\n }\n if (this.matchesSymbol(\">\")) {\n this.nextToken();\n break;\n }\n\n syntaxError(\n this.#reporter,\n \"expected ';' or '>' in angle expression\",\n this.currentIndex(),\n this.currentIndex() + 1,\n \"angle\"\n );\n }\n\n return {\n kind: \"angle\",\n statements,\n span: { start, end: this.currentIndex() }\n };\n }\n\n private parseAngleStatement(): AngleStatement {\n const start = this.currentIndex();\n let define = false;\n let isConst = false;\n let global = false;\n let descope = 0;\n const autoHintText = this.consumeAutoHintText();\n\n if (this.matchesSymbol(\"$\") || this.matchesSymbol(\"%\")) {\n define = true;\n isConst = this.matchesSymbol(\"%\");\n this.nextToken();\n if (this.matchesSymbol(\"/\")) {\n global = true;\n this.nextToken();\n }\n } else {\n if (this.matchesSymbol(\"/\")) {\n global = true;\n this.nextToken();\n } else {\n while (this.matchesSymbol(\"^\")) {\n descope += 1;\n this.nextToken();\n }\n }\n }\n\n if (autoHintText && !define) {\n syntaxError(\n this.#reporter,\n \"invalid attribute '@text'\",\n this.currentIndex(),\n this.currentIndex() + 1,\n \"@text\"\n );\n }\n\n let base: Sequence | undefined;\n if (this.matchesSymbol(\"(\")) {\n if (define || global || descope > 0 || autoHintText) {\n syntaxError(\n this.#reporter,\n \"anonymous accessors do not support this form\",\n start,\n this.currentIndex(),\n \"anonymous access\"\n );\n }\n base = this.parseAnglePathParenthesizedSequence();\n }\n\n const pathStart = this.currentIndex();\n const name = base\n ? \"\"\n : this.matchesSymbol(\"@\")\n ? this.parseAttributeAccessorName()\n : this.parseIdentifier(\"identifier\");\n const path: AnglePathSegment[] = [];\n\n while (true) {\n this.skipInlineWhitespace();\n if (!this.matchesSymbol(\"/\")) {\n break;\n }\n this.nextToken();\n path.push(this.parseAnglePathSegment(name));\n }\n\n const displayName = base\n ? this.#reader.source.slice(start, this.currentIndex())\n : this.#reader.source.slice(pathStart, this.currentIndex());\n this.skipInlineWhitespace();\n\n if (\n !base &&\n name.startsWith(\"@\") &&\n (path.length > 0 ||\n (this.peekValue() != null &&\n ![\"=\", \"?=\", \";\", \">\", \"?\"].includes(this.peekValue() ?? \"\")))\n ) {\n compilerError(\n this.#reporter,\n \"R0205\",\n `attribute keyword '${name}' does not support this accessor form`,\n this.currentIndex(),\n this.currentIndex() + 1,\n name\n );\n }\n\n let fallback: Sequence | undefined;\n if (this.matchesSymbol(\"?\")) {\n this.nextToken();\n this.skipInlineWhitespace();\n fallback = this.trimSequenceWhitespace(\n this.parseSequence(new Set([\";\", \">\"]), {\n allowSymbolicOperators: true\n })\n );\n this.skipInlineWhitespace();\n }\n\n if (this.matchesSymbol(\"?=\")) {\n if (base) {\n syntaxError(\n this.#reporter,\n \"anonymous accessors do not support lazy assignment\",\n start,\n this.#reader.index(),\n displayName\n );\n }\n if (fallback) {\n syntaxError(\n this.#reporter,\n \"fallback access cannot be combined with assignment\",\n pathStart,\n this.#reader.index(),\n displayName\n );\n }\n if (READ_ONLY_ATTRIBUTE_NAMES.has(name.slice(1))) {\n compilerError(\n this.#reporter,\n \"R0206\",\n `attribute keyword '${name}' is read-only`,\n this.currentIndex(),\n this.currentIndex() + 1,\n name\n );\n }\n this.nextToken();\n this.skipInlineWhitespace();\n return {\n kind: \"set\",\n span: { start, end: this.currentIndex() },\n ...(base ? { base } : {}),\n name,\n path,\n global,\n descope,\n define,\n isConst,\n isLazy: true,\n value: this.trimSequenceWhitespace(\n this.parseSequence(new Set([\";\", \">\"]), {\n allowSymbolicOperators: true\n })\n )\n };\n }\n\n if (this.matchesSymbol(\"^=\")) {\n syntaxError(\n this.#reporter,\n \"unexpected token: '^='\",\n this.currentIndex(),\n this.currentIndex() + 2,\n \"^=\"\n );\n }\n\n const compoundOp = this.parseCompoundAssignmentOperator();\n\n if (compoundOp || this.matchesSymbol(\"=\")) {\n if (base && path.length === 0) {\n syntaxError(\n this.#reporter,\n \"anonymous assignments require an access path\",\n start,\n this.#reader.index(),\n displayName\n );\n }\n if (fallback) {\n syntaxError(\n this.#reporter,\n \"fallback access cannot be combined with assignment\",\n pathStart,\n this.#reader.index(),\n displayName\n );\n }\n if (READ_ONLY_ATTRIBUTE_NAMES.has(name.slice(1))) {\n compilerError(\n this.#reporter,\n \"R0206\",\n `attribute keyword '${name}' is read-only`,\n this.currentIndex(),\n this.currentIndex() + 1,\n name\n );\n }\n if (!compoundOp) {\n this.nextToken();\n }\n this.skipInlineWhitespace();\n const value = this.trimSequenceWhitespace(\n this.parseSequence(new Set([\";\", \">\"]), {\n allowSymbolicOperators: true\n })\n );\n const statement: AngleSetStatement = {\n kind: \"set\",\n span: { start, end: this.currentIndex() },\n ...(base ? { base } : {}),\n name,\n path,\n global,\n descope,\n define,\n isConst,\n isLazy: false,\n ...(compoundOp ? { compoundOp } : {}),\n value\n };\n return statement;\n }\n\n if (define) {\n return {\n kind: \"set\",\n span: { start, end: this.currentIndex() },\n ...(base ? { base } : {}),\n name,\n path,\n global,\n descope,\n define,\n isConst,\n isLazy: false,\n value: { kind: \"sequence\", nodes: [] }\n };\n }\n\n return {\n kind: \"access\",\n span: { start, end: this.currentIndex() },\n ...(base ? { base } : {}),\n name,\n path,\n ...(fallback ? { fallback } : {}),\n global,\n descope\n };\n }\n\n private parseAnglePathSegment(baseName: string): AnglePathSegment {\n this.skipInlineWhitespace();\n\n if (this.matchesSymbol(\"..\")) {\n this.nextToken();\n this.skipInlineWhitespace();\n const end = this.parseAnglePathBound();\n return end ? { kind: \"slice\", end } : { kind: \"slice\" };\n }\n\n if (this.matchesSymbol(\"(\")) {\n const value = this.parseAnglePathParenthesizedSequence();\n this.skipInlineWhitespace();\n if (this.matchesSymbol(\"..\")) {\n this.nextToken();\n this.skipInlineWhitespace();\n const end = this.parseAnglePathBound();\n return {\n kind: \"slice\",\n start: value,\n ...(end ? { end } : {})\n };\n }\n return {\n kind: \"dynamic\",\n value\n };\n }\n\n const numeric = this.tryParseAnglePathInteger();\n if (numeric) {\n this.skipInlineWhitespace();\n if (this.matchesSymbol(\"..\")) {\n this.nextToken();\n this.skipInlineWhitespace();\n const end = this.parseAnglePathBound();\n return {\n kind: \"slice\",\n start: numeric,\n ...(end ? { end } : {})\n };\n }\n return {\n kind: \"static\",\n value: this.sequenceAsStaticPathValue(numeric)\n };\n }\n\n const value = this.parseIdentifier(\"identifier\");\n this.skipInlineWhitespace();\n if (this.matchesSymbol(\"..\")) {\n compilerError(\n this.#reporter,\n \"R0204\",\n `invalid slice syntax in access path '${baseName}'`,\n this.currentIndex(),\n this.currentIndex() + 2,\n baseName\n );\n }\n\n return {\n kind: \"static\",\n value\n };\n }\n\n private parseAnglePathBound(): Sequence | null {\n if (this.matchesSymbol(\"(\")) {\n return this.parseAnglePathParenthesizedSequence();\n }\n\n return this.tryParseAnglePathInteger();\n }\n\n private parseAnglePathParenthesizedSequence(): Sequence {\n this.expect(\"(\");\n const value = this.trimSequenceWhitespace(\n this.parseSequence(new Set([\")\"]), { allowSymbolicOperators: true })\n );\n if (!this.matchesSymbol(\")\")) {\n syntaxError(\n this.#reporter,\n \"unterminated access path expression\",\n this.currentIndex(),\n this.currentIndex() + 1,\n \"path\"\n );\n }\n this.nextToken();\n return value;\n }\n\n private parseParenthesizedGroupSequence(contextName: string): Sequence {\n const start = this.currentIndex();\n this.expect(\"(\");\n const value = this.trimSequenceWhitespace(\n this.parseSequence(new Set([\")\"]), { allowSymbolicOperators: true })\n );\n if (!this.matchesSymbol(\")\")) {\n syntaxError(\n this.#reporter,\n `unterminated ${contextName} expression`,\n start,\n this.currentIndex(),\n contextName\n );\n }\n this.nextToken();\n return value;\n }\n\n private tryParseAnglePathInteger(): Sequence | null {\n const token = this.peekToken();\n if (token?.type !== \"number\" || !INTEGER_PATTERN.test(token.value)) {\n return null;\n }\n this.nextToken();\n\n return {\n kind: \"sequence\",\n nodes: [\n {\n kind: \"number\",\n value: BigInt(token.value),\n span: { start: token.start, end: token.end }\n }\n ]\n };\n }\n\n private sequenceAsStaticPathValue(sequence: Sequence): string {\n const node = sequence.nodes[0];\n if (sequence.nodes.length !== 1 || node?.kind !== \"number\") {\n return \"\";\n }\n return String(node.value);\n }\n\n private parseCompoundAssignmentOperator():\n | \"add\"\n | \"sub\"\n | \"mul\"\n | \"div\"\n | \"mod\"\n | \"pow\"\n | \"and\"\n | \"or\"\n | \"xor\"\n | undefined {\n const symbol = this.peekValue();\n\n switch (symbol) {\n case \"**=\":\n this.nextToken();\n return \"pow\";\n case \"+=\":\n this.nextToken();\n return \"add\";\n case \"-=\":\n this.nextToken();\n return \"sub\";\n case \"*=\":\n this.nextToken();\n return \"mul\";\n case \"/=\":\n this.nextToken();\n return \"div\";\n case \"%=\":\n this.nextToken();\n return \"mod\";\n case \"&=\":\n this.nextToken();\n return \"and\";\n case \"|=\":\n this.nextToken();\n return \"or\";\n default:\n return undefined;\n }\n }\n\n private consumeAutoHintText(): boolean {\n const start = this.mark();\n if (!this.matchesSymbol(\"@\")) {\n return false;\n }\n\n this.nextToken();\n const ident = this.parseIdentifier(\"attribute\");\n if (ident !== \"text\") {\n this.reset(start);\n return false;\n }\n\n this.skipInlineWhitespace();\n return true;\n }\n\n private parseIdentifier(contextName: string): string {\n const token = this.peekToken();\n const start = this.currentIndex();\n if (token?.type !== \"identifier\" || !IDENTIFIER_PATTERN.test(token.value)) {\n const value = tokenValue(token);\n if (value != null) {\n syntaxError(\n this.#reporter,\n `'${value}' is not a valid identifier; identifiers may only use alphanumerics, underscores, and hyphens (but cannot be only digits)`,\n start,\n tokenEnd(token, start + 1),\n value\n );\n }\n syntaxError(\n this.#reporter,\n `invalid ${contextName} '${tokenValue(token) ?? \"\"}'`,\n start,\n tokenEnd(token, start + 1),\n tokenValue(token) || contextName\n );\n }\n this.nextToken();\n return token.value;\n }\n\n private parseAttributeAccessorName(): string {\n const start = this.currentIndex();\n this.expect(\"@\");\n const attr = this.parseIdentifier(\"attribute\");\n\n if (\n !MUTABLE_ATTRIBUTE_NAMES.has(attr) &&\n !READ_ONLY_ATTRIBUTE_NAMES.has(attr)\n ) {\n syntaxError(\n this.#reporter,\n `invalid attribute '@${attr}'`,\n start,\n this.currentIndex(),\n `@${attr}`\n );\n }\n\n return `@${attr}`;\n }\n\n private parsePathIdentifier(contextName: string): string {\n const start = this.currentIndex();\n let value = this.parseIdentifier(contextName);\n\n while (this.matchesSymbol(\"/\")) {\n this.nextToken();\n const segment = this.parseIdentifier(contextName);\n value += `/${segment}`;\n }\n\n if (!PATH_PATTERN.test(value)) {\n syntaxError(\n this.#reporter,\n `invalid ${contextName} '${value}'`,\n start,\n this.currentIndex(),\n value || contextName\n );\n }\n\n return value;\n }\n\n private makeKeywordOperatorToken(\n start: number,\n op: Extract<\n OperatorTokenName,\n \"not\" | \"neg\" | \"eq\" | \"neq\" | \"lt\" | \"le\" | \"gt\" | \"ge\"\n >\n ): OperatorTokenNode {\n return {\n kind: \"operator-token\",\n op,\n span: { start, end: this.currentIndex() }\n };\n }\n\n private parseSymbolOperator(): OperatorTokenNode {\n const start = this.currentIndex();\n const symbol = this.peekValue();\n this.nextToken();\n\n switch (symbol) {\n case \"+\":\n return {\n kind: \"operator-token\",\n op: \"add\",\n span: { start, end: this.currentIndex() }\n };\n case \"-\":\n return {\n kind: \"operator-token\",\n op: \"sub\",\n span: { start, end: this.currentIndex() }\n };\n case \"*\":\n return {\n kind: \"operator-token\",\n op: \"mul\",\n span: { start, end: this.currentIndex() }\n };\n case \"**\":\n return {\n kind: \"operator-token\",\n op: \"pow\",\n span: { start, end: this.currentIndex() }\n };\n case \"/\":\n return {\n kind: \"operator-token\",\n op: \"div\",\n span: { start, end: this.currentIndex() }\n };\n case \"%\":\n return {\n kind: \"operator-token\",\n op: \"mod\",\n span: { start, end: this.currentIndex() }\n };\n case \"&\":\n return {\n kind: \"operator-token\",\n op: \"and\",\n span: { start, end: this.currentIndex() }\n };\n case \"|\":\n return {\n kind: \"operator-token\",\n op: \"or\",\n span: { start, end: this.currentIndex() }\n };\n case \"^\":\n return {\n kind: \"operator-token\",\n op: \"xor\",\n span: { start, end: this.currentIndex() }\n };\n default:\n syntaxError(\n this.#reporter,\n `unsupported syntax starting with '${symbol ?? \"\"}'`,\n start,\n this.currentIndex(),\n symbol ?? \"\"\n );\n }\n }\n\n private foldOperators(rawNodes: readonly WorkingNode[]): SequenceNode[] {\n if (!rawNodes.some((node) => node.kind === \"operator-token\")) {\n return rawNodes as SequenceNode[];\n }\n\n let nodes = rawNodes.filter(\n (node) => !this.isDiscardableOperatorWhitespace(node)\n );\n\n nodes = this.foldPrefixOperators(nodes);\n nodes = this.foldBinaryOperators(nodes, new Set([\"pow\"]));\n nodes = this.foldBinaryOperators(nodes, new Set([\"mul\", \"div\", \"mod\"]));\n nodes = this.foldBinaryOperators(nodes, new Set([\"add\", \"sub\"]));\n nodes = this.foldBinaryOperators(\n nodes,\n new Set([\"eq\", \"neq\", \"lt\", \"le\", \"gt\", \"ge\"])\n );\n nodes = this.foldBinaryOperators(nodes, new Set([\"and\", \"or\", \"xor\"]));\n\n const leftover = nodes.find((node) => node.kind === \"operator-token\");\n if (leftover) {\n syntaxError(\n this.#reporter,\n `invalid use of operator '${this.operatorDisplay(leftover.op)}'`,\n leftover.span.start,\n leftover.span.end,\n this.operatorDisplay(leftover.op)\n );\n }\n\n return nodes as SequenceNode[];\n }\n\n private foldPrefixOperators(nodes: readonly WorkingNode[]): WorkingNode[] {\n const result: WorkingNode[] = [];\n\n for (let index = 0; index < nodes.length; index += 1) {\n const node = nodes[index];\n if (!node) {\n continue;\n }\n if (\n node?.kind === \"operator-token\" &&\n (node.op === \"not\" || node.op === \"neg\")\n ) {\n const operand = nodes[index + 1];\n if (!operand || operand.kind === \"operator-token\") {\n syntaxError(\n this.#reporter,\n `missing operand for '${this.operatorDisplay(node.op)}'`,\n node.span.start,\n node.span.end,\n this.operatorDisplay(node.op)\n );\n }\n const unary: UnaryOpNode = {\n kind: \"unary-op\",\n op: node.op,\n operand: this.sequenceOf(operand),\n span: { start: node.span.start, end: operand.span.end }\n };\n result.push(unary);\n index += 1;\n continue;\n }\n result.push(node);\n }\n\n return result;\n }\n\n private foldBinaryOperators(\n nodes: readonly WorkingNode[],\n ops: ReadonlySet<BinaryOperatorName>\n ): WorkingNode[] {\n const result: WorkingNode[] = [];\n\n for (let index = 0; index < nodes.length; index += 1) {\n const node = nodes[index];\n if (!node) {\n continue;\n }\n if (\n node?.kind === \"operator-token\" &&\n node.op !== \"not\" &&\n node.op !== \"neg\" &&\n ops.has(node.op)\n ) {\n const left = result.pop();\n const right = nodes[index + 1];\n if (\n !left ||\n left.kind === \"operator-token\" ||\n !right ||\n right.kind === \"operator-token\"\n ) {\n syntaxError(\n this.#reporter,\n `missing operand for '${this.operatorDisplay(node.op)}'`,\n node.span.start,\n node.span.end,\n this.operatorDisplay(node.op)\n );\n }\n const binary: BinaryOpNode = {\n kind: \"binary-op\",\n op: node.op,\n left: this.sequenceOf(left),\n right: this.sequenceOf(right),\n span: { start: left.span.start, end: right.span.end }\n };\n result.push(binary);\n index += 1;\n continue;\n }\n result.push(node);\n }\n\n return result;\n }\n\n private sequenceOf(node: SequenceNode): Sequence {\n return {\n kind: \"sequence\",\n nodes: [node]\n };\n }\n\n private isDiscardableOperatorWhitespace(node: WorkingNode): boolean {\n return node.kind === \"text\" && node.value.trim().length === 0;\n }\n\n private operatorDisplay(op: OperatorTokenName): string {\n switch (op) {\n case \"pow\":\n return \"**\";\n case \"mul\":\n return \"*\";\n case \"div\":\n return \"/\";\n case \"mod\":\n return \"%\";\n case \"and\":\n return \"&\";\n case \"or\":\n return \"|\";\n case \"xor\":\n return \"^\";\n case \"add\":\n return \"+\";\n case \"sub\":\n return \"-\";\n default:\n return `@${op}`;\n }\n }\n\n private skipInlineWhitespace(): void {\n while (this.matchesType(\"whitespace\")) {\n this.nextToken();\n }\n }\n\n private trimSequenceWhitespace(sequence: Sequence): Sequence {\n const nodes = [...sequence.nodes];\n const first = nodes[0];\n if (first?.kind === \"text\") {\n const trimmed = this.trimTextNodeEdge(first, \"start\");\n if (trimmed == null) {\n nodes.shift();\n } else if (trimmed !== first) {\n nodes[0] = trimmed;\n }\n }\n\n const last = nodes.at(-1);\n if (last?.kind === \"text\") {\n const trimmed = this.trimTextNodeEdge(last, \"end\");\n if (trimmed == null) {\n nodes.pop();\n } else if (trimmed !== last) {\n nodes[nodes.length - 1] = trimmed;\n }\n }\n\n return {\n kind: \"sequence\",\n nodes\n };\n }\n\n private trimTextNodeEdge(\n node: Extract<SequenceNode, { readonly kind: \"text\" }>,\n edge: \"start\" | \"end\"\n ): Extract<SequenceNode, { readonly kind: \"text\" }> | null {\n const raw = this.#reader.source.slice(node.span.start, node.span.end);\n const trimmedRaw =\n edge === \"start\" ? raw.replace(/^\\s+/u, \"\") : raw.replace(/\\s+$/u, \"\");\n if (trimmedRaw === raw) {\n return node;\n }\n if (trimmedRaw.length === 0) {\n return null;\n }\n\n const removed = raw.length - trimmedRaw.length;\n return {\n ...node,\n value: decodeTextEscapes(trimmedRaw),\n span: {\n start: edge === \"start\" ? node.span.start + removed : node.span.start,\n end: edge === \"end\" ? node.span.end - removed : node.span.end\n }\n };\n }\n\n private normalizeInvocationArg(sequence: Sequence): Sequence {\n const trimmed = this.trimSequenceWhitespace(sequence);\n const removedOnlyWhitespace =\n trimmed.nodes.length === 0 &&\n sequence.nodes.some(\n (node) => node.kind === \"text\" && node.value.trim().length === 0\n );\n\n if (\n sequence.nodes.length === 1 &&\n trimmed.nodes.length === 1 &&\n sequence.nodes[0]?.kind === \"text\" &&\n trimmed.nodes[0]?.kind === \"text\" &&\n sequence.nodes[0].value !== trimmed.nodes[0].value &&\n /^[^\\p{L}\\p{N}_-]+$/u.test(trimmed.nodes[0].value)\n ) {\n return sequence;\n }\n\n return removedOnlyWhitespace ? sequence : trimmed;\n }\n\n private trySkipComment(): boolean {\n if (!this.matchesType(\"comment\")) {\n return false;\n }\n\n this.nextToken();\n return true;\n }\n\n private trimTrailingWhitespace(nodes: WorkingNode[]): void {\n const last = nodes.at(-1);\n if (!last || last.kind !== \"text\") {\n return;\n }\n\n const trimmed = this.trimTextNodeEdge(last, \"end\");\n if (trimmed === last) {\n return;\n }\n if (trimmed == null) {\n nodes.pop();\n return;\n }\n\n nodes[nodes.length - 1] = trimmed;\n }\n\n private isProtectedBlockStart(): boolean {\n return this.matchesSymbol(\"@\") && this.matchesSymbol(\"{\", 1);\n }\n\n private validateNoMisplacedMetadata(\n sequence: Sequence,\n _contextStart = 0\n ): void {\n for (const node of sequence.nodes) {\n if (\n node.kind === \"invoke\" &&\n (node.name === \"@on\" || node.name === \"@weight\")\n ) {\n compilerError(\n this.#reporter,\n \"R0207\",\n `${node.name} is not allowed in this context`,\n node.span.start,\n node.span.end,\n node.name\n );\n }\n\n if (node.kind === \"block\") {\n for (const element of node.elements) {\n this.validateNoMisplacedMetadata(element.sequence);\n if (element.edit) {\n this.validateNoMisplacedMetadata(element.edit.body);\n }\n if (element.on) {\n this.validateNoMisplacedMetadata(element.on);\n }\n if (element.weight) {\n this.validateNoMisplacedMetadata(element.weight);\n }\n }\n continue;\n }\n\n if (node.kind === \"function\") {\n this.validateNoMisplacedMetadata(node.body);\n continue;\n }\n\n if (node.kind === \"angle\") {\n for (const statement of node.statements) {\n if (statement.base) {\n this.validateNoMisplacedMetadata(statement.base);\n }\n for (const segment of statement.path) {\n if (segment.kind === \"dynamic\") {\n this.validateNoMisplacedMetadata(segment.value);\n } else if (segment.kind === \"slice\") {\n if (segment.start) {\n this.validateNoMisplacedMetadata(segment.start);\n }\n if (segment.end) {\n this.validateNoMisplacedMetadata(segment.end);\n }\n }\n }\n if (statement.kind === \"access\" && statement.fallback) {\n this.validateNoMisplacedMetadata(statement.fallback);\n }\n if (statement.kind === \"set\") {\n this.validateNoMisplacedMetadata(statement.value);\n }\n }\n continue;\n }\n\n if (node.kind === \"spread\") {\n this.validateNoMisplacedMetadata(node.value);\n continue;\n }\n\n if (node.kind === \"invoke\") {\n for (const arg of node.args) {\n this.validateNoMisplacedMetadata(arg);\n }\n continue;\n }\n\n if (node.kind === \"list\" || node.kind === \"tuple\") {\n for (const item of node.items) {\n this.validateNoMisplacedMetadata(item);\n }\n continue;\n }\n\n if (node.kind === \"map\") {\n for (const entry of node.entries) {\n this.validateNoMisplacedMetadata(entry.value);\n }\n continue;\n }\n\n if (node.kind === \"unary-op\") {\n this.validateNoMisplacedMetadata(node.operand);\n continue;\n }\n\n if (node.kind === \"binary-op\") {\n this.validateNoMisplacedMetadata(node.left);\n this.validateNoMisplacedMetadata(node.right);\n }\n }\n }\n\n private validateBindingRules(sequence: Sequence): void {\n const locals: Map<string, TrackedBinding>[] = [new Map()];\n const globals = new Map<string, TrackedBinding>();\n this.validateSequenceBindings(sequence, locals, globals);\n }\n\n private reportUnusedTopLevelBindings(sequence: Sequence): void {\n const definitions: Array<{\n readonly name: string;\n readonly start: number;\n readonly end: number;\n }> = [];\n\n for (const node of sequence.nodes) {\n if (node.kind === \"angle\") {\n for (const statement of node.statements) {\n if (\n statement.kind === \"set\" &&\n statement.define &&\n !statement.base &&\n !statement.name.startsWith(\"@\")\n ) {\n definitions.push({\n name: this.rootBindingName(statement.name),\n start: statement.span.start,\n end: statement.span.end\n });\n }\n }\n continue;\n }\n\n if (\n node.kind === \"function\" &&\n node.name != null &&\n !node.name.startsWith(\"@\")\n ) {\n definitions.push({\n name: this.rootBindingName(node.name),\n start: node.span.start,\n end: node.span.end\n });\n }\n }\n\n if (definitions.length === 0) {\n return;\n }\n\n const references = new Set<string>();\n this.collectReferencedBindings(sequence, references);\n\n for (const definition of definitions) {\n if (definition.name === \"module\" || references.has(definition.name)) {\n continue;\n }\n reportCompilerMessage(\n this.#reporter,\n \"W0001\",\n `variable '${definition.name}' defined but never used`,\n \"warning\",\n definition.start,\n definition.end,\n definition.name\n );\n }\n }\n\n private collectReferencedBindings(\n sequence: Sequence,\n references: Set<string>\n ): void {\n for (const node of sequence.nodes) {\n switch (node.kind) {\n case \"text\":\n case \"string\":\n case \"number\":\n case \"pipe-value\":\n continue;\n case \"map\":\n for (const entry of node.entries) {\n this.collectReferencedBindings(entry.value, references);\n }\n continue;\n case \"list\":\n case \"tuple\":\n for (const item of node.items) {\n this.collectReferencedBindings(item, references);\n }\n continue;\n case \"unary-op\":\n this.collectReferencedBindings(node.operand, references);\n continue;\n case \"binary-op\":\n this.collectReferencedBindings(node.left, references);\n this.collectReferencedBindings(node.right, references);\n continue;\n case \"spread\":\n this.collectReferencedBindings(node.value, references);\n continue;\n case \"invoke\":\n if (!node.name.startsWith(\"@\")) {\n references.add(this.rootBindingName(node.name));\n }\n for (const arg of node.args) {\n this.collectReferencedBindings(arg, references);\n }\n continue;\n case \"block\":\n for (const element of node.elements) {\n this.collectReferencedBindings(element.sequence, references);\n if (element.edit) {\n this.collectReferencedBindings(element.edit.body, references);\n }\n if (element.on) {\n this.collectReferencedBindings(element.on, references);\n }\n if (element.weight) {\n this.collectReferencedBindings(element.weight, references);\n }\n }\n continue;\n case \"angle\":\n for (const statement of node.statements) {\n if (statement.base) {\n this.collectReferencedBindings(statement.base, references);\n } else if (\n statement.kind === \"access\" ||\n !statement.define ||\n statement.path.length > 0\n ) {\n references.add(this.rootBindingName(statement.name));\n }\n\n for (const segment of statement.path) {\n if (segment.kind === \"dynamic\") {\n this.collectReferencedBindings(segment.value, references);\n } else if (segment.kind === \"slice\") {\n if (segment.start) {\n this.collectReferencedBindings(segment.start, references);\n }\n if (segment.end) {\n this.collectReferencedBindings(segment.end, references);\n }\n }\n }\n\n if (statement.kind === \"access\") {\n if (statement.fallback) {\n this.collectReferencedBindings(statement.fallback, references);\n }\n } else {\n this.collectReferencedBindings(statement.value, references);\n }\n }\n continue;\n case \"function\":\n this.collectReferencedBindings(node.body, references);\n continue;\n }\n }\n }\n\n private validateSequenceBindings(\n sequence: Sequence,\n locals: Map<string, TrackedBinding>[],\n globals: Map<string, TrackedBinding>\n ): void {\n for (const node of sequence.nodes) {\n this.validateBindingNode(node, locals, globals);\n }\n }\n\n private validateBindingNode(\n node: SequenceNode,\n locals: Map<string, TrackedBinding>[],\n globals: Map<string, TrackedBinding>\n ): void {\n switch (node.kind) {\n case \"text\":\n case \"string\":\n case \"number\":\n case \"pipe-value\":\n return;\n case \"map\":\n for (const entry of node.entries) {\n this.validateSequenceBindings(entry.value, locals, globals);\n }\n return;\n case \"list\":\n case \"tuple\":\n for (const item of node.items) {\n this.validateSequenceBindings(item, locals, globals);\n }\n return;\n case \"unary-op\":\n this.validateSequenceBindings(node.operand, locals, globals);\n return;\n case \"binary-op\":\n this.validateSequenceBindings(node.left, locals, globals);\n this.validateSequenceBindings(node.right, locals, globals);\n return;\n case \"spread\":\n this.validateSequenceBindings(node.value, locals, globals);\n return;\n case \"invoke\": {\n const binding = this.resolveTrackedBinding(\n this.rootBindingName(node.name),\n false,\n 0,\n locals,\n globals\n );\n if (\n binding?.role === \"fallible_optional_arg\" &&\n !node.name.startsWith(\"@\") &&\n !node.name.includes(\"/\")\n ) {\n compilerError(\n this.#reporter,\n \"R0067\",\n `access to optional argument '${node.name}' can fail; add a fallback to the accessor or specify a default argument`,\n node.span.start,\n node.span.end,\n node.name\n );\n }\n for (const arg of node.args) {\n this.validateSequenceBindings(arg, locals, globals);\n }\n return;\n }\n case \"block\":\n locals.push(new Map());\n try {\n for (const element of node.elements) {\n this.validateSequenceBindings(element.sequence, locals, globals);\n if (element.edit) {\n this.validateSequenceBindings(element.edit.body, locals, globals);\n }\n if (element.on) {\n this.validateSequenceBindings(element.on, locals, globals);\n }\n if (element.weight) {\n this.validateSequenceBindings(element.weight, locals, globals);\n }\n }\n } finally {\n locals.pop();\n }\n return;\n case \"function\":\n if (node.name != null && !node.name.includes(\"/\")) {\n this.trackBindingDefinition(\n node.name,\n node.global,\n node.descope,\n node.isConst,\n \"normal\",\n node.span.start,\n node.span.end,\n locals,\n globals\n );\n }\n\n locals.push(new Map());\n try {\n for (const param of node.params) {\n if (param.isLazy && param.variadic !== \"none\") {\n compilerError(\n this.#reporter,\n \"R0029\",\n \"lazy parameters cannot be variadic\",\n param.span.start,\n param.span.end,\n param.name\n );\n }\n\n if (param.defaultValue) {\n this.validateSequenceBindings(\n param.defaultValue,\n locals,\n globals\n );\n }\n\n this.trackBindingDefinition(\n param.name,\n false,\n 0,\n false,\n param.optional && !param.defaultValue\n ? \"fallible_optional_arg\"\n : \"normal\",\n param.span.start,\n param.span.end,\n locals,\n globals\n );\n }\n\n this.validateSequenceBindings(node.body, locals, globals);\n } finally {\n locals.pop();\n }\n return;\n case \"angle\":\n for (const statement of node.statements) {\n if (statement.base) {\n this.validateSequenceBindings(statement.base, locals, globals);\n }\n for (const segment of statement.path) {\n if (segment.kind === \"dynamic\") {\n this.validateSequenceBindings(segment.value, locals, globals);\n } else if (segment.kind === \"slice\") {\n if (segment.start) {\n this.validateSequenceBindings(segment.start, locals, globals);\n }\n if (segment.end) {\n this.validateSequenceBindings(segment.end, locals, globals);\n }\n }\n }\n\n if (statement.kind === \"access\") {\n if (statement.fallback) {\n this.validateSequenceBindings(\n statement.fallback,\n locals,\n globals\n );\n } else if (!statement.base) {\n const binding = this.resolveTrackedBinding(\n statement.name,\n statement.global,\n statement.descope,\n locals,\n globals\n );\n if (binding?.role === \"fallible_optional_arg\") {\n compilerError(\n this.#reporter,\n \"R0067\",\n `access to optional argument '${statement.name}' can fail; add a fallback to the accessor or specify a default argument`,\n statement.span.start,\n statement.span.end,\n statement.name\n );\n }\n }\n continue;\n }\n\n this.validateSequenceBindings(statement.value, locals, globals);\n\n if (statement.define) {\n this.trackBindingDefinition(\n statement.name,\n statement.global,\n statement.descope,\n statement.isConst,\n \"normal\",\n statement.span.start,\n statement.span.end,\n locals,\n globals\n );\n continue;\n }\n\n const binding = this.resolveTrackedBinding(\n statement.name,\n statement.global,\n statement.descope,\n locals,\n globals\n );\n if (binding?.isConst) {\n compilerError(\n this.#reporter,\n \"R0100\",\n `reassignment of known constant '${statement.name}'`,\n statement.span.start,\n statement.span.end,\n statement.name\n );\n }\n }\n return;\n }\n }\n\n private resolveTrackedBinding(\n name: string,\n global: boolean,\n descope: number,\n locals: readonly Map<string, TrackedBinding>[],\n globals: ReadonlyMap<string, TrackedBinding>\n ): TrackedBinding | undefined {\n const baseName = this.rootBindingName(name);\n\n if (global) {\n return globals.get(baseName);\n }\n\n if (descope > 0) {\n return (\n locals[locals.length - 1 - descope]?.get(baseName) ??\n globals.get(baseName)\n );\n }\n\n for (let index = locals.length - 1; index >= 0; index -= 1) {\n const binding = locals[index]?.get(baseName);\n if (binding) {\n return binding;\n }\n }\n\n return globals.get(baseName);\n }\n\n private trackBindingDefinition(\n name: string,\n global: boolean,\n descope: number,\n isConst: boolean,\n role: BindingRole,\n start: number,\n end: number,\n locals: Map<string, TrackedBinding>[],\n globals: Map<string, TrackedBinding>\n ): void {\n const baseName = this.rootBindingName(name);\n const target = global\n ? globals\n : descope > 0\n ? locals[locals.length - 1 - descope]\n : locals[locals.length - 1];\n\n if (!target) {\n return;\n }\n\n if (target.get(baseName)?.isConst) {\n compilerError(\n this.#reporter,\n \"R0101\",\n `redefinition of known constant '${baseName}'`,\n start,\n end,\n baseName\n );\n }\n\n target.set(baseName, {\n isConst,\n role\n });\n }\n\n private rootBindingName(name: string): string {\n return name.split(\"/\")[0] ?? name;\n }\n\n private replacePipeValueInSequence(\n sequence: Sequence,\n replacement: Sequence\n ): { readonly sequence: Sequence; readonly used: boolean } {\n const nodes: SequenceNode[] = [];\n let used = false;\n\n for (const node of sequence.nodes) {\n const replaced = this.replacePipeValueInNode(node, replacement);\n used ||= replaced.used;\n nodes.push(...replaced.nodes);\n }\n\n return {\n sequence: {\n kind: \"sequence\",\n nodes\n },\n used\n };\n }\n\n private replacePipeValueInNode(\n node: SequenceNode,\n replacement: Sequence\n ): { readonly nodes: readonly SequenceNode[]; readonly used: boolean } {\n if (node.kind === \"pipe-value\") {\n return {\n nodes: [...replacement.nodes],\n used: true\n };\n }\n\n if (node.kind === \"invoke\") {\n let used = false;\n const args = node.args.map((arg) => {\n const replaced = this.replacePipeValueInSequence(arg, replacement);\n used ||= replaced.used;\n return replaced.sequence;\n });\n return { nodes: [{ ...node, args }], used };\n }\n\n if (node.kind === \"spread\") {\n const replaced = this.replacePipeValueInSequence(node.value, replacement);\n return {\n nodes: [{ ...node, value: replaced.sequence }],\n used: replaced.used\n };\n }\n\n if (node.kind === \"list\" || node.kind === \"tuple\") {\n let used = false;\n const items = node.items.map((item) => {\n const replaced = this.replacePipeValueInSequence(item, replacement);\n used ||= replaced.used;\n return replaced.sequence;\n });\n return { nodes: [{ ...node, items }], used };\n }\n\n if (node.kind === \"map\") {\n let used = false;\n const entries = node.entries.map((entry) => {\n const replaced = this.replacePipeValueInSequence(\n entry.value,\n replacement\n );\n used ||= replaced.used;\n return { ...entry, value: replaced.sequence };\n });\n return { nodes: [{ ...node, entries }], used };\n }\n\n if (node.kind === \"unary-op\") {\n const replaced = this.replacePipeValueInSequence(\n node.operand,\n replacement\n );\n return {\n nodes: [{ ...node, operand: replaced.sequence }],\n used: replaced.used\n };\n }\n\n if (node.kind === \"binary-op\") {\n const left = this.replacePipeValueInSequence(node.left, replacement);\n const right = this.replacePipeValueInSequence(node.right, replacement);\n return {\n nodes: [{ ...node, left: left.sequence, right: right.sequence }],\n used: left.used || right.used\n };\n }\n\n if (node.kind === \"function\") {\n const body = this.replacePipeValueInSequence(node.body, replacement);\n return { nodes: [{ ...node, body: body.sequence }], used: body.used };\n }\n\n if (node.kind === \"block\") {\n let used = false;\n const elements = node.elements.map((element) => {\n const sequence = this.replacePipeValueInSequence(\n element.sequence,\n replacement\n );\n used ||= sequence.used;\n const edit = element.edit\n ? this.replacePipeValueInSequence(element.edit.body, replacement)\n : null;\n const on = element.on\n ? this.replacePipeValueInSequence(element.on, replacement)\n : null;\n const weight = element.weight\n ? this.replacePipeValueInSequence(element.weight, replacement)\n : null;\n used ||= edit?.used ?? false;\n used ||= on?.used ?? false;\n used ||= weight?.used ?? false;\n return {\n sequence: sequence.sequence,\n ...(edit\n ? {\n edit: {\n ...(element.edit?.name ? { name: element.edit.name } : {}),\n body: edit.sequence\n } satisfies BlockEditDirective\n }\n : {}),\n ...(on ? { on: on.sequence } : {}),\n ...(weight ? { weight: weight.sequence } : {})\n };\n });\n return { nodes: [{ ...node, elements }], used };\n }\n\n if (node.kind === \"angle\") {\n let used = false;\n const statements = node.statements.map((statement) => {\n const base = statement.base\n ? this.replacePipeValueInSequence(statement.base, replacement)\n : null;\n used ||= base?.used ?? false;\n const path = statement.path.map((segment) => {\n if (segment.kind === \"dynamic\") {\n const replaced = this.replacePipeValueInSequence(\n segment.value,\n replacement\n );\n used ||= replaced.used;\n return { ...segment, value: replaced.sequence };\n }\n if (segment.kind === \"slice\") {\n const start = segment.start\n ? this.replacePipeValueInSequence(segment.start, replacement)\n : null;\n const end = segment.end\n ? this.replacePipeValueInSequence(segment.end, replacement)\n : null;\n used ||= start?.used ?? false;\n used ||= end?.used ?? false;\n return {\n ...segment,\n ...(start ? { start: start.sequence } : {}),\n ...(end ? { end: end.sequence } : {})\n };\n }\n return segment;\n });\n\n if (statement.kind === \"access\") {\n const fallback = statement.fallback\n ? this.replacePipeValueInSequence(statement.fallback, replacement)\n : null;\n used ||= fallback?.used ?? false;\n return {\n ...statement,\n ...(base ? { base: base.sequence } : {}),\n path,\n ...(fallback ? { fallback: fallback.sequence } : {})\n };\n }\n\n const value = this.replacePipeValueInSequence(\n statement.value,\n replacement\n );\n used ||= value.used;\n return {\n ...statement,\n ...(base ? { base: base.sequence } : {}),\n path,\n value: value.sequence\n };\n });\n return { nodes: [{ ...node, statements }], used };\n }\n\n return { nodes: [node], used: false };\n }\n\n private expect(char: string): void {\n const token = this.nextToken();\n if (token?.type !== \"symbol\" || token.value !== char) {\n const start = token?.start ?? this.currentIndex();\n syntaxError(this.#reporter, `expected '${char}'`, start, start + 1, char);\n }\n }\n}\n\nexport function parse(source: string, reporter: Reporter): Sequence {\n return parseTokens(lex(source, reporter), source, reporter);\n}\n\nexport function parseTokens(\n tokens: readonly RantyToken[],\n source: string,\n reporter: Reporter\n): Sequence {\n return new Parser(new TokenReader(tokens, source), reporter).parse();\n}\n","import { CompilerError } from \"../errors\";\nimport type { Reporter } from \"../messages\";\nimport { RantyProgram, type RantyProgramInfo } from \"../program\";\nimport { loadNodeFs } from \"../util\";\nimport { lex } from \"./lexer\";\nimport { reportCompilerMessage } from \"./message\";\nimport { parseTokens } from \"./parser\";\n\nexport function compileString(\n source: string,\n reporter: Reporter,\n _debugEnabled: boolean,\n info: RantyProgramInfo = {}\n): RantyProgram {\n const tokens = lex(source, reporter);\n const root = parseTokens(tokens, source, reporter);\n return new RantyProgram(source, info, root);\n}\n\nexport function compileFile(\n path: string,\n reporter: Reporter,\n debugEnabled: boolean\n): RantyProgram {\n const node = loadNodeFs();\n if (!node) {\n const message = `unable to access the filesystem while compiling '${path}'`;\n reportCompilerMessage(\n reporter,\n \"FILE_SYSTEM_ERROR\",\n message,\n \"error\",\n 0,\n 0,\n path\n );\n throw new CompilerError(\"io\", message);\n }\n\n const sourceName = node.fs.existsSync(path)\n ? node.fs.realpathSync(path)\n : path;\n\n try {\n const source = node.fs.readFileSync(path, \"utf8\");\n return compileString(source, reporter, debugEnabled, {\n path: sourceName\n });\n } catch (error) {\n const message =\n error instanceof Error\n ? error.message\n : `unable to read source file '${sourceName}'`;\n reportCompilerMessage(\n reporter,\n node.fs.existsSync(path) ? \"FILE_SYSTEM_ERROR\" : \"FILE_NOT_FOUND\",\n message,\n \"error\",\n 0,\n 0,\n sourceName\n );\n throw new CompilerError(\"io\", message);\n }\n}\n","import { compileString } from \"./compiler\";\nimport { CompilerError, ModuleResolveError } from \"./errors\";\nimport type { CompilerMessage, Reporter } from \"./messages\";\nimport type { RantyProgram } from \"./program\";\nimport type { Ranty } from \"./ranty\";\nimport type { ModuleResolver } from \"./module-resolver\";\n\nclass CollectingReporter implements Reporter {\n readonly messages: CompilerMessage[] = [];\n\n report(message: CompilerMessage): void {\n this.messages.push(message);\n }\n}\n\nexport class VirtualModuleResolver implements ModuleResolver {\n readonly modules: Map<string, string>;\n\n constructor(modules?: Record<string, string> | Map<string, string>) {\n this.modules =\n modules instanceof Map\n ? new Map(modules)\n : new Map(Object.entries(modules ?? {}));\n }\n\n setModule(modulePath: string, source: string): this {\n this.modules.set(modulePath, source);\n return this;\n }\n\n tryResolve(\n context: Ranty,\n modulePath: string,\n _dependant?: { readonly path?: string },\n reporter?: Reporter\n ): RantyProgram {\n const exact = this.modules.get(modulePath);\n if (exact != null) {\n return this.compileModule(context, modulePath, exact, reporter);\n }\n\n const normalized = modulePath.replace(/^\\.\\//, \"\");\n for (const extension of [\"ranty\", \"rant\"]) {\n const candidate = normalized.endsWith(`.${extension}`)\n ? normalized\n : `${normalized}.${extension}`;\n const source = this.modules.get(candidate);\n if (source != null) {\n return this.compileModule(context, candidate, source, reporter);\n }\n }\n\n throw new ModuleResolveError(modulePath, { kind: \"not_found\" });\n }\n\n private compileModule(\n context: Ranty,\n path: string,\n source: string,\n reporter?: Reporter\n ): RantyProgram {\n const collecting = new CollectingReporter();\n const compositeReporter = reporter ?? collecting;\n\n try {\n return compileString(\n source,\n compositeReporter,\n context.options().debugMode,\n { path }\n );\n } catch (error) {\n if (error instanceof CompilerError) {\n throw new ModuleResolveError(path, {\n kind: \"compile_failed\",\n messages: collecting.messages\n });\n }\n throw error;\n }\n }\n}\n","import { VirtualModuleResolver } from \"../../core/virtual-module-resolver\";\n\nObject.defineProperty(globalThis, \"__rantyBrowserResolverModule\", {\n value: { VirtualModuleResolver },\n configurable: true,\n enumerable: false,\n writable: false\n});\n\nexport { VirtualModuleResolver };\n","export const BUILD_VERSION = \"1.0.0\";\nexport const RANTY_LANG_VERSION = \"1.0.0\";\nexport const DEFAULT_PROGRAM_NAME = \"program\";\nexport const RANTY_FILE_EXTENSION = \"ranty\";\nexport const RANTY_COMPAT_FILE_EXTENSION = \"rant\";\nexport const RANTY_SUPPORTED_FILE_EXTENSIONS = [\n RANTY_FILE_EXTENSION,\n RANTY_COMPAT_FILE_EXTENSION\n] as const;\nexport const MODULES_CACHE_KEY = \"__MODULES\";\n","const INT64_MIN = -(1n << 63n);\nconst INT64_MAX = (1n << 63n) - 1n;\nconst MAX_SAFE_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);\nconst MIN_SAFE_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);\n\nfunction assertRange(value: bigint): bigint {\n if (value < INT64_MIN || value > INT64_MAX) {\n throw new RangeError(`value ${value} is outside the i64 range`);\n }\n\n return value;\n}\n\nexport class RantyInt {\n readonly value: bigint;\n\n private constructor(value: bigint) {\n this.value = assertRange(value);\n }\n\n static from(value: bigint | number | string | RantyInt): RantyInt {\n if (value instanceof RantyInt) {\n return value;\n }\n\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw new TypeError(`expected integer number, got ${value}`);\n }\n\n return new RantyInt(BigInt(value));\n }\n\n if (typeof value === \"string\") {\n return new RantyInt(BigInt(value));\n }\n\n return new RantyInt(value);\n }\n\n toApiValue(): bigint | number {\n if (this.value >= MIN_SAFE_BIGINT && this.value <= MAX_SAFE_BIGINT) {\n return Number(this.value);\n }\n\n return this.value;\n }\n\n toString(): string {\n return this.value.toString();\n }\n}\n\nexport function toExactInt(value: bigint | number | string | RantyInt): bigint {\n return RantyInt.from(value).value;\n}\n","import type { CompilerMessage, Reporter } from \"./messages\";\nimport { RANTY_SUPPORTED_FILE_EXTENSIONS } from \"./constants\";\nimport { CompilerError, ModuleResolveError } from \"./errors\";\nimport type { RantyProgram } from \"./program\";\nimport type { Ranty } from \"./ranty\";\nimport type * as NodeFs from \"node:fs\";\nimport type * as NodePath from \"node:path\";\nimport { loadNodeFs } from \"./util\";\nimport { compileString } from \"./compiler\";\n\nclass CollectingReporter implements Reporter {\n readonly messages: CompilerMessage[] = [];\n\n report(message: CompilerMessage): void {\n this.messages.push(message);\n }\n}\n\nfunction toPosixPath(path: string): string {\n return path.replaceAll(\"\\\\\", \"/\");\n}\n\nexport interface ModuleResolver {\n tryResolve(\n context: Ranty,\n modulePath: string,\n dependant?: { readonly path?: string },\n reporter?: Reporter\n ): RantyProgram;\n}\n\nexport class DefaultModuleResolver implements ModuleResolver {\n static readonly ENV_MODULES_PATH_KEY = \"RANTY_MODULES_PATH\";\n\n readonly enableGlobalModules: boolean;\n readonly localModulesPath: string | undefined;\n\n constructor(\n options: { enableGlobalModules?: boolean; localModulesPath?: string } = {}\n ) {\n this.enableGlobalModules = options.enableGlobalModules ?? true;\n this.localModulesPath = options.localModulesPath;\n }\n\n tryResolve(\n context: Ranty,\n modulePath: string,\n dependant?: { readonly path?: string },\n reporter?: Reporter\n ): RantyProgram {\n const node = loadNodeFs();\n if (!node) {\n throw new ModuleResolveError(modulePath, { kind: \"not_found\" });\n }\n\n const fullModulePath = this.findModulePath(\n node.path,\n node.fs,\n modulePath,\n dependant\n );\n if (!fullModulePath) {\n throw new ModuleResolveError(modulePath, { kind: \"not_found\" });\n }\n\n try {\n const source = node.fs.readFileSync(fullModulePath, \"utf8\");\n const collecting = new CollectingReporter();\n const compositeReporter = reporter ?? collecting;\n try {\n return compileString(\n source,\n compositeReporter,\n context.options().debugMode,\n {\n path: fullModulePath\n }\n );\n } catch (error) {\n if (error instanceof CompilerError) {\n throw new ModuleResolveError(modulePath, {\n kind: \"compile_failed\",\n messages: collecting.messages\n });\n }\n throw error;\n }\n } catch (error) {\n if (error instanceof ModuleResolveError) {\n throw error;\n }\n throw new ModuleResolveError(modulePath, {\n kind: \"file_io_error\",\n error\n });\n }\n }\n\n private findModulePath(\n pathApi: typeof NodePath,\n fsApi: typeof NodeFs,\n modulePath: string,\n dependant?: { readonly path?: string }\n ): string | undefined {\n const absoluteCandidates = pathApi.extname(modulePath)\n ? [modulePath]\n : RANTY_SUPPORTED_FILE_EXTENSIONS.map(\n (extension) => `${modulePath}.${extension}`\n );\n\n if (pathApi.isAbsolute(modulePath)) {\n for (const candidate of absoluteCandidates) {\n if (fsApi.existsSync(candidate)) {\n return fsApi.realpathSync(candidate);\n }\n }\n return undefined;\n }\n\n const roots: string[] = [];\n const dependantPath = dependant?.path;\n if (dependantPath) {\n roots.push(pathApi.dirname(dependantPath));\n }\n\n roots.push(this.localModulesPath ?? process.cwd());\n\n if (this.enableGlobalModules) {\n const globalPath =\n process.env[DefaultModuleResolver.ENV_MODULES_PATH_KEY];\n if (globalPath) {\n roots.push(globalPath);\n }\n }\n\n for (const root of roots) {\n const canonicalRoot = fsApi.existsSync(root)\n ? fsApi.realpathSync(root)\n : root;\n for (const candidate of absoluteCandidates) {\n const joined = pathApi.resolve(canonicalRoot, candidate);\n if (!toPosixPath(joined).startsWith(toPosixPath(canonicalRoot))) {\n continue;\n }\n if (fsApi.existsSync(joined)) {\n return fsApi.realpathSync(joined);\n }\n }\n }\n\n return undefined;\n }\n}\n","import type { Sequence } from \"./lang\";\nimport type { RantyValue } from \"./values\";\n\nexport interface LazyThunk {\n readonly name: string | null;\n readonly expr: Sequence;\n readonly scopes: readonly Map<string, RantyBinding>[];\n}\n\nexport interface PendingLazyState {\n readonly kind: \"pending\";\n readonly thunk: LazyThunk;\n}\n\nexport interface EvaluatingLazyState {\n readonly kind: \"evaluating\";\n readonly thunk: LazyThunk;\n}\n\nexport interface ReadyLazyState {\n readonly kind: \"ready\";\n readonly value: RantyValue;\n}\n\nexport type LazyState = PendingLazyState | EvaluatingLazyState | ReadyLazyState;\n\nexport interface ValueBinding {\n kind: \"value\";\n value: RantyValue;\n readonly const: boolean;\n}\n\nexport interface LazyBinding {\n kind: \"lazy\";\n state: LazyState;\n readonly const: boolean;\n}\n\nexport type RantyBinding = ValueBinding | LazyBinding;\n\nexport function valueBinding(value: RantyValue, isConst = false): RantyBinding {\n return {\n kind: \"value\",\n value,\n const: isConst\n };\n}\n\nexport function lazyBinding(thunk: LazyThunk, isConst = false): RantyBinding {\n return {\n kind: \"lazy\",\n state: {\n kind: \"pending\",\n thunk\n },\n const: isConst\n };\n}\n","import type { RantyValue } from \"./values\";\n\nexport type WhitespaceFormatMode =\n | \"default\"\n | \"ignore-all\"\n | \"verbatim\"\n | \"custom\";\nexport type NumeralSystem =\n | \"west-arabic\"\n | \"east-arabic\"\n | \"persian\"\n | \"roman\"\n | \"babylonian\"\n | \"hex\"\n | \"octal\"\n | \"binary\"\n | \"alpha\";\nexport type Endianness = \"big\" | \"little\";\nexport type SignStyle = \"negative-only\" | \"explicit\" | \"explicit-non-zero\";\nexport type InfinityStyle = \"keyword\" | \"symbol\";\n\nexport interface WhitespaceFormatState {\n mode: WhitespaceFormatMode;\n customValue: RantyValue;\n}\n\nexport interface NumberFormatState {\n system: NumeralSystem;\n alt: boolean;\n precision: number | null;\n padding: number;\n upper: boolean;\n endian: Endianness;\n sign: SignStyle;\n infinity: InfinityStyle;\n groupSep: string;\n decimalSep: string;\n}\n\nexport interface OutputFormatState {\n whitespace: WhitespaceFormatState;\n number: NumberFormatState;\n}\n\nexport function defaultOutputFormatState(): OutputFormatState {\n return {\n whitespace: {\n mode: \"default\",\n customValue: null\n },\n number: {\n system: \"west-arabic\",\n alt: false,\n precision: null,\n padding: 0,\n upper: false,\n endian: \"big\",\n sign: \"negative-only\",\n infinity: \"keyword\",\n groupSep: \"\",\n decimalSep: \"\"\n }\n };\n}\n","import { toExactInt } from \"./int64\";\n\nconst MASK_64 = (1n << 64n) - 1n;\nconst SPLITMIX_GAMMA = 0x9e3779b97f4a7c15n;\nconst FNV_OFFSET_BASIS = 0xcbf29ce484222325n;\nconst FNV_PRIME = 0x100000001b3n;\n\nfunction mask64(value: bigint): bigint {\n return value & MASK_64;\n}\n\nfunction rotl(value: bigint, shift: bigint): bigint {\n return mask64((value << shift) | (value >> (64n - shift)));\n}\n\nfunction splitMix64(seed: bigint): () => bigint {\n let state = mask64(seed);\n\n return () => {\n state = mask64(state + SPLITMIX_GAMMA);\n let z = state;\n z = mask64((z ^ (z >> 30n)) * 0xbf58476d1ce4e5b9n);\n z = mask64((z ^ (z >> 27n)) * 0x94d049bb133111ebn);\n return mask64(z ^ (z >> 31n));\n };\n}\n\nfunction fnv1a64(bytes: Uint8Array, seed: bigint = FNV_OFFSET_BASIS): bigint {\n let hash = seed;\n\n for (const byte of bytes) {\n hash ^= BigInt(byte);\n hash = mask64(hash * FNV_PRIME);\n }\n\n return hash;\n}\n\nfunction encodeUtf8(input: string): Uint8Array {\n return new TextEncoder().encode(input);\n}\n\nfunction encodeU64(value: bigint): Uint8Array {\n const bytes = new Uint8Array(8);\n let remainder = mask64(value);\n\n for (let index = 0; index < 8; index += 1) {\n bytes[index] = Number(remainder & 0xffn);\n remainder >>= 8n;\n }\n\n return bytes;\n}\n\nfunction encodeI64(value: bigint): Uint8Array {\n return encodeU64(mask64(value));\n}\n\nfunction leadingZeros64(value: bigint): number {\n if (value === 0n) {\n return 64;\n }\n\n return 64 - value.toString(2).length;\n}\n\nfunction wrapI64(value: bigint): bigint {\n return BigInt.asIntN(64, value);\n}\n\nexport class RantyRng {\n #seed: bigint;\n #state: [bigint, bigint, bigint, bigint];\n\n constructor(seed: bigint | number) {\n this.#seed = BigInt(seed);\n const nextSeed = splitMix64(this.#seed);\n this.#state = [nextSeed(), nextSeed(), nextSeed(), nextSeed()];\n }\n\n seed(): bigint {\n return this.#seed;\n }\n\n forkU64(seed: bigint | number): RantyRng {\n const hash = fnv1a64(encodeU64(this.#seed), FNV_OFFSET_BASIS);\n return new RantyRng(fnv1a64(encodeU64(BigInt(seed)), hash));\n }\n\n forkI64(seed: bigint | number): RantyRng {\n const hash = fnv1a64(encodeU64(this.#seed), FNV_OFFSET_BASIS);\n return new RantyRng(fnv1a64(encodeI64(BigInt(seed)), hash));\n }\n\n forkStr(seed: string): RantyRng {\n const hash = fnv1a64(encodeU64(this.#seed), FNV_OFFSET_BASIS);\n return new RantyRng(fnv1a64(encodeUtf8(seed), hash));\n }\n\n forkRandom(): RantyRng {\n const hash = fnv1a64(encodeU64(this.#seed), FNV_OFFSET_BASIS);\n return new RantyRng(fnv1a64(encodeU64(this.nextU64()), hash));\n }\n\n nextU64(): bigint {\n const [s0, s1, s2, s3] = this.#state;\n const result = mask64(rotl(mask64(s0 + s3), 23n) + s0);\n const t = mask64(s1 << 17n);\n\n this.#state[2] = mask64(s2 ^ s0);\n this.#state[3] = mask64(s3 ^ s1);\n this.#state[1] = mask64(s1 ^ this.#state[2]);\n this.#state[0] = mask64(s0 ^ this.#state[3]);\n this.#state[2] = mask64(this.#state[2] ^ t);\n this.#state[3] = rotl(this.#state[3], 45n);\n\n return result;\n }\n\n nextNormalF64(): number {\n const value = this.nextU64() >> 11n;\n return Number(value) / 9007199254740992;\n }\n\n nextBool(probability: number): boolean {\n const clamped = Math.min(1, Math.max(0, probability));\n return this.nextNormalF64() < clamped;\n }\n\n nextI64(a: bigint | number, b: bigint | number): bigint {\n const av = toExactInt(a);\n const bv = toExactInt(b);\n const min = av < bv ? av : bv;\n const max = av > bv ? av : bv;\n\n if (min === max) {\n return min;\n }\n\n const range = mask64(max - min + 1n);\n if (range === 0n) {\n return wrapI64(this.nextU64());\n }\n\n const zone = mask64((range << BigInt(leadingZeros64(range))) - 1n);\n\n while (true) {\n const value = this.nextU64();\n const product = value * range;\n const hi = product >> 64n;\n const lo = mask64(product);\n\n if (lo <= zone) {\n return wrapI64(min + hi);\n }\n }\n }\n\n nextF64(a: number, b: number): number {\n if (Object.is(a, b)) {\n return a;\n }\n\n const min = Math.min(a, b);\n const max = Math.max(a, b);\n return min + (max - min) * this.nextNormalF64();\n }\n\n nextUsize(max: number): number {\n if (!Number.isInteger(max) || max <= 0) {\n throw new RangeError(`max must be a positive integer, got ${max}`);\n }\n\n return Number(this.nextU64() % BigInt(max));\n }\n\n nextWeightedIndex(\n max: number,\n weights: readonly number[],\n weightSum: number\n ): number {\n if (weightSum > 0) {\n let remainder = this.nextF64(0, weightSum);\n for (const [index, weight] of weights.entries()) {\n if (weight === 0) {\n continue;\n }\n\n if (remainder < weight) {\n return index;\n }\n\n remainder -= weight;\n }\n }\n\n return max - 1;\n }\n}\n","import { RuntimeError, RuntimeErrorType } from \"./errors\";\nimport type { RantyValue } from \"./values\";\n\nconst mapPrototypes = new WeakMap<\n Map<string, RantyValue>,\n Map<string, RantyValue> | null\n>();\n\nexport function getMapPrototype(\n map: Map<string, RantyValue>\n): Map<string, RantyValue> | null {\n return mapPrototypes.get(map) ?? null;\n}\n\nexport function wouldCreatePrototypeCycle(\n map: Map<string, RantyValue>,\n proto: Map<string, RantyValue>\n): boolean {\n if (map === proto) {\n return true;\n }\n\n const visited = new Set<Map<string, RantyValue>>([map]);\n let current: Map<string, RantyValue> | null = proto;\n\n while (current) {\n if (visited.has(current)) {\n return true;\n }\n visited.add(current);\n current = getMapPrototype(current);\n }\n\n return false;\n}\n\nexport function setMapPrototype(\n map: Map<string, RantyValue>,\n proto: Map<string, RantyValue> | null\n): void {\n if (proto && wouldCreatePrototypeCycle(map, proto)) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"set-proto: prototype assignment would create a cycle\"\n );\n }\n\n mapPrototypes.set(map, proto);\n}\n\nexport function getMapChainValue(\n map: Map<string, RantyValue>,\n key: string\n):\n | { readonly found: true; readonly value: RantyValue }\n | { readonly found: false } {\n let current: Map<string, RantyValue> | null = map;\n\n while (current) {\n if (current.has(key)) {\n return {\n found: true,\n value: current.get(key) ?? null\n };\n }\n current = getMapPrototype(current);\n }\n\n return { found: false };\n}\n","import { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport type { Ranty } from \"../ranty\";\nimport { getCollectionKind, type RantyRange, type RantyValue } from \"../values\";\nimport { renderRantyValue } from \"../util\";\n\nexport type Builtin = (...args: readonly RantyValue[]) => RantyValue;\n\nexport function addBuiltin(context: Ranty, name: string, fn: Builtin): void {\n context.setGlobalConst(name, fn);\n}\n\nexport function addConst(\n context: Ranty,\n name: string,\n value: RantyValue\n): void {\n context.setGlobalConst(name, value);\n}\n\nexport function expectArgCount(\n name: string,\n args: readonly RantyValue[],\n count: number\n): void {\n if (args.length !== count) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'${name}' expected ${count} argument(s), got ${args.length}`\n );\n }\n}\n\nexport function expectMinArgCount(\n name: string,\n args: readonly RantyValue[],\n count: number\n): void {\n if (args.length < count) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'${name}' expected at least ${count} argument(s), got ${args.length}`\n );\n }\n}\n\nexport function argAt(args: readonly RantyValue[], index: number): RantyValue {\n const value = args[index];\n if (value === undefined) {\n throw new RuntimeError(\n RuntimeErrorType.InternalError,\n `missing argument at index ${index}`\n );\n }\n return value;\n}\n\nexport function asNumber(value: RantyValue, name: string): number {\n if (typeof value === \"number\") {\n return value;\n }\n\n if (typeof value === \"bigint\") {\n return Number(value);\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a numeric value`\n );\n}\n\nexport function asInteger(value: RantyValue, name: string): bigint {\n if (typeof value === \"bigint\") {\n return value;\n }\n\n if (typeof value === \"number\" && Number.isInteger(value)) {\n return BigInt(value);\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected an integer value`\n );\n}\n\nexport function asString(value: RantyValue, name: string): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a string value`\n );\n}\n\nexport function asList(value: RantyValue, name: string): RantyValue[] {\n if (Array.isArray(value)) {\n return value;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a list or tuple value`\n );\n}\n\nexport function asMap(\n value: RantyValue,\n name: string\n): Map<string, RantyValue> {\n if (value instanceof Map) {\n return value;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a map value`\n );\n}\n\nexport function asCallable(value: RantyValue, name: string): Builtin {\n if (typeof value === \"function\") {\n return value;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.CannotInvokeValue,\n `'${name}' expected a callable value`\n );\n}\n\nexport function isTruthy(value: RantyValue): boolean {\n if (value == null) {\n return false;\n }\n\n if (typeof value === \"boolean\") {\n return value;\n }\n\n if (typeof value === \"number\") {\n return !Number.isNaN(value) && value !== 0;\n }\n\n if (typeof value === \"bigint\") {\n return value !== 0n;\n }\n\n if (typeof value === \"string\") {\n return value.length > 0;\n }\n\n if (Array.isArray(value)) {\n return getCollectionKind(value) === \"tuple\" ? true : value.length > 0;\n }\n\n if (value instanceof Map) {\n return value.size > 0;\n }\n\n return true;\n}\n\nexport function toBoolean(value: RantyValue): boolean {\n return isTruthy(value);\n}\n\nexport function toStringValue(value: RantyValue): string {\n return renderRantyValue(value);\n}\n\nexport function toFloat(value: RantyValue, name: string): number {\n if (typeof value === \"number\") {\n return value;\n }\n if (typeof value === \"bigint\") {\n return Number(value);\n }\n if (typeof value === \"string\" && value.trim() !== \"\") {\n const parsed = Number(value);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' could not convert value to float`\n );\n}\n\nexport function toInt(value: RantyValue, name: string): bigint {\n if (typeof value === \"bigint\") {\n return value;\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return BigInt(Math.trunc(value));\n }\n if (typeof value === \"string\" && value.trim() !== \"\") {\n try {\n if (value.includes(\".\")) {\n return BigInt(Math.trunc(Number(value)));\n }\n return BigInt(value);\n } catch {\n return failToInt(name);\n }\n }\n\n return failToInt(name);\n}\n\nfunction failToInt(name: string): never {\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' could not convert value to int`\n );\n}\n\nexport function areEqual(left: RantyValue, right: RantyValue): boolean {\n if (typeof left === \"function\" || typeof right === \"function\") {\n return left === right;\n }\n\n if (typeof left === \"bigint\" && typeof right === \"number\") {\n return (\n Number.isFinite(right) &&\n Number.isInteger(right) &&\n left === BigInt(right)\n );\n }\n\n if (typeof left === \"number\" && typeof right === \"bigint\") {\n return (\n Number.isFinite(left) && Number.isInteger(left) && BigInt(left) === right\n );\n }\n\n if (left instanceof Map && right instanceof Map) {\n if (left.size !== right.size) {\n return false;\n }\n\n for (const [key, value] of left.entries()) {\n if (!right.has(key) || !areEqual(value, right.get(key) ?? null)) {\n return false;\n }\n }\n\n return true;\n }\n\n if (Array.isArray(left) && Array.isArray(right)) {\n return (\n left.length === right.length &&\n left.every((value, index) => areEqual(value, argAt(right, index)))\n );\n }\n\n return Object.is(left, right);\n}\n\nexport function mapKey(value: RantyValue): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return renderRantyValue(value);\n}\n\nexport function rangeValue(\n start: bigint | number,\n end: bigint | number,\n step?: bigint | number\n): RantyRange {\n return {\n type: \"range\",\n start,\n end,\n ...(step === undefined ? {} : { step })\n };\n}\n\nexport function numericExtrema(\n args: readonly RantyValue[],\n name: string,\n mode: \"min\" | \"max\"\n): RantyValue {\n expectMinArgCount(name, args, 1);\n const values: number[] = [];\n const visit = (value: RantyValue): void => {\n if (Array.isArray(value)) {\n for (const item of value) {\n visit(item);\n }\n return;\n }\n values.push(asNumber(value, name));\n };\n\n for (const arg of args) {\n visit(arg);\n }\n return mode === \"min\" ? Math.min(...values) : Math.max(...values);\n}\n","import { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport { toExactInt } from \"../int64\";\nimport { lazyBinding, valueBinding, type RantyBinding } from \"../binding\";\nimport type {\n AngleAccessStatement,\n AnglePathSegment,\n AngleNode,\n AngleSetStatement,\n BinaryOpNode,\n BlockElementNode,\n BlockNode,\n FunctionDefNode,\n InvocationNode,\n ListLiteralNode,\n Sequence,\n SequenceNode\n} from \"../lang\";\nimport { getMapChainValue } from \"../map-proto\";\nimport type { RantyProgram } from \"../program\";\nimport type { Ranty } from \"../ranty\";\nimport {\n areEqual,\n asInteger,\n expectArgCount,\n isTruthy,\n toFloat\n} from \"../stdlib/shared\";\nimport { renderRantyValue } from \"../util\";\nimport {\n getCollectionKind,\n isTemporalValue,\n makeCollectionValue,\n makeListValue,\n makeTemporalValue,\n makeTupleValue,\n type RantyRange,\n type RantyAttributeValue,\n type RantySelectorValue,\n type RantyValue\n} from \"../values\";\n\nconst BRANCH_ATTRIBUTES = new Set<RantyAttributeValue[\"name\"]>([\n \"if\",\n \"elseif\",\n \"else\"\n]);\nconst SILENT_ATTRIBUTE_INVOCATIONS = new Set([\n \"rep\",\n \"sep\",\n \"sel\",\n \"if\",\n \"elseif\",\n \"else\",\n \"match\",\n \"mut\",\n \"reset-attrs\"\n]);\nconst SILENT_SIDE_EFFECT_INVOCATIONS = new Set([\n \"@require\",\n \"set-proto\",\n \"remove\",\n \"take\"\n]);\nconst USER_FUNCTION = Symbol(\"ranty-js.user-function\");\n\ninterface UserFunctionMeta {\n readonly node: FunctionDefNode;\n readonly scopes: readonly Map<string, RantyBinding>[];\n}\n\ntype UserFunctionValue = ((...args: readonly RantyValue[]) => RantyValue) & {\n readonly [USER_FUNCTION]?: UserFunctionMeta;\n};\n\nclass ReturnSignal {\n readonly value: RantyValue;\n\n constructor(value: RantyValue) {\n this.value = value;\n }\n}\n\nclass ContinueSignal {\n readonly value: RantyValue;\n\n constructor(value: RantyValue) {\n this.value = value;\n }\n}\n\nclass BreakSignal {\n readonly value: RantyValue;\n\n constructor(value: RantyValue) {\n this.value = value;\n }\n}\n\ninterface ActiveBlockState {\n stepIndex: number;\n readonly totalSteps: number | null;\n readonly isRepeater: boolean;\n}\n\ninterface BlockRepetitionPlan {\n readonly count: number | null;\n readonly totalSteps: number | null;\n}\n\ninterface TemporalArgBinding {\n readonly index: number;\n readonly values: readonly RantyValue[];\n}\n\ninterface TemporalDimension {\n readonly bindings: readonly TemporalArgBinding[];\n readonly length: number;\n}\n\ninterface PendingBranchAttribute {\n readonly type: \"branch-attribute\";\n readonly name: \"if\" | \"elseif\" | \"else\";\n readonly condition?: Sequence;\n}\n\ntype PendingAttribute = RantyAttributeValue | PendingBranchAttribute;\n\nfunction isAttributeValue(value: unknown): value is RantyAttributeValue {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"attribute\"\n );\n}\n\nfunction isSelectorValue(value: unknown): value is RantySelectorValue {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"selector\"\n );\n}\n\nfunction isRangeValue(value: unknown): value is RantyRange {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"range\"\n );\n}\n\nfunction rangeStep(range: RantyRange): bigint | number {\n const isBig =\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\" ||\n typeof range.step === \"bigint\" ||\n typeof range.step === \"object\";\n\n if (range.step !== undefined) {\n if (isBig) {\n const raw =\n typeof range.step === \"bigint\" ? range.step : toExactInt(range.step);\n if (raw === 0n) {\n return 0n;\n }\n const magnitude = raw < 0n ? -raw : raw;\n return toExactInt(range.start) <= toExactInt(range.end)\n ? magnitude\n : -magnitude;\n }\n\n const raw = Number(range.step);\n if (raw === 0) {\n return 0;\n }\n const magnitude = Math.abs(raw);\n return Number(range.start) <= Number(range.end) ? magnitude : -magnitude;\n }\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\"\n ) {\n return toExactInt(range.start) <= toExactInt(range.end) ? 1n : -1n;\n }\n return Number(range.start) <= Number(range.end) ? 1 : -1;\n}\n\nfunction rangeLength(range: RantyRange): number {\n const step = rangeStep(range);\n\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof step === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\"\n ) {\n const start = toExactInt(range.start);\n const end = toExactInt(range.end);\n const stride = typeof step === \"bigint\" ? step : toExactInt(step);\n if (stride === 0n) {\n return 0;\n }\n if ((stride > 0n && start >= end) || (stride < 0n && start <= end)) {\n return 0;\n }\n const distance = stride > 0n ? end - start : start - end;\n const magnitude = stride > 0n ? stride : -stride;\n return Number((distance + magnitude - 1n) / magnitude);\n }\n\n const start = Number(range.start);\n const end = Number(range.end);\n const stride = Number(step);\n if (\n !Number.isFinite(start) ||\n !Number.isFinite(end) ||\n !Number.isFinite(stride) ||\n stride === 0\n ) {\n return 0;\n }\n if ((stride > 0 && start >= end) || (stride < 0 && start <= end)) {\n return 0;\n }\n return Math.max(0, Math.ceil(Math.abs((end - start) / stride)));\n}\n\nfunction rangeValueAt(range: RantyRange, index: number): RantyValue {\n const step = rangeStep(range);\n if (\n typeof range.start === \"bigint\" ||\n typeof step === \"bigint\" ||\n typeof range.start === \"object\"\n ) {\n const start = toExactInt(range.start);\n const stride = typeof step === \"bigint\" ? step : toExactInt(step);\n return start + BigInt(index) * stride;\n }\n\n return Number(range.start) + index * Number(step);\n}\n\nfunction addValues(left: RantyValue, right: RantyValue): RantyValue {\n if (left == null && right == null) {\n return null;\n }\n if (right == null) {\n return left;\n }\n if (left == null) {\n return right;\n }\n\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left + right;\n }\n if (typeof left === \"bigint\" && typeof right === \"number\") {\n return Number.isInteger(right)\n ? left + BigInt(right)\n : Number(left) + right;\n }\n if (typeof left === \"number\" && typeof right === \"bigint\") {\n return Number.isInteger(left) ? BigInt(left) + right : left + Number(right);\n }\n if (typeof left === \"number\" && typeof right === \"number\") {\n return left + right;\n }\n if (typeof left === \"boolean\" && typeof right === \"boolean\") {\n return BigInt(Number(left) + Number(right));\n }\n if (typeof left === \"boolean\" && typeof right === \"bigint\") {\n return BigInt(Number(left)) + right;\n }\n if (typeof left === \"bigint\" && typeof right === \"boolean\") {\n return left + BigInt(Number(right));\n }\n if (typeof left === \"boolean\" && typeof right === \"number\") {\n return Number(left) + right;\n }\n if (typeof left === \"number\" && typeof right === \"boolean\") {\n return left + Number(right);\n }\n if (typeof left === \"string\" && typeof right === \"string\") {\n return left + right;\n }\n if (typeof left === \"string\") {\n return left + renderRantyValue(right);\n }\n if (typeof right === \"string\") {\n return renderRantyValue(left) + right;\n }\n if (Array.isArray(left) && Array.isArray(right)) {\n const kind =\n getCollectionKind(left) === \"tuple\" &&\n getCollectionKind(right) === \"tuple\"\n ? \"tuple\"\n : \"list\";\n return makeCollectionValue(kind, [...left, ...right]);\n }\n if (left instanceof Map && right instanceof Map) {\n const merged = new Map<string, RantyValue>();\n for (const [key, value] of left.entries()) {\n merged.set(key, value);\n }\n for (const [key, value] of right.entries()) {\n merged.set(key, value);\n }\n return merged;\n }\n\n return `${renderRantyValue(left)}${renderRantyValue(right)}`;\n}\n\nfunction numericNumber(value: RantyValue, name: string): number {\n return toFloat(value, name);\n}\n\nfunction compoundAssignedValue(\n op: NonNullable<AngleSetStatement[\"compoundOp\"]>,\n current: RantyValue,\n value: RantyValue\n): RantyValue {\n switch (op) {\n case \"add\":\n return addValues(current, value);\n case \"sub\":\n if (typeof current === \"bigint\" && typeof value === \"bigint\") {\n return current - value;\n }\n return numericNumber(current, op) - numericNumber(value, op);\n case \"mul\":\n if (typeof current === \"bigint\" && typeof value === \"bigint\") {\n return current * value;\n }\n return numericNumber(current, op) * numericNumber(value, op);\n case \"div\":\n if (\n typeof current === \"bigint\" &&\n typeof value === \"bigint\" &&\n value !== 0n &&\n current % value === 0n\n ) {\n return current / value;\n }\n return numericNumber(current, op) / numericNumber(value, op);\n case \"mod\":\n if (typeof current === \"bigint\" && typeof value === \"bigint\") {\n return current % value;\n }\n return numericNumber(current, op) % numericNumber(value, op);\n case \"pow\":\n if (\n typeof current === \"bigint\" &&\n typeof value === \"bigint\" &&\n value >= 0n\n ) {\n return current ** value;\n }\n return numericNumber(current, op) ** numericNumber(value, op);\n case \"and\":\n return isTruthy(current) && isTruthy(value);\n case \"or\":\n return isTruthy(current) || isTruthy(value);\n case \"xor\":\n return isTruthy(current) !== isTruthy(value);\n }\n}\n\nexport class VM {\n readonly engine: Ranty;\n readonly program: RantyProgram;\n #scopes: Map<string, RantyBinding>[] = [new Map()];\n #blocks: ActiveBlockState[] = [];\n #functionDepth = 0;\n\n constructor(engine: Ranty, program: RantyProgram) {\n this.engine = engine;\n this.program = program;\n }\n\n run(): RantyValue {\n return renderRantyValue(this.runRaw());\n }\n\n runRaw(): RantyValue {\n return this.engine.withActiveVm(this, () => {\n try {\n return this.materializeValue(\n this.evaluateSequenceValue(this.program.root)\n );\n } catch (error) {\n if (error instanceof ReturnSignal) {\n return this.materializeValue(error.value);\n }\n if (error instanceof ContinueSignal || error instanceof BreakSignal) {\n throw new RuntimeError(\n RuntimeErrorType.ControlFlowError,\n \"no reachable repeater to interrupt\"\n );\n }\n throw error;\n }\n });\n }\n\n runWith(args: Record<string, RantyValue>): RantyValue {\n const previous = new Map<string, RantyBinding | undefined>();\n\n for (const [key, value] of Object.entries(args)) {\n previous.set(key, this.engine.getGlobalBinding(key));\n this.engine.setGlobal(key, value);\n }\n\n try {\n return this.run();\n } finally {\n for (const [key, binding] of previous.entries()) {\n if (binding === undefined) {\n this.engine.deleteGlobal(key);\n } else {\n this.engine.setGlobalBindingForce(key, binding);\n }\n }\n }\n }\n\n readBindingValue(binding: RantyBinding): RantyValue {\n if (binding.kind === \"value\") {\n return binding.value;\n }\n\n if (binding.state.kind === \"ready\") {\n return binding.state.value;\n }\n\n if (binding.state.kind === \"evaluating\") {\n throw new RuntimeError(\n RuntimeErrorType.LazyBindingCycle,\n \"lazy binding cycle detected\"\n );\n }\n\n const thunk = binding.state.thunk;\n const previousScopes = this.#scopes;\n binding.state = {\n kind: \"evaluating\",\n thunk\n };\n\n this.#scopes = [...thunk.scopes];\n try {\n const value = this.evaluateSequenceValue(thunk.expr);\n binding.state = {\n kind: \"ready\",\n value\n };\n return value;\n } catch (error) {\n binding.state = {\n kind: \"pending\",\n thunk\n };\n throw error;\n } finally {\n this.#scopes = previousScopes;\n }\n }\n\n private evaluateSequenceValue(sequence: Sequence): RantyValue {\n const values: RantyValue[] = [];\n const pendingAttributes: PendingAttribute[] = [];\n let branchMatched: boolean | null = null;\n\n for (let index = 0; index < sequence.nodes.length; index += 1) {\n const node = sequence.nodes[index];\n if (!node) {\n continue;\n }\n const nextNode = sequence.nodes[index + 1];\n const normalizedText =\n node.kind === \"text\"\n ? this.normalizeBridgedText(node, nextNode)\n : undefined;\n\n if (node.kind === \"text\") {\n const escapedWhitespace = this.normalizedEscapedWhitespaceText(node);\n if (escapedWhitespace !== undefined) {\n if (escapedWhitespace.length > 0) {\n branchMatched = null;\n values.push(escapedWhitespace);\n }\n continue;\n }\n\n if (\n (normalizedText ?? node.value).trim().length === 0 &&\n values.length === 0 &&\n pendingAttributes.length === 0 &&\n branchMatched === null &&\n !this.isPureWhitespaceSequence(sequence)\n ) {\n continue;\n }\n\n const functionWhitespace = this.normalizeFunctionBodyWhitespace(\n sequence.nodes,\n index,\n normalizedText ?? node.value\n );\n if (functionWhitespace !== undefined) {\n if (functionWhitespace.length === 0) {\n continue;\n }\n branchMatched = null;\n values.push(functionWhitespace);\n continue;\n }\n\n const silentWhitespace = this.normalizeSilentAdjacentWhitespace(\n sequence.nodes,\n index,\n normalizedText ?? node.value\n );\n if (silentWhitespace !== undefined) {\n if (silentWhitespace.length === 0) {\n continue;\n }\n branchMatched = null;\n values.push(silentWhitespace);\n continue;\n }\n\n if (pendingAttributes.length === 0 && branchMatched === null) {\n const interstitialWhitespace = this.normalizeInterstitialWhitespace(\n sequence.nodes,\n index,\n normalizedText ?? node.value\n );\n if (interstitialWhitespace !== undefined) {\n if (interstitialWhitespace.length === 0) {\n continue;\n }\n branchMatched = null;\n values.push(interstitialWhitespace);\n continue;\n }\n }\n }\n\n if (node.kind === \"block\") {\n const attributes = [...pendingAttributes];\n pendingAttributes.length = 0;\n\n const branchAttribute = [...attributes]\n .reverse()\n .find((attribute) => this.isBranchAttribute(attribute));\n const blockAttributes = attributes.filter(\n (attribute): attribute is RantyAttributeValue =>\n !this.isBranchAttribute(attribute)\n );\n\n let shouldRun = true;\n if (branchAttribute) {\n switch (branchAttribute.name) {\n case \"if\":\n branchMatched = this.evaluateBranchAttribute(branchAttribute);\n shouldRun = branchMatched;\n break;\n case \"elseif\":\n if (branchMatched === true) {\n shouldRun = false;\n } else {\n branchMatched = this.evaluateBranchAttribute(branchAttribute);\n shouldRun = branchMatched;\n }\n break;\n case \"else\":\n shouldRun = branchMatched !== true;\n branchMatched = true;\n break;\n }\n } else {\n branchMatched = null;\n }\n\n if (shouldRun) {\n try {\n if (this.blockHasEditDirective(node)) {\n this.trimTrailingLayoutValues(values);\n const priorValue =\n values.length === 0 ? null : this.combineValues(values);\n values.length = 0;\n values.push(\n this.evaluateEditBlock(node, blockAttributes, priorValue)\n );\n } else {\n values.push(this.evaluateBlock(node, blockAttributes));\n }\n } catch (error) {\n if (\n error instanceof ReturnSignal ||\n error instanceof ContinueSignal ||\n error instanceof BreakSignal\n ) {\n throw this.withBufferedSequenceValue(error, values);\n }\n throw error;\n }\n }\n continue;\n }\n\n if (node.kind === \"invoke\" && this.isBranchInvocation(node)) {\n pendingAttributes.push({\n type: \"branch-attribute\",\n name: node.name.slice(1) as PendingBranchAttribute[\"name\"],\n ...(node.name === \"@else\" ? {} : { condition: node.args[0] })\n });\n continue;\n }\n\n if (\n node.kind === \"text\" &&\n (normalizedText ?? \"\").trim().length === 0 &&\n (pendingAttributes.length > 0 ||\n branchMatched !== null ||\n (nextNode == null &&\n this.hasSubstantiveOutput(values) &&\n !this.isPureWhitespaceSequence(sequence)) ||\n (!this.hasSubstantiveOutput(values) &&\n !this.isPureWhitespaceSequence(sequence)))\n ) {\n continue;\n }\n\n let value: RantyValue;\n try {\n value =\n node.kind === \"text\"\n ? (normalizedText ?? node.value)\n : this.evaluateNode(node);\n } catch (error) {\n if (\n error instanceof ReturnSignal ||\n error instanceof ContinueSignal ||\n error instanceof BreakSignal\n ) {\n throw this.withBufferedSequenceValue(error, values);\n }\n throw error;\n }\n\n if (isAttributeValue(value)) {\n if (value.name === \"reset\") {\n pendingAttributes.length = 0;\n } else {\n pendingAttributes.push(value);\n }\n continue;\n }\n\n if (pendingAttributes.length > 0) {\n pendingAttributes.length = 0;\n }\n\n if (\n this.isSilentSequenceNode(node) &&\n this.isRenderableEmptyValue(value)\n ) {\n branchMatched = null;\n continue;\n }\n\n branchMatched = null;\n values.push(value);\n }\n\n return this.combineValues(values);\n }\n\n private evaluateNode(node: SequenceNode): RantyValue {\n switch (node.kind) {\n case \"text\":\n case \"string\":\n return node.value;\n case \"number\":\n return node.value;\n case \"pipe-value\":\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n \"pipe value is not available here\"\n );\n case \"map\":\n return this.evaluateMapLiteral(node.entries);\n case \"list\":\n return this.evaluateListLiteral(node);\n case \"tuple\":\n return this.evaluateTupleLiteral(node);\n case \"unary-op\":\n return this.evaluateUnaryOp(node);\n case \"binary-op\":\n return this.evaluateBinaryOp(node);\n case \"spread\":\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n \"spread is only valid in function calls\"\n );\n case \"invoke\":\n return this.invoke(node);\n case \"block\":\n return this.evaluateBlock(node, []);\n case \"angle\":\n return this.evaluateAngle(node);\n case \"function\":\n return this.evaluateFunctionDefinition(node);\n }\n }\n\n private evaluateAngle(node: AngleNode): RantyValue {\n const outputs: RantyValue[] = [];\n\n for (const statement of node.statements) {\n if (statement.kind === \"access\") {\n outputs.push(this.getAngleAccessValue(statement));\n continue;\n }\n\n if (statement.isLazy && !statement.compoundOp) {\n this.setStatementValue(statement);\n continue;\n }\n\n const value = this.sequenceValueOrNothing(statement.value);\n this.setStatementValue(\n statement,\n statement.compoundOp\n ? compoundAssignedValue(\n statement.compoundOp,\n this.getStatementValue(statement),\n value\n )\n : value\n );\n }\n\n return outputs.length === 0 ? null : this.combineValues(outputs);\n }\n\n private getAngleAccessValue(statement: AngleAccessStatement): RantyValue {\n try {\n return this.getStatementValue(statement);\n } catch (error) {\n if (\n statement.fallback &&\n error instanceof RuntimeError &&\n error.errorType === RuntimeErrorType.InvalidAccess\n ) {\n return statement.fallback.nodes.length === 0\n ? null\n : this.evaluateSequenceValue(statement.fallback);\n }\n throw error;\n }\n }\n\n private evaluateFunctionDefinition(node: FunctionDefNode): RantyValue {\n const capturedScopes = [...this.#scopes];\n const fn = ((...args: readonly RantyValue[]): RantyValue => {\n const previousScopes = this.#scopes;\n this.#scopes = [...capturedScopes];\n this.pushScope();\n this.#functionDepth += 1;\n\n try {\n this.bindFunctionParams(node, undefined, args);\n\n try {\n return this.evaluateSequenceValue(node.body);\n } catch (error) {\n if (error instanceof ReturnSignal) {\n return error.value;\n }\n throw error;\n }\n } finally {\n this.#functionDepth = Math.max(0, this.#functionDepth - 1);\n this.#scopes = previousScopes;\n }\n }) as UserFunctionValue;\n Object.defineProperty(fn, USER_FUNCTION, {\n value: {\n node,\n scopes: capturedScopes\n } satisfies UserFunctionMeta,\n configurable: true\n });\n\n if (node.name != null) {\n if (node.global) {\n this.engine.setGlobalBindingForce(\n node.name,\n valueBinding(fn, node.isConst)\n );\n } else if (node.descope > 0 && !node.name.includes(\"/\")) {\n const scope = this.#scopes[this.#scopes.length - 1 - node.descope];\n if (!scope) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `cannot define descoped variable '${node.name}'`\n );\n }\n if (scope.get(node.name)?.const) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n `cannot redefine constant '${node.name}'`\n );\n }\n scope.set(node.name, valueBinding(fn, node.isConst));\n } else if (node.name.includes(\"/\")) {\n const [baseName, ...segments] = this.splitPath(node.name);\n if (!baseName) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n \"function path is empty\"\n );\n }\n this.setNamedPath(\n baseName,\n segments.map(\n (segment) => ({ kind: \"static\", value: segment }) as const\n ),\n fn,\n true,\n node.global,\n node.descope,\n node.isConst\n );\n } else {\n this.defineLocal(node.name, fn, node.isConst);\n }\n return \"\";\n }\n\n return fn;\n }\n\n private bindFunctionParams(\n node: FunctionDefNode,\n argSequences?: readonly Sequence[],\n evaluatedArgs: readonly RantyValue[] = []\n ): void {\n let argIndex = 0;\n\n for (const param of node.params) {\n if (param.variadic !== \"none\") {\n const rest = argSequences\n ? argSequences\n .slice(argIndex)\n .map((arg) => this.evaluateSequenceValue(arg))\n : evaluatedArgs.slice(argIndex);\n if (param.variadic === \"plus\" && rest.length === 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'${node.name ?? \"function\"}' expected at least 1 argument for variadic parameter '${param.name}'`\n );\n }\n this.defineLocal(param.name, makeListValue(rest));\n argIndex = argSequences ? argSequences.length : evaluatedArgs.length;\n continue;\n }\n\n const argSequence = argSequences?.[argIndex];\n if (param.isLazy) {\n if (argSequence) {\n this.defineLocalBinding(\n param.name,\n lazyBinding({\n name: param.name,\n expr: argSequence,\n scopes: [...this.#scopes]\n })\n );\n argIndex += 1;\n continue;\n }\n\n if (param.defaultValue) {\n this.defineLocalBinding(\n param.name,\n lazyBinding({\n name: param.name,\n expr: param.defaultValue,\n scopes: [...this.#scopes]\n })\n );\n } else if (!param.optional) {\n this.defineLocal(param.name, null);\n }\n continue;\n }\n\n const arg = argSequence\n ? this.evaluateSequenceValue(argSequence)\n : evaluatedArgs[argIndex];\n if (arg === undefined) {\n if (param.defaultValue) {\n this.defineLocal(\n param.name,\n this.evaluateSequenceValue(param.defaultValue)\n );\n } else if (!param.optional) {\n this.defineLocal(param.name, null);\n }\n continue;\n }\n\n this.defineLocal(param.name, arg);\n argIndex += 1;\n }\n }\n\n private invokeUserFunction(\n meta: UserFunctionMeta,\n args: readonly Sequence[]\n ): RantyValue {\n const previousScopes = this.#scopes;\n this.#scopes = [...meta.scopes];\n this.pushScope();\n this.#functionDepth += 1;\n\n try {\n this.bindFunctionParams(\n meta.node,\n meta.node.params.some((param) => param.isLazy) ? args : undefined,\n meta.node.params.some((param) => param.isLazy)\n ? []\n : this.evaluateInvocationArgs(args)\n );\n\n try {\n return this.evaluateSequenceValue(meta.node.body);\n } catch (error) {\n if (error instanceof ReturnSignal) {\n return error.value;\n }\n if (error instanceof ContinueSignal || error instanceof BreakSignal) {\n throw new RuntimeError(\n RuntimeErrorType.ControlFlowError,\n \"no reachable repeater to interrupt\"\n );\n }\n throw error;\n }\n } finally {\n this.#functionDepth = Math.max(0, this.#functionDepth - 1);\n this.#scopes = previousScopes;\n }\n }\n\n private evaluateMapLiteral(\n entries: readonly { readonly key: string; readonly value: Sequence }[]\n ): RantyValue {\n const map = new Map<string, RantyValue>();\n for (const entry of entries) {\n map.set(entry.key, this.evaluateSequenceValue(entry.value));\n }\n return map;\n }\n\n private evaluateListLiteral(node: ListLiteralNode): RantyValue {\n return makeListValue(\n node.items.map((item) => this.evaluateSequenceValue(item))\n );\n }\n\n private evaluateTupleLiteral(\n node: Extract<SequenceNode, { readonly kind: \"tuple\" }>\n ): RantyValue {\n return makeTupleValue(\n node.items.map((item) => this.evaluateSequenceValue(item))\n );\n }\n\n private evaluateBlock(\n node: BlockNode,\n attributes: readonly RantyAttributeValue[]\n ): RantyValue {\n const repetition = this.blockRepetitionPlan(\n attributes,\n node.elements.length\n );\n const separator = this.blockSeparator(attributes);\n const selector = this.blockSelector(attributes);\n const mutator = this.blockMutator(attributes);\n const outputs: RantyValue[] = [];\n const isRepeater = attributes.some((attribute) => attribute.name === \"rep\");\n const blockState: ActiveBlockState = {\n stepIndex: 0,\n totalSteps: repetition.totalSteps,\n isRepeater\n };\n\n this.#blocks.push(blockState);\n this.pushScope();\n try {\n for (\n let index = 0;\n repetition.count == null || index < repetition.count;\n index += 1\n ) {\n blockState.stepIndex = index;\n if (index > 0 && separator !== undefined) {\n outputs.push(this.resolveSeparator(separator));\n }\n\n const elementIndex = this.selectBlockElementIndex(\n selector,\n node.elements,\n index\n );\n if (elementIndex == null) {\n continue;\n }\n const element = node.elements[elementIndex] ?? node.elements[0];\n if (element) {\n try {\n outputs.push(\n this.applyMutator(\n this.evaluateSequenceValue(element.sequence),\n mutator\n )\n );\n } catch (error) {\n if (error instanceof ContinueSignal) {\n if (!isRepeater) {\n throw error;\n }\n outputs.push(this.applyMutator(error.value, mutator));\n continue;\n }\n if (error instanceof BreakSignal) {\n if (!isRepeater) {\n throw error;\n }\n outputs.push(this.applyMutator(error.value, mutator));\n break;\n }\n throw error;\n }\n }\n }\n } finally {\n this.popScope();\n this.#blocks.pop();\n }\n\n if (\n outputs.length > 0 &&\n outputs.every(\n (value) => typeof value === \"string\" && value.trim().length === 0\n ) &&\n node.elements.every((element) =>\n this.isSilentOrWhitespaceSequence(element.sequence)\n )\n ) {\n return \"\";\n }\n\n return outputs.length === 0 ? null : this.combineValues(outputs);\n }\n\n private evaluateEditBlock(\n node: BlockNode,\n attributes: readonly RantyAttributeValue[],\n initialValue: RantyValue\n ): RantyValue {\n const repetition = this.blockRepetitionPlan(\n attributes,\n node.elements.length\n );\n const separator = this.blockSeparator(attributes);\n const selector = this.blockSelector(attributes);\n const mutator = this.blockMutator(attributes);\n const outputs: RantyValue[] = [];\n const isRepeater = attributes.some((attribute) => attribute.name === \"rep\");\n const blockState: ActiveBlockState = {\n stepIndex: 0,\n totalSteps: repetition.totalSteps,\n isRepeater\n };\n let current = initialValue;\n\n this.#blocks.push(blockState);\n this.pushScope();\n try {\n for (\n let index = 0;\n repetition.count == null || index < repetition.count;\n index += 1\n ) {\n blockState.stepIndex = index;\n if (index > 0 && separator !== undefined) {\n const resolvedSeparator = this.resolveSeparator(separator);\n if (outputs.length === 0 && !this.isRenderableEmptyValue(current)) {\n current = this.combineValues([current, resolvedSeparator]);\n } else {\n outputs.push(resolvedSeparator);\n }\n }\n\n const elementIndex = this.selectBlockElementIndex(\n selector,\n node.elements,\n index\n );\n if (elementIndex == null) {\n continue;\n }\n const element = node.elements[elementIndex] ?? node.elements[0];\n if (!element) {\n continue;\n }\n\n if (element.edit) {\n const baseValue =\n outputs.length > 0 ? this.combineValues(outputs) : current;\n outputs.length = 0;\n try {\n current = this.applyMutator(\n this.evaluateEditDirective(element.edit, baseValue),\n mutator\n );\n } catch (error) {\n if (error instanceof ContinueSignal) {\n if (!isRepeater) {\n throw error;\n }\n current = this.applyMutator(error.value, mutator);\n continue;\n }\n if (error instanceof BreakSignal) {\n if (!isRepeater) {\n throw error;\n }\n current = this.applyMutator(error.value, mutator);\n break;\n }\n throw error;\n }\n continue;\n }\n\n try {\n if (!this.isRenderableEmptyValue(current)) {\n outputs.push(current);\n current = null;\n }\n outputs.push(\n this.applyMutator(\n this.evaluateSequenceValue(element.sequence),\n mutator\n )\n );\n } catch (error) {\n if (error instanceof ContinueSignal) {\n if (!isRepeater) {\n throw error;\n }\n if (!this.isRenderableEmptyValue(current)) {\n outputs.push(current);\n current = null;\n }\n outputs.push(this.applyMutator(error.value, mutator));\n continue;\n }\n if (error instanceof BreakSignal) {\n if (!isRepeater) {\n throw error;\n }\n if (!this.isRenderableEmptyValue(current)) {\n outputs.push(current);\n current = null;\n }\n outputs.push(this.applyMutator(error.value, mutator));\n break;\n }\n throw error;\n }\n }\n } finally {\n this.popScope();\n this.#blocks.pop();\n }\n\n if (outputs.length === 0) {\n return current;\n }\n if (!this.isRenderableEmptyValue(current)) {\n outputs.unshift(current);\n }\n return this.combineValues(outputs);\n }\n\n private evaluateEditDirective(\n edit: NonNullable<BlockElementNode[\"edit\"]>,\n parentValue: RantyValue\n ): RantyValue {\n this.pushScope();\n try {\n if (edit.name) {\n this.defineLocal(edit.name, parentValue);\n }\n return this.evaluateSequenceValue(edit.body);\n } finally {\n this.popScope();\n }\n }\n\n private evaluateUnaryOp(\n node: Extract<SequenceNode, { readonly kind: \"unary-op\" }>\n ): RantyValue {\n switch (node.op) {\n case \"not\":\n return !isTruthy(this.evaluateSequenceValue(node.operand));\n case \"neg\": {\n const value = this.evaluateSequenceValue(node.operand);\n if (typeof value === \"bigint\") {\n return -value;\n }\n return -toFloat(value, \"@neg\");\n }\n }\n }\n\n private evaluateBinaryOp(node: BinaryOpNode): RantyValue {\n switch (node.op) {\n case \"add\":\n return addValues(\n this.evaluateSequenceValue(node.left),\n this.evaluateSequenceValue(node.right)\n );\n case \"sub\": {\n const left = this.evaluateSequenceValue(node.left);\n const right = this.evaluateSequenceValue(node.right);\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left - right;\n }\n return toFloat(left, \"-\") - toFloat(right, \"-\");\n }\n case \"mul\": {\n const left = this.evaluateSequenceValue(node.left);\n const right = this.evaluateSequenceValue(node.right);\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left * right;\n }\n return toFloat(left, \"*\") * toFloat(right, \"*\");\n }\n case \"div\": {\n const left = this.evaluateSequenceValue(node.left);\n const right = this.evaluateSequenceValue(node.right);\n if (\n typeof left === \"bigint\" &&\n typeof right === \"bigint\" &&\n right !== 0n &&\n left % right === 0n\n ) {\n return left / right;\n }\n return toFloat(left, \"/\") / toFloat(right, \"/\");\n }\n case \"mod\": {\n const left = this.evaluateSequenceValue(node.left);\n const right = this.evaluateSequenceValue(node.right);\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left % right;\n }\n return toFloat(left, \"%\") % toFloat(right, \"%\");\n }\n case \"pow\": {\n const left = this.evaluateSequenceValue(node.left);\n const right = this.evaluateSequenceValue(node.right);\n if (\n typeof left === \"bigint\" &&\n typeof right === \"bigint\" &&\n right >= 0n\n ) {\n return left ** right;\n }\n return toFloat(left, \"**\") ** toFloat(right, \"**\");\n }\n case \"and\": {\n const left = this.evaluateSequenceValue(node.left);\n return isTruthy(left) ? this.evaluateSequenceValue(node.right) : left;\n }\n case \"or\": {\n const left = this.evaluateSequenceValue(node.left);\n return isTruthy(left) ? left : this.evaluateSequenceValue(node.right);\n }\n case \"xor\": {\n const left = this.evaluateSequenceValue(node.left);\n const right = this.evaluateSequenceValue(node.right);\n return isTruthy(left) !== isTruthy(right);\n }\n case \"eq\":\n return areEqual(\n this.evaluateSequenceValue(node.left),\n this.evaluateSequenceValue(node.right)\n );\n case \"neq\":\n return !areEqual(\n this.evaluateSequenceValue(node.left),\n this.evaluateSequenceValue(node.right)\n );\n case \"lt\":\n return (\n toFloat(this.evaluateSequenceValue(node.left), \"@lt\") <\n toFloat(this.evaluateSequenceValue(node.right), \"@lt\")\n );\n case \"le\":\n return (\n toFloat(this.evaluateSequenceValue(node.left), \"@le\") <=\n toFloat(this.evaluateSequenceValue(node.right), \"@le\")\n );\n case \"gt\":\n return (\n toFloat(this.evaluateSequenceValue(node.left), \"@gt\") >\n toFloat(this.evaluateSequenceValue(node.right), \"@gt\")\n );\n case \"ge\":\n return (\n toFloat(this.evaluateSequenceValue(node.left), \"@ge\") >=\n toFloat(this.evaluateSequenceValue(node.right), \"@ge\")\n );\n }\n }\n\n private invoke(node: InvocationNode): RantyValue {\n const special = this.tryInvokeSpecial(node);\n if (special !== undefined) {\n return special;\n }\n\n const value = this.getNamedValue(node.name, true);\n if (value == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `global '${node.name}' does not exist`\n );\n }\n\n const temporal = this.tryInvokeTemporal(value, node);\n if (temporal !== undefined) {\n return temporal;\n }\n\n const userFunction =\n typeof value === \"function\"\n ? (value as UserFunctionValue)[USER_FUNCTION]\n : undefined;\n if (userFunction) {\n return this.invokeUserFunction(userFunction, node.args);\n }\n\n const args = this.evaluateInvocationArgs(node.args);\n\n if (typeof value === \"function\") {\n try {\n return value(...args);\n } catch (error) {\n if (error instanceof ContinueSignal || error instanceof BreakSignal) {\n throw new RuntimeError(\n RuntimeErrorType.ControlFlowError,\n \"no reachable repeater to interrupt\"\n );\n }\n throw error;\n }\n }\n\n if (args.length > 0) {\n throw new RuntimeError(\n RuntimeErrorType.CannotInvokeValue,\n `global '${node.name}' is not callable`\n );\n }\n\n return value;\n }\n\n private evaluateInvocationArgs(args: readonly Sequence[]): RantyValue[] {\n const evaluated: RantyValue[] = [];\n\n for (const arg of args) {\n const spread =\n arg.nodes.length === 1 && arg.nodes[0]?.kind === \"spread\"\n ? arg.nodes[0]\n : null;\n if (!spread) {\n evaluated.push(this.materializeValue(this.evaluateSequenceValue(arg)));\n continue;\n }\n\n const value = this.materializeValue(\n this.evaluateSequenceValue(spread.value)\n );\n if (this.expandSpreadArg(evaluated, value)) {\n continue;\n }\n evaluated.push(value);\n }\n\n return evaluated;\n }\n\n private tryInvokeTemporal(\n value: RantyValue,\n node: InvocationNode\n ): RantyValue | undefined {\n const hasExplicitTemporal = node.args.some((arg) => {\n const spread =\n arg.nodes.length === 1 && arg.nodes[0]?.kind === \"spread\"\n ? arg.nodes[0]\n : null;\n return spread?.temporal === true;\n });\n if (!hasExplicitTemporal) {\n return undefined;\n }\n\n const baseArgs: RantyValue[] = [];\n const explicitTemporalArgs: Array<{\n index: number;\n label: string | null;\n values: readonly RantyValue[];\n }> = [];\n const implicitTemporalArgs: Array<{\n index: number;\n values: readonly RantyValue[];\n }> = [];\n\n for (const arg of node.args) {\n const spread =\n arg.nodes.length === 1 && arg.nodes[0]?.kind === \"spread\"\n ? arg.nodes[0]\n : null;\n if (!spread) {\n const evaluated = this.evaluateSequenceValue(arg);\n if (isTemporalValue(evaluated)) {\n const index = baseArgs.length;\n baseArgs.push(evaluated);\n implicitTemporalArgs.push({ index, values: evaluated.values });\n } else {\n baseArgs.push(this.materializeValue(evaluated));\n }\n continue;\n }\n\n const spreadValue = this.evaluateSequenceValue(spread.value);\n if (spread.temporal) {\n baseArgs.push(null);\n explicitTemporalArgs.push({\n index: baseArgs.length - 1,\n label: spread.label ?? null,\n values: this.temporalItems(spreadValue)\n });\n continue;\n }\n\n const materialized = this.materializeValue(spreadValue);\n if (this.expandSpreadArg(baseArgs, materialized)) {\n continue;\n }\n baseArgs.push(materialized);\n }\n\n const dimensions = this.temporalDimensions(\n explicitTemporalArgs,\n implicitTemporalArgs\n );\n const resolvedArgs = [...baseArgs];\n const results: RantyValue[] = [];\n\n const visit = (dimensionIndex: number): void => {\n if (dimensionIndex < 0) {\n results.push(this.invokeResolvedValue(value, node.name, resolvedArgs));\n return;\n }\n\n const dimension = dimensions[dimensionIndex];\n if (!dimension || dimension.length === 0) {\n visit(dimensionIndex - 1);\n return;\n }\n\n const previous = dimension.bindings.map(\n (binding) => resolvedArgs[binding.index]\n );\n for (let index = 0; index < dimension.length; index += 1) {\n for (const binding of dimension.bindings) {\n resolvedArgs[binding.index] = this.materializeValue(\n binding.values[index] ?? null\n );\n }\n visit(dimensionIndex - 1);\n }\n for (const [bindingIndex, binding] of dimension.bindings.entries()) {\n resolvedArgs[binding.index] = previous[bindingIndex] ?? null;\n }\n };\n\n visit(dimensions.length - 1);\n return makeTemporalValue(results);\n }\n\n private temporalDimensions(\n explicitArgs: readonly {\n index: number;\n label: string | null;\n values: readonly RantyValue[];\n }[],\n implicitArgs: readonly { index: number; values: readonly RantyValue[] }[]\n ): TemporalDimension[] {\n const dimensions: TemporalDimension[] = [];\n const labeled = new Map<string, TemporalArgBinding[]>();\n const labeledOrder: string[] = [];\n\n for (const arg of explicitArgs) {\n if (!arg.label) {\n dimensions.push({\n bindings: [{ index: arg.index, values: arg.values }],\n length: arg.values.length\n });\n continue;\n }\n\n if (!labeled.has(arg.label)) {\n labeled.set(arg.label, []);\n labeledOrder.push(arg.label);\n }\n labeled.get(arg.label)?.push({ index: arg.index, values: arg.values });\n }\n\n for (const label of labeledOrder) {\n const bindings = labeled.get(label) ?? [];\n const length = bindings.reduce(\n (smallest, binding) => Math.min(smallest, binding.values.length),\n Number.POSITIVE_INFINITY\n );\n dimensions.push({\n bindings,\n length: Number.isFinite(length) ? length : 0\n });\n }\n\n for (const arg of implicitArgs) {\n dimensions.push({\n bindings: [{ index: arg.index, values: arg.values }],\n length: arg.values.length\n });\n }\n\n return dimensions;\n }\n\n private temporalItems(value: RantyValue): readonly RantyValue[] {\n if (isTemporalValue(value)) {\n return value.values;\n }\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n return Array.from(value);\n }\n if (isRangeValue(value)) {\n return Array.from({ length: rangeLength(value) }, (_, index) =>\n rangeValueAt(value, index)\n );\n }\n return [this.materializeValue(value)];\n }\n\n private materializeValue(value: RantyValue): RantyValue {\n if (!isTemporalValue(value)) {\n return value;\n }\n return this.combineValues(\n value.values.map((item) => this.materializeValue(item))\n );\n }\n\n private invokeResolvedValue(\n value: RantyValue,\n name: string,\n args: readonly RantyValue[]\n ): RantyValue {\n if (typeof value === \"function\") {\n try {\n return value(...args);\n } catch (error) {\n if (error instanceof ContinueSignal || error instanceof BreakSignal) {\n throw new RuntimeError(\n RuntimeErrorType.ControlFlowError,\n \"no reachable repeater to interrupt\"\n );\n }\n throw error;\n }\n }\n\n if (args.length > 0) {\n throw new RuntimeError(\n RuntimeErrorType.CannotInvokeValue,\n `global '${name}' is not callable`\n );\n }\n\n return value;\n }\n\n private expandSpreadArg(out: RantyValue[], value: RantyValue): boolean {\n if (Array.isArray(value)) {\n out.push(...value);\n return true;\n }\n\n if (typeof value === \"string\") {\n out.push(...Array.from(value));\n return true;\n }\n\n if (isRangeValue(value)) {\n for (let index = 0; index < rangeLength(value); index += 1) {\n out.push(rangeValueAt(value, index));\n }\n return true;\n }\n\n return false;\n }\n\n private tryInvokeSpecial(node: InvocationNode): RantyValue | undefined {\n if (node.name.startsWith(\"@\")) {\n return this.invokeKeyword(node);\n }\n\n switch (node.name) {\n case \"step\":\n if (node.args.length !== 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'step' expected 0 argument(s), got ${node.args.length}`\n );\n }\n return BigInt((this.currentBlock()?.stepIndex ?? 0) + 1);\n case \"step-index\":\n if (node.args.length !== 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'step-index' expected 0 argument(s), got ${node.args.length}`\n );\n }\n return BigInt(this.currentBlock()?.stepIndex ?? 0);\n case \"step-count\":\n if (node.args.length !== 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'step-count' expected 0 argument(s), got ${node.args.length}`\n );\n }\n return BigInt(this.currentBlock()?.totalSteps ?? 0);\n default:\n return undefined;\n }\n }\n\n private invokeKeyword(node: InvocationNode): RantyValue {\n const args = node.args.map((arg) => this.evaluateSequenceValue(arg));\n\n switch (node.name) {\n case \"@true\":\n expectArgCount(\"@true\", args, 0);\n return true;\n case \"@false\":\n expectArgCount(\"@false\", args, 0);\n return false;\n case \"@step\":\n expectArgCount(\"@step\", args, 0);\n return BigInt(this.currentBlock()?.stepIndex ?? 0);\n case \"@total\":\n expectArgCount(\"@total\", args, 0);\n return this.currentBlock()?.totalSteps == null\n ? null\n : BigInt(this.currentBlock()?.totalSteps ?? 0);\n case \"@rep\":\n expectArgCount(\"@rep\", args, 1);\n return { type: \"attribute\", name: \"rep\", value: args[0] ?? null };\n case \"@sep\":\n expectArgCount(\"@sep\", args, 1);\n return { type: \"attribute\", name: \"sep\", value: args[0] ?? null };\n case \"@sel\":\n expectArgCount(\"@sel\", args, 1);\n return { type: \"attribute\", name: \"sel\", value: args[0] ?? null };\n case \"@mut\":\n if (args.length > 1) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n \"'@mut' expected at most 1 argument\"\n );\n }\n return { type: \"attribute\", name: \"mut\", value: args[0] ?? null };\n case \"@if\":\n expectArgCount(\"@if\", args, 1);\n return {\n type: \"attribute\",\n name: \"if\",\n value: isTruthy(args[0] ?? null)\n };\n case \"@elseif\":\n expectArgCount(\"@elseif\", args, 1);\n return {\n type: \"attribute\",\n name: \"elseif\",\n value: isTruthy(args[0] ?? null)\n };\n case \"@else\":\n expectArgCount(\"@else\", args, 0);\n return { type: \"attribute\", name: \"else\", value: true };\n case \"@return\":\n if (args.length > 1) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n \"'@return' expected at most 1 argument\"\n );\n }\n throw new ReturnSignal(args[0] ?? \"\");\n case \"@continue\":\n if (args.length > 1) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n \"'@continue' expected at most 1 argument\"\n );\n }\n throw new ContinueSignal(args[0] ?? \"\");\n case \"@break\":\n if (args.length > 1) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n \"'@break' expected at most 1 argument\"\n );\n }\n throw new BreakSignal(args[0] ?? \"\");\n case \"@require\": {\n if (args.length < 1 || args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n \"'@require' expected 1 or 2 argument(s)\"\n );\n }\n\n const modulePath = this.expectString(\n args[args.length - 1] ?? null,\n \"@require\"\n );\n const alias =\n args.length === 2\n ? this.expectString(args[0] ?? null, \"@require\")\n : this.defaultModuleAlias(modulePath);\n const moduleValue = this.engine.loadModule(\n modulePath,\n this.program.info\n );\n this.defineLocal(alias, moduleValue);\n return \"\";\n }\n default:\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n `invalid keyword '${node.name}'`\n );\n }\n }\n\n private blockRepetitionPlan(\n attributes: readonly RantyAttributeValue[],\n elementCount: number\n ): BlockRepetitionPlan {\n const attr = [...attributes].reverse().find((item) => item.name === \"rep\");\n if (!attr) {\n return { count: 1, totalSteps: 1 };\n }\n\n if (typeof attr.value === \"string\") {\n switch (attr.value) {\n case \"once\":\n return { count: 1, totalSteps: 1 };\n case \"all\":\n return {\n count: Math.max(0, elementCount),\n totalSteps: Math.max(0, elementCount)\n };\n case \"forever\":\n return { count: null, totalSteps: null };\n default:\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `unknown repetition mode: '${attr.value}'`\n );\n }\n }\n\n const value = Number(asInteger(attr.value, \"rep\"));\n const count = Number.isFinite(value) ? Math.max(0, value) : 1;\n return { count, totalSteps: count };\n }\n\n private blockSeparator(\n attributes: readonly RantyAttributeValue[]\n ): RantyValue | undefined {\n return [...attributes].reverse().find((item) => item.name === \"sep\")?.value;\n }\n\n private blockSelector(\n attributes: readonly RantyAttributeValue[]\n ): RantySelectorValue | undefined {\n const value = [...attributes]\n .reverse()\n .find((item) => item.name === \"sel\")?.value;\n if (isSelectorValue(value)) {\n return value;\n }\n if (\n typeof value === \"string\" &&\n [\"forward\", \"reverse\", \"ping\", \"pong\"].includes(value)\n ) {\n return {\n type: \"selector\",\n mode: value,\n index: 0,\n direction: 1,\n frozen: false,\n initialized: false\n };\n }\n return undefined;\n }\n\n private blockMutator(\n attributes: readonly RantyAttributeValue[]\n ): ((...args: readonly RantyValue[]) => RantyValue) | undefined {\n const value = [...attributes]\n .reverse()\n .find((item) => item.name === \"mut\")?.value;\n if (value == null) {\n return undefined;\n }\n if (typeof value === \"function\") {\n return value;\n }\n throw new RuntimeError(\n RuntimeErrorType.ValueError,\n \"mutator must be a function or nothing\"\n );\n }\n\n private resolveSeparator(separator: RantyValue): RantyValue {\n if (typeof separator === \"function\") {\n return separator();\n }\n\n return separator;\n }\n\n private applyMutator(\n value: RantyValue,\n mutator: ((...args: readonly RantyValue[]) => RantyValue) | undefined\n ): RantyValue {\n if (!mutator) {\n return value;\n }\n return mutator(value);\n }\n\n private selectBlockElementIndex(\n selector: RantySelectorValue | undefined,\n elements: readonly BlockElementNode[],\n fallbackIndex: number\n ): number | null {\n const count = elements.length;\n if (count === 0) {\n return null;\n }\n if (selector?.mode === \"match\") {\n return this.selectMatchElementIndex(selector, elements);\n }\n\n if (!selector) {\n if (elements.some((element) => element.weight != null)) {\n const weights = elements.map((element) =>\n this.blockElementWeight(element)\n );\n const sum = weights.reduce((total, weight) => total + weight, 0);\n if (sum <= 0) {\n return null;\n }\n return this.engine.rng().nextWeightedIndex(count, weights, sum);\n }\n if (count <= 1) {\n return 0;\n }\n return fallbackIndex % count;\n }\n\n if (count <= 1) {\n return 0;\n }\n\n if (!selector.initialized) {\n selector.initialized = true;\n selector.index =\n selector.mode === \"reverse\" || selector.mode === \"pong\" ? count - 1 : 0;\n selector.direction =\n selector.mode === \"reverse\" || selector.mode === \"pong\" ? -1 : 1;\n }\n\n const current = selector.index;\n if (selector.frozen) {\n return Math.max(0, Math.min(count - 1, current));\n }\n\n switch (selector.mode) {\n case \"reverse\":\n selector.index = (current - 1 + count) % count;\n break;\n case \"ping\":\n case \"pong\": {\n if (count > 1) {\n const next = current + selector.direction;\n if (next >= count) {\n selector.direction = -1;\n selector.index = count - 2;\n } else if (next < 0) {\n selector.direction = 1;\n selector.index = 1;\n } else {\n selector.index = next;\n }\n }\n break;\n }\n case \"forward\":\n default:\n selector.index = (current + 1) % count;\n break;\n }\n\n return Math.max(0, Math.min(count - 1, current));\n }\n\n private selectMatchElementIndex(\n selector: RantySelectorValue,\n elements: readonly BlockElementNode[]\n ): number {\n const tagged: number[] = [];\n const fallback: number[] = [];\n\n for (const [index, element] of elements.entries()) {\n if (element.on) {\n const trigger = this.evaluateSequenceValue(element.on);\n if (areEqual(trigger, selector.matchValue ?? null)) {\n tagged.push(index);\n }\n } else {\n fallback.push(index);\n }\n }\n\n const candidates = tagged.length > 0 ? tagged : fallback;\n if (candidates.length === 0) {\n throw new RuntimeError(\n RuntimeErrorType.SelectorError,\n \"match selector could not find a selectable branch\"\n );\n }\n\n const weights = candidates.map((index) =>\n this.blockElementWeight(elements[index])\n );\n const sum = weights.reduce((total, weight) => total + weight, 0);\n if (sum <= 0) {\n throw new RuntimeError(\n RuntimeErrorType.SelectorError,\n \"match selector could not find a selectable branch\"\n );\n }\n\n return (\n candidates[\n this.engine.rng().nextWeightedIndex(candidates.length, weights, sum)\n ] ??\n candidates[0] ??\n 0\n );\n }\n\n private blockElementWeight(element: BlockElementNode | undefined): number {\n if (!element?.weight) {\n return 1;\n }\n\n const value = this.evaluateSequenceValue(element.weight);\n const weight = toFloat(value, \"@weight\");\n return Number.isFinite(weight) && weight > 0 ? weight : 0;\n }\n\n private combineValues(values: readonly RantyValue[]): RantyValue {\n if (values.length === 0) {\n return \"\";\n }\n\n const rendered = values.map((value) => renderRantyValue(value));\n const hasSubstantiveOutput = rendered.some(\n (value) => value.trim().length > 0\n );\n if (!hasSubstantiveOutput) {\n return values.length === 1 ? (values[0] as RantyValue) : \"\";\n }\n\n const nonWhitespaceValues = values.filter(\n (value) => !(typeof value === \"string\" && value.trim().length === 0)\n );\n\n if (\n nonWhitespaceValues.length === 1 &&\n typeof nonWhitespaceValues[0] !== \"string\" &&\n values.some(\n (value) => typeof value === \"string\" && value.trim().length === 0\n )\n ) {\n return nonWhitespaceValues[0] as RantyValue;\n }\n\n const mergedStructured = this.mergeStructuredValues(nonWhitespaceValues);\n if (mergedStructured !== undefined) {\n return mergedStructured;\n }\n\n if (values.length === 1) {\n return values[0] as RantyValue;\n }\n\n return rendered.join(\"\");\n }\n\n private isPendingBranchAttribute(\n attribute: PendingAttribute\n ): attribute is PendingBranchAttribute {\n return attribute.type === \"branch-attribute\";\n }\n\n private isBranchAttribute(\n attribute: PendingAttribute\n ): attribute is PendingBranchAttribute | RantyAttributeValue {\n return (\n this.isPendingBranchAttribute(attribute) ||\n BRANCH_ATTRIBUTES.has(attribute.name)\n );\n }\n\n private evaluateBranchAttribute(\n attribute: PendingBranchAttribute | RantyAttributeValue\n ): boolean {\n if (!this.isPendingBranchAttribute(attribute)) {\n return isTruthy(attribute.value);\n }\n\n switch (attribute.name) {\n case \"else\":\n return true;\n case \"if\":\n case \"elseif\":\n return isTruthy(\n attribute.condition == null\n ? null\n : this.evaluateSequenceValue(attribute.condition)\n );\n }\n }\n\n private isBranchInvocation(node: InvocationNode): boolean {\n return (\n ((node.name === \"@if\" || node.name === \"@elseif\") &&\n node.args.length === 1) ||\n (node.name === \"@else\" && node.args.length === 0)\n );\n }\n\n private blockHasEditDirective(node: BlockNode): boolean {\n return node.elements.some((element) => element.edit != null);\n }\n\n private isRenderableEmptyValue(value: RantyValue): boolean {\n return value == null || (typeof value === \"string\" && value.length === 0);\n }\n\n private sequenceValueOrNothing(sequence: Sequence): RantyValue {\n return sequence.nodes.length === 0\n ? null\n : this.evaluateSequenceValue(sequence);\n }\n\n private trimTrailingLayoutValues(values: RantyValue[]): void {\n while (values.length > 0) {\n const last = values[values.length - 1];\n if (typeof last !== \"string\" || last.trim().length !== 0) {\n return;\n }\n values.pop();\n }\n }\n\n private hasSubstantiveOutput(values: readonly RantyValue[]): boolean {\n return values.some((value) => renderRantyValue(value).trim().length > 0);\n }\n\n private isSilentSequenceNode(node: SequenceNode | undefined): boolean {\n return (\n (node?.kind === \"function\" && node.name != null) ||\n (node?.kind === \"angle\" &&\n node.statements.length > 0 &&\n node.statements.every((statement) => statement.kind === \"set\")) ||\n (node?.kind === \"invoke\" &&\n (SILENT_ATTRIBUTE_INVOCATIONS.has(node.name) ||\n SILENT_SIDE_EFFECT_INVOCATIONS.has(node.name)))\n );\n }\n\n private isWhitespaceTextNode(node: SequenceNode | undefined): boolean {\n return (\n node?.kind === \"text\" &&\n node.value.trim().length === 0 &&\n !this.isEscapedWhitespaceTextNode(node)\n );\n }\n\n private isEscapedWhitespaceTextNode(node: SequenceNode | undefined): boolean {\n if (node?.kind !== \"text\" || node.value.trim().length !== 0) {\n return false;\n }\n return this.program.source\n .slice(node.span.start, node.span.end)\n .includes(\"\\\\\");\n }\n\n private normalizedEscapedWhitespaceText(\n node: SequenceNode | undefined\n ): string | undefined {\n if (!this.isEscapedWhitespaceTextNode(node)) {\n return undefined;\n }\n\n const textNode = node as Extract<SequenceNode, { readonly kind: \"text\" }>;\n const raw = this.program.source\n .slice(textNode.span.start, textNode.span.end)\n .replace(/^\\s+/u, \"\")\n .replace(/\\s+$/u, \"\");\n\n if (raw.length === 0) {\n return \"\";\n }\n\n return this.decodeRuntimeTextEscapes(raw);\n }\n\n private decodeRuntimeTextEscapes(value: string): string {\n let output = \"\";\n\n for (let index = 0; index < value.length; index += 1) {\n const char = value[index];\n if (char === \"\\\\\" && index + 1 < value.length) {\n output += this.decodeRuntimeEscape(value[index + 1] ?? \"\");\n index += 1;\n continue;\n }\n output += char ?? \"\";\n }\n\n return output;\n }\n\n private decodeRuntimeEscape(char: string): string {\n switch (char) {\n case \"n\":\n return \"\\n\";\n case \"r\":\n return \"\\r\";\n case \"t\":\n return \"\\t\";\n case \"s\":\n return \" \";\n case \"\\\\\":\n return \"\\\\\";\n case \"[\":\n return \"[\";\n case \"]\":\n return \"]\";\n case \"{\":\n return \"{\";\n case \"}\":\n return \"}\";\n case \"<\":\n return \"<\";\n case \">\":\n return \">\";\n default:\n return char;\n }\n }\n\n private isSilentOrWhitespaceSequence(sequence: Sequence): boolean {\n return sequence.nodes.every(\n (node) =>\n this.isWhitespaceTextNode(node) || this.isSilentSequenceNode(node)\n );\n }\n\n private isWhitespaceRunAdjacentToSilentNode(\n nodes: readonly SequenceNode[],\n index: number\n ): boolean {\n let left = index - 1;\n while (left >= 0 && this.isWhitespaceTextNode(nodes[left])) {\n left -= 1;\n }\n if (this.isSilentSequenceNode(nodes[left])) {\n return true;\n }\n\n let right = index + 1;\n while (right < nodes.length && this.isWhitespaceTextNode(nodes[right])) {\n right += 1;\n }\n return this.isSilentSequenceNode(nodes[right]);\n }\n\n private normalizeSilentAdjacentWhitespace(\n nodes: readonly SequenceNode[],\n index: number,\n normalizedText: string\n ): string | undefined {\n if (this.isEscapedWhitespaceTextNode(nodes[index])) {\n return undefined;\n }\n if (\n normalizedText.trim().length !== 0 ||\n !this.isWhitespaceRunAdjacentToSilentNode(nodes, index)\n ) {\n return undefined;\n }\n\n if (index > 0 && this.isWhitespaceTextNode(nodes[index - 1])) {\n return \"\";\n }\n\n const left = this.closestNonWhitespaceNode(nodes, index, -1);\n const right = this.closestNonWhitespaceNode(nodes, index, 1);\n const hasLineBreak = normalizedText.includes(\"\\n\");\n\n if (\n left &&\n left.kind !== \"text\" &&\n !this.isSilentSequenceNode(left) &&\n right &&\n this.preservesLeadingLayoutForSilentNode(right) &&\n hasLineBreak\n ) {\n return \"\\n\";\n }\n\n return \"\";\n }\n\n private normalizeInterstitialWhitespace(\n nodes: readonly SequenceNode[],\n index: number,\n normalizedText: string\n ): string | undefined {\n if (this.isEscapedWhitespaceTextNode(nodes[index])) {\n return undefined;\n }\n if (\n normalizedText.trim().length === 0 &&\n !normalizedText.includes(\"\\n\") &&\n this.isCompactedAnonymousWhitespace(nodes, index)\n ) {\n return \"\";\n }\n\n if (normalizedText.trim().length !== 0 || !normalizedText.includes(\"\\n\")) {\n return undefined;\n }\n\n if (index > 0 && this.isWhitespaceTextNode(nodes[index - 1])) {\n return \"\";\n }\n\n const left = this.closestNonWhitespaceNode(nodes, index, -1);\n const right = this.closestNonWhitespaceNode(nodes, index, 1);\n if (\n !left ||\n !right ||\n this.isSilentSequenceNode(left) ||\n this.isSilentSequenceNode(right)\n ) {\n return undefined;\n }\n\n return \"\\n\";\n }\n\n private normalizeFunctionBodyWhitespace(\n nodes: readonly SequenceNode[],\n index: number,\n normalizedText: string\n ): string | undefined {\n if (this.isEscapedWhitespaceTextNode(nodes[index])) {\n return undefined;\n }\n if (this.#functionDepth === 0 || normalizedText.trim().length !== 0) {\n return undefined;\n }\n\n const left = this.closestNonWhitespaceNode(nodes, index, -1);\n const right = this.closestNonWhitespaceNode(nodes, index, 1);\n if (!left || !right || left.kind === \"text\" || right.kind === \"text\") {\n return undefined;\n }\n\n return \"\";\n }\n\n private closestNonWhitespaceNode(\n nodes: readonly SequenceNode[],\n index: number,\n direction: -1 | 1\n ): SequenceNode | undefined {\n let cursor = index + direction;\n while (cursor >= 0 && cursor < nodes.length) {\n const node = nodes[cursor];\n if (!this.isWhitespaceTextNode(node)) {\n return node;\n }\n cursor += direction;\n }\n return undefined;\n }\n\n private isPureWhitespaceSequence(sequence: Sequence): boolean {\n return (\n sequence.nodes.length > 0 &&\n sequence.nodes.every(\n (node) => node.kind === \"text\" && node.value.trim().length === 0\n )\n );\n }\n\n private normalizeBridgedText(\n node: Extract<SequenceNode, { readonly kind: \"text\" }>,\n nextNode: SequenceNode | undefined\n ): string {\n const raw = this.program.source.slice(node.span.start, node.span.end);\n let value = node.value;\n\n if (!raw.includes(\"\\\\\")) {\n value = value.replace(/\\r?\\n[ \\t\\r\\n]*/gu, \"\");\n value = value.replace(/[ \\t]{2,}/gu, \" \");\n }\n\n if (!nextNode) {\n return value;\n }\n\n const trimmed = value.replace(/\\r?\\n[ \\t\\r\\n]*$/u, \"\");\n return trimmed.trim().length > 0 ? trimmed : value;\n }\n\n private isCompactedAnonymousWhitespace(\n nodes: readonly SequenceNode[],\n index: number\n ): boolean {\n const left = this.closestNonWhitespaceNode(nodes, index, -1);\n const right = this.closestNonWhitespaceNode(nodes, index, 1);\n return (\n this.isCompactedAngleAccess(left) && this.isCompactedAngleAccess(right)\n );\n }\n\n private isCompactedAngleAccess(node: SequenceNode | undefined): boolean {\n if (node?.kind !== \"angle\" || node.statements.length !== 1) {\n return false;\n }\n const [statement] = node.statements;\n return statement?.kind === \"access\" && statement.path.length > 0;\n }\n\n private preservesLeadingLayoutForSilentNode(\n node: SequenceNode | undefined\n ): boolean {\n return (\n (node?.kind === \"function\" && node.name != null) ||\n (node?.kind === \"angle\" &&\n node.statements.every((statement) => statement.kind === \"set\"))\n );\n }\n\n private mergeStructuredValues(\n values: readonly RantyValue[]\n ): RantyValue | undefined {\n if (values.length < 2) {\n return undefined;\n }\n\n if (values.every((value) => Array.isArray(value))) {\n const kind = values.every((value) => getCollectionKind(value) === \"tuple\")\n ? \"tuple\"\n : \"list\";\n const items = values.flatMap((value) =>\n Array.isArray(value) ? value : []\n );\n return makeCollectionValue(kind, items);\n }\n\n if (values.every((value) => value instanceof Map)) {\n const merged = new Map<string, RantyValue>();\n for (const value of values) {\n if (!(value instanceof Map)) {\n continue;\n }\n for (const [key, item] of value.entries()) {\n merged.set(key, item);\n }\n }\n return merged;\n }\n\n return undefined;\n }\n\n private currentBlock(): ActiveBlockState | undefined {\n return this.#blocks[this.#blocks.length - 1];\n }\n\n private withBufferedSequenceValue(\n signal: ReturnSignal | ContinueSignal | BreakSignal,\n values: readonly RantyValue[]\n ): ReturnSignal | ContinueSignal | BreakSignal {\n if (values.length === 0 || !this.isEmptySignalValue(signal.value)) {\n return signal;\n }\n\n const combined = this.trimBufferedControlFlowValue(\n this.combineValues(values)\n );\n\n if (signal instanceof ReturnSignal) {\n return new ReturnSignal(combined);\n }\n if (signal instanceof ContinueSignal) {\n return new ContinueSignal(combined);\n }\n return new BreakSignal(combined);\n }\n\n private isEmptySignalValue(value: RantyValue): boolean {\n return typeof value === \"string\" && value.length === 0;\n }\n\n private trimBufferedControlFlowValue(value: RantyValue): RantyValue {\n if (typeof value !== \"string\") {\n return value;\n }\n return value.replace(/[ \\t]+$/u, \"\");\n }\n\n private pushScope(): void {\n this.#scopes.push(new Map());\n }\n\n private popScope(): void {\n if (this.#scopes.length > 1) {\n this.#scopes.pop();\n }\n }\n\n private defineLocalBinding(name: string, binding: RantyBinding): void {\n this.#scopes[this.#scopes.length - 1]?.set(name, binding);\n }\n\n private defineLocal(name: string, value: RantyValue, isConst = false): void {\n this.defineLocalBinding(name, valueBinding(value, isConst));\n }\n\n bindLocal(name: string, value: RantyValue): void {\n this.defineLocal(name, value);\n }\n\n private getLocalBinding(name: string): RantyBinding | undefined {\n for (let index = this.#scopes.length - 1; index >= 0; index -= 1) {\n const scope = this.#scopes[index];\n if (scope?.has(name)) {\n return scope.get(name);\n }\n }\n return undefined;\n }\n\n private getLocal(name: string): RantyValue | undefined {\n const binding = this.getLocalBinding(name);\n return binding ? this.readBindingValue(binding) : undefined;\n }\n\n private getNamedValue(\n name: string,\n preferCallable = false\n ): RantyValue | undefined {\n const segments = this.splitPath(name);\n const baseName = segments[0] ?? \"\";\n if (preferCallable && !name.includes(\"/\")) {\n const callable = this.getPercolatingCallable(baseName);\n if (callable !== undefined) {\n return callable;\n }\n }\n\n const base = this.getLocal(baseName) ?? this.engine.getGlobal(baseName);\n if (base === undefined) {\n return undefined;\n }\n return this.getPathFromValue(base, segments.slice(1), name);\n }\n\n private getPercolatingCallable(name: string): RantyValue | undefined {\n let shadowed: RantyValue | undefined;\n\n for (let index = this.#scopes.length - 1; index >= 0; index -= 1) {\n const scope = this.#scopes[index];\n if (!scope?.has(name)) {\n continue;\n }\n\n const binding = scope.get(name);\n if (!binding) {\n continue;\n }\n const value = this.readBindingValue(binding);\n if (shadowed === undefined) {\n shadowed = value;\n }\n\n if (typeof value === \"function\") {\n return value;\n }\n }\n\n const globalBinding = this.engine.getGlobalBinding(name);\n if (globalBinding) {\n const globalValue = this.readBindingValue(globalBinding);\n if (typeof globalValue === \"function\") {\n return globalValue;\n }\n if (shadowed === undefined) {\n shadowed = globalValue;\n }\n }\n\n return shadowed;\n }\n\n private getPathFromValue(\n value: RantyValue,\n path: readonly string[],\n fullName: string\n ): RantyValue {\n let current = value;\n\n for (const segment of path) {\n current = this.getSegmentValue(current, segment, fullName);\n }\n\n return current;\n }\n\n private getVariable(\n name: string,\n path: readonly AnglePathSegment[] = [],\n global: boolean,\n descope: number\n ): RantyValue {\n const baseName = name;\n\n if (global) {\n const binding = this.engine.getGlobalBinding(baseName);\n if (!binding) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `global '${baseName}' does not exist`\n );\n }\n const value = this.readBindingValue(binding);\n return this.getAccessPathFromValue(\n value,\n path,\n this.pathDisplayName(baseName, path)\n );\n }\n\n if (descope > 0) {\n const scope = this.#scopes[this.#scopes.length - 1 - descope];\n const binding = scope?.get(baseName);\n if (binding) {\n return this.getAccessPathFromValue(\n this.readBindingValue(binding),\n path,\n this.pathDisplayName(baseName, path)\n );\n }\n const globalBinding = this.engine.getGlobalBinding(baseName);\n if (!globalBinding) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `descoped variable '${baseName}' does not exist`\n );\n }\n return this.getAccessPathFromValue(\n this.readBindingValue(globalBinding),\n path,\n this.pathDisplayName(baseName, path)\n );\n }\n\n const binding =\n this.getLocalBinding(baseName) ?? this.engine.getGlobalBinding(baseName);\n if (!binding) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${baseName}' does not exist`\n );\n }\n const value = this.readBindingValue(binding);\n\n return this.getAccessPathFromValue(\n value,\n path,\n this.pathDisplayName(baseName, path)\n );\n }\n\n private getStatementValue(\n statement: AngleAccessStatement | AngleSetStatement\n ): RantyValue {\n if (!statement.base) {\n return this.getVariable(\n statement.name,\n statement.path,\n statement.global,\n statement.descope\n );\n }\n\n const base = this.evaluateSequenceValue(statement.base);\n if (statement.path.length === 0) {\n return base;\n }\n\n return this.getAccessPathFromValue(\n base,\n statement.path,\n this.pathDisplayName(\"(...)\", statement.path)\n );\n }\n\n private setStatementValue(\n statement: AngleSetStatement,\n value?: RantyValue\n ): void {\n if (!statement.base) {\n this.setVariable(statement, value);\n return;\n }\n\n if (statement.path.length === 0) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n \"anonymous assignments require an access path\"\n );\n }\n\n const displayName = this.pathDisplayName(\"(...)\", statement.path);\n let current = this.evaluateSequenceValue(statement.base);\n\n for (const segment of statement.path.slice(0, -1)) {\n current = this.getAngleSegmentValue(current, segment, displayName);\n }\n\n const last = statement.path[statement.path.length - 1];\n if (!last) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n \"anonymous assignments require an access path\"\n );\n }\n this.setAngleSegmentValue(\n current,\n last,\n value ?? this.sequenceValueOrNothing(statement.value),\n displayName\n );\n }\n\n private setVariable(statement: AngleSetStatement, value?: RantyValue): void {\n if (statement.path.length > 0) {\n this.setNamedPath(\n statement.name,\n statement.path,\n value ?? this.sequenceValueOrNothing(statement.value),\n statement.define,\n statement.global,\n statement.descope,\n statement.isConst\n );\n return;\n }\n\n const nextBinding = statement.isLazy\n ? lazyBinding(\n {\n name: statement.name,\n expr: statement.value,\n scopes: [...this.#scopes]\n },\n statement.isConst\n )\n : valueBinding(\n value ?? this.sequenceValueOrNothing(statement.value),\n statement.isConst\n );\n\n if (statement.define) {\n if (statement.global) {\n this.engine.setGlobalBindingForce(statement.name, nextBinding);\n } else if (statement.descope > 0) {\n const scope = this.#scopes[this.#scopes.length - 1 - statement.descope];\n if (!scope) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `cannot define descoped variable '${statement.name}'`\n );\n }\n if (scope.get(statement.name)?.const) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n `cannot redefine constant '${statement.name}'`\n );\n }\n scope.set(statement.name, nextBinding);\n } else {\n this.defineLocalBinding(statement.name, nextBinding);\n }\n return;\n }\n\n if (statement.global) {\n const binding = this.engine.getGlobalBinding(statement.name);\n if (!binding) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `global '${statement.name}' does not exist`\n );\n }\n if (binding.const) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n `cannot reassign constant '${statement.name}'`\n );\n }\n this.engine.setGlobalBindingForce(\n statement.name,\n valueBinding(value ?? null)\n );\n return;\n }\n\n if (statement.descope > 0) {\n const scope = this.#scopes[this.#scopes.length - 1 - statement.descope];\n const binding = scope?.get(statement.name);\n if (!scope || !binding) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `descoped variable '${statement.name}' does not exist`\n );\n }\n if (binding.const) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n `cannot reassign constant '${statement.name}'`\n );\n }\n scope.set(statement.name, valueBinding(value ?? null));\n return;\n }\n\n for (let index = this.#scopes.length - 1; index >= 0; index -= 1) {\n const scope = this.#scopes[index];\n if (scope?.has(statement.name)) {\n if (scope.get(statement.name)?.const) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n `cannot reassign constant '${statement.name}'`\n );\n }\n scope.set(statement.name, valueBinding(value ?? null));\n return;\n }\n }\n\n if (this.engine.hasGlobal(statement.name)) {\n const binding = this.engine.getGlobalBinding(statement.name);\n if (binding?.const) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n `cannot reassign constant '${statement.name}'`\n );\n }\n this.engine.setGlobalBindingForce(\n statement.name,\n valueBinding(value ?? null)\n );\n return;\n }\n\n if (statement.name.startsWith(\"@\")) {\n this.defineLocal(statement.name, value ?? null);\n return;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${statement.name}' does not exist`\n );\n }\n\n private setNamedPath(\n baseName: string,\n path: readonly AnglePathSegment[],\n value: RantyValue,\n define: boolean,\n global = false,\n descope = 0,\n isConst = false\n ): void {\n if (path.length === 0) {\n if (define) {\n this.defineLocal(baseName, value, isConst);\n return;\n }\n\n this.setVariable(\n {\n kind: \"set\",\n span: { start: 0, end: 0 },\n name: baseName,\n path: [],\n global,\n descope,\n define,\n isConst,\n isLazy: false,\n value: { kind: \"sequence\", nodes: [] }\n },\n value\n );\n return;\n }\n\n const displayName = this.pathDisplayName(baseName, path);\n const target = this.getVariable(baseName, [], global, descope);\n let current: RantyValue = target;\n for (const segment of path.slice(0, -1)) {\n current = this.getAngleSegmentValue(current, segment, displayName);\n }\n\n const last = path[path.length - 1];\n if (last == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${displayName}' does not exist`\n );\n }\n this.setAngleSegmentValue(current, last, value, displayName);\n }\n\n private getAccessPathFromValue(\n value: RantyValue,\n path: readonly AnglePathSegment[],\n fullName: string\n ): RantyValue {\n let current = value;\n\n for (const segment of path) {\n current = this.getAngleSegmentValue(current, segment, fullName);\n }\n\n return current;\n }\n\n private getAngleSegmentValue(\n current: RantyValue,\n segment: AnglePathSegment,\n fullName: string\n ): RantyValue {\n if (segment.kind === \"slice\") {\n return this.sliceOrderedValue(\n current,\n segment.start,\n segment.end,\n fullName\n );\n }\n\n const keyValue =\n segment.kind === \"static\"\n ? segment.value\n : this.evaluateSequenceValue(segment.value);\n\n if (current instanceof Map) {\n const key =\n typeof keyValue === \"string\" ? keyValue : renderRantyValue(keyValue);\n const result = getMapChainValue(current, key);\n if (!result.found) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n return result.value;\n }\n\n const index =\n segment.kind === \"static\"\n ? this.parseIndexSegment(segment.value)\n : this.pathIndexValue(keyValue, fullName);\n if (index == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n\n return this.getIndexedValue(current, index, fullName);\n }\n\n private setAngleSegmentValue(\n current: RantyValue,\n segment: AnglePathSegment,\n value: RantyValue,\n fullName: string\n ): void {\n if (segment.kind === \"slice\") {\n this.spliceOrderedValue(\n current,\n segment.start,\n segment.end,\n value,\n fullName\n );\n return;\n }\n\n const keyValue =\n segment.kind === \"static\"\n ? segment.value\n : this.evaluateSequenceValue(segment.value);\n\n if (current instanceof Map) {\n current.set(\n typeof keyValue === \"string\" ? keyValue : renderRantyValue(keyValue),\n value\n );\n return;\n }\n\n const index =\n segment.kind === \"static\"\n ? this.parseIndexSegment(segment.value)\n : this.pathIndexValue(keyValue, fullName);\n if (index == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n\n if (Array.isArray(current)) {\n const normalized = this.normalizeIndex(index, current.length);\n if (normalized == null) {\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n \"index is out of range of list size\"\n );\n }\n current[normalized] = value;\n return;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `variable '${fullName}' is not index-settable`\n );\n }\n\n private pathDisplayName(\n baseName: string,\n path: readonly AnglePathSegment[]\n ): string {\n return [\n baseName,\n ...path.map((segment) => {\n switch (segment.kind) {\n case \"static\":\n return `/${segment.value}`;\n case \"dynamic\":\n return \"/(...)\";\n case \"slice\":\n return \"/..\";\n }\n })\n ].join(\"\");\n }\n\n private splitPath(name: string): string[] {\n return name.split(\"/\").filter((segment) => segment.length > 0);\n }\n\n private getSegmentValue(\n current: RantyValue,\n segment: string,\n fullName: string\n ): RantyValue {\n if (current instanceof Map) {\n const result = getMapChainValue(current, segment);\n if (!result.found) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n return result.value;\n }\n\n const index = this.parseIndexSegment(segment);\n if (index == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n\n return this.getIndexedValue(current, index, fullName);\n }\n\n private setSegmentValue(\n current: RantyValue,\n segment: string,\n value: RantyValue,\n fullName: string\n ): void {\n if (current instanceof Map) {\n current.set(segment, value);\n return;\n }\n\n const index = this.parseIndexSegment(segment);\n if (index == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n\n if (Array.isArray(current)) {\n const normalized = this.normalizeIndex(index, current.length);\n if (normalized == null) {\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n \"index is out of range of list size\"\n );\n }\n current[normalized] = value;\n return;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `variable '${fullName}' is not index-settable`\n );\n }\n\n private parseIndexSegment(segment: string): number | null {\n if (!/^-?\\d+$/u.test(segment)) {\n return null;\n }\n const index = Number(segment);\n return Number.isInteger(index) ? index : null;\n }\n\n private normalizeIndex(index: number, length: number): number | null {\n const normalized = index < 0 ? length + index : index;\n if (\n !Number.isInteger(normalized) ||\n normalized < 0 ||\n normalized >= length\n ) {\n return null;\n }\n return normalized;\n }\n\n private pathIndexValue(value: RantyValue, fullName: string): number {\n const index = Number(asInteger(value, fullName));\n if (!Number.isInteger(index)) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n return index;\n }\n\n private getIndexedValue(\n current: RantyValue,\n index: number,\n fullName: string\n ): RantyValue {\n if (Array.isArray(current)) {\n const normalized = this.normalizeIndex(index, current.length);\n if (normalized == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n return current[normalized] ?? null;\n }\n\n if (typeof current === \"string\") {\n const chars = Array.from(current);\n const normalized = this.normalizeIndex(index, chars.length);\n if (normalized == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n return chars[normalized] ?? \"\";\n }\n\n if (isRangeValue(current)) {\n const normalized = this.normalizeIndex(index, rangeLength(current));\n if (normalized == null) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n return rangeValueAt(current, normalized);\n }\n\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n\n private normalizeSliceIndex(index: number, length: number): number {\n const normalized = index < 0 ? length + index : index;\n return Math.max(0, Math.min(length, normalized));\n }\n\n private sliceBounds(\n length: number,\n start: Sequence | undefined,\n end: Sequence | undefined,\n fullName: string\n ): { readonly from: number; readonly to: number } {\n const startIndex =\n start == null\n ? 0\n : this.normalizeSliceIndex(\n this.pathIndexValue(this.evaluateSequenceValue(start), fullName),\n length\n );\n const endIndex =\n end == null\n ? length\n : this.normalizeSliceIndex(\n this.pathIndexValue(this.evaluateSequenceValue(end), fullName),\n length\n );\n\n return {\n from: Math.min(startIndex, endIndex),\n to: Math.max(startIndex, endIndex)\n };\n }\n\n private sliceOrderedValue(\n current: RantyValue,\n start: Sequence | undefined,\n end: Sequence | undefined,\n fullName: string\n ): RantyValue {\n if (typeof current === \"string\") {\n const chars = Array.from(current);\n const { from, to } = this.sliceBounds(chars.length, start, end, fullName);\n return chars.slice(from, to).join(\"\");\n }\n\n if (Array.isArray(current)) {\n const { from, to } = this.sliceBounds(\n current.length,\n start,\n end,\n fullName\n );\n return makeCollectionValue(\n getCollectionKind(current) ?? \"list\",\n current.slice(from, to)\n );\n }\n\n if (isRangeValue(current)) {\n const length = rangeLength(current);\n const { from, to } = this.sliceBounds(length, start, end, fullName);\n const items: RantyValue[] = [];\n for (let index = from; index < to; index += 1) {\n items.push(rangeValueAt(current, index));\n }\n return makeListValue(items);\n }\n\n throw new RuntimeError(\n RuntimeErrorType.InvalidAccess,\n `variable '${fullName}' does not exist`\n );\n }\n\n private spliceOrderedValue(\n current: RantyValue,\n start: Sequence | undefined,\n end: Sequence | undefined,\n value: RantyValue,\n fullName: string\n ): void {\n if (!Array.isArray(current)) {\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `variable '${fullName}' is not index-settable`\n );\n }\n\n const { from, to } = this.sliceBounds(current.length, start, end, fullName);\n const replacement = Array.isArray(value) ? [...value] : [value];\n current.splice(from, to - from, ...replacement);\n }\n\n private expectString(value: RantyValue, name: string): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a string value`\n );\n }\n\n private defaultModuleAlias(modulePath: string): string {\n const normalized = modulePath.replaceAll(\"\\\\\", \"/\");\n const base = normalized.split(\"/\").at(-1) ?? normalized;\n return base.replace(/\\.(ranty|rant)$/u, \"\");\n }\n}\n","import { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport type { Ranty } from \"../ranty\";\nimport {\n areEqual,\n argAt,\n addBuiltin,\n expectArgCount,\n isTruthy\n} from \"./shared\";\nimport { renderRantyValue } from \"../util\";\n\nexport function loadAssertionStdlib(context: Ranty): void {\n addBuiltin(context, \"assert\", (...args) => {\n expectArgCount(\"assert\", args, 1);\n if (!isTruthy(argAt(args, 0))) {\n throw new RuntimeError(\n RuntimeErrorType.AssertError,\n \"assertion failed: condition was false\"\n );\n }\n return \"\";\n });\n\n addBuiltin(context, \"assert-not\", (...args) => {\n expectArgCount(\"assert-not\", args, 1);\n if (isTruthy(argAt(args, 0))) {\n throw new RuntimeError(\n RuntimeErrorType.AssertError,\n \"negative assertion failed\"\n );\n }\n return \"\";\n });\n\n addBuiltin(context, \"assert-eq\", (...args) => {\n if (args.length < 2 || args.length > 3) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'assert-eq' expected 2 or 3 argument(s), got ${args.length}`\n );\n }\n const left = argAt(args, 0);\n const right = argAt(args, 1);\n if (!areEqual(left, right)) {\n const message =\n args.length === 3\n ? renderRantyValue(argAt(args, 2))\n : `expected: ${renderRantyValue(right)}; actual: ${renderRantyValue(left)}`;\n throw new RuntimeError(RuntimeErrorType.AssertError, message);\n }\n return \"\";\n });\n\n addBuiltin(context, \"assert-neq\", (...args) => {\n if (args.length < 2 || args.length > 3) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'assert-neq' expected 2 or 3 argument(s), got ${args.length}`\n );\n }\n if (areEqual(argAt(args, 0), argAt(args, 1))) {\n throw new RuntimeError(\n RuntimeErrorType.AssertError,\n args.length === 3\n ? renderRantyValue(argAt(args, 2))\n : \"expected values to differ\"\n );\n }\n return \"\";\n });\n}\n","import { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport type { Ranty } from \"../ranty\";\nimport type { RantyAttributeValue, RantySelectorValue } from \"../values\";\nimport {\n addBuiltin,\n argAt,\n asInteger,\n asString,\n expectArgCount\n} from \"./shared\";\n\nfunction attribute(\n name: RantyAttributeValue[\"name\"],\n value: RantyAttributeValue[\"value\"]\n): RantyAttributeValue {\n return {\n type: \"attribute\",\n name,\n value\n };\n}\n\nfunction isSelectorValue(value: unknown): value is RantySelectorValue {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"selector\"\n );\n}\n\nexport function loadBlockStdlib(context: Ranty): void {\n addBuiltin(context, \"mksel\", (...args) => {\n if (args.length < 1 || args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'mksel' expected 1 or 2 argument(s), got ${args.length}`\n );\n }\n const mode = asString(argAt(args, 0), \"mksel\");\n if (![\"forward\", \"reverse\", \"ping\", \"pong\", \"match\"].includes(mode)) {\n throw new RuntimeError(\n RuntimeErrorType.ValueError,\n `unsupported selector mode '${mode}'`\n );\n }\n\n if (mode === \"match\" && args.length !== 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"match selectors require a match value\"\n );\n }\n\n if (mode !== \"match\" && args.length === 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `selector mode '${mode}' does not accept a match value`\n );\n }\n\n const selector: RantySelectorValue = {\n type: \"selector\",\n mode,\n index: 0,\n direction: 1,\n frozen: false,\n initialized: false,\n ...(args.length === 2 ? { matchValue: argAt(args, 1) } : {})\n };\n return selector;\n });\n\n addBuiltin(context, \"rep\", (...args) => {\n expectArgCount(\"rep\", args, 1);\n return attribute(\"rep\", argAt(args, 0));\n });\n\n addBuiltin(context, \"sep\", (...args) => {\n expectArgCount(\"sep\", args, 1);\n return attribute(\"sep\", argAt(args, 0));\n });\n\n addBuiltin(context, \"sel\", (...args) => {\n expectArgCount(\"sel\", args, 1);\n return attribute(\"sel\", argAt(args, 0));\n });\n\n addBuiltin(context, \"if\", (...args) => {\n expectArgCount(\"if\", args, 1);\n return attribute(\"if\", argAt(args, 0));\n });\n\n addBuiltin(context, \"elseif\", (...args) => {\n expectArgCount(\"elseif\", args, 1);\n return attribute(\"elseif\", argAt(args, 0));\n });\n\n addBuiltin(context, \"else\", (...args) => {\n expectArgCount(\"else\", args, 0);\n return attribute(\"else\", true);\n });\n\n addBuiltin(context, \"match\", (...args) => {\n expectArgCount(\"match\", args, 1);\n return attribute(\"sel\", {\n type: \"selector\",\n mode: \"match\",\n index: 0,\n direction: 1,\n frozen: false,\n initialized: false,\n matchValue: argAt(args, 0)\n });\n });\n\n addBuiltin(context, \"sel-freeze\", (...args) => {\n expectArgCount(\"sel-freeze\", args, 1);\n const selector = argAt(args, 0);\n if (isSelectorValue(selector)) {\n if (selector.mode === \"match\") {\n throw new RuntimeError(\n RuntimeErrorType.SelectorError,\n \"cursor operations are not supported on match selectors\"\n );\n }\n selector.frozen = true;\n return \"\";\n }\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n \"'sel-freeze' expected a selector\"\n );\n });\n\n addBuiltin(context, \"sel-frozen\", (...args) => {\n expectArgCount(\"sel-frozen\", args, 1);\n const selector = argAt(args, 0);\n if (isSelectorValue(selector)) {\n if (selector.mode === \"match\") {\n throw new RuntimeError(\n RuntimeErrorType.SelectorError,\n \"cursor operations are not supported on match selectors\"\n );\n }\n return selector.frozen;\n }\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n \"'sel-frozen' expected a selector\"\n );\n });\n\n addBuiltin(context, \"sel-skip\", (...args) => {\n if (args.length < 1 || args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'sel-skip' expected 1 or 2 argument(s), got ${args.length}`\n );\n }\n\n const selector = argAt(args, 0);\n if (!isSelectorValue(selector)) {\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n \"'sel-skip' expected a selector\"\n );\n }\n if (selector.mode === \"match\") {\n throw new RuntimeError(\n RuntimeErrorType.SelectorError,\n \"cursor operations are not supported on match selectors\"\n );\n }\n\n const steps = Number(\n args.length === 2 ? asInteger(argAt(args, 1), \"sel-skip\") : 1n\n );\n if (!Number.isFinite(steps) || steps <= 0) {\n return \"\";\n }\n\n for (let offset = 0; offset < steps; offset += 1) {\n if (!selector.initialized) {\n selector.initialized = true;\n selector.index =\n selector.mode === \"reverse\" || selector.mode === \"pong\" ? 0 : 0;\n selector.direction =\n selector.mode === \"reverse\" || selector.mode === \"pong\" ? -1 : 1;\n }\n\n switch (selector.mode) {\n case \"reverse\":\n selector.index -= 1;\n break;\n case \"ping\":\n case \"pong\":\n selector.index += selector.direction;\n break;\n case \"forward\":\n default:\n selector.index += 1;\n break;\n }\n }\n\n return \"\";\n });\n\n addBuiltin(context, \"mut\", (...args) => {\n if (args.length > 1) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'mut' expected at most 1 argument(s), got ${args.length}`\n );\n }\n return attribute(\"mut\", args[0] ?? null);\n });\n\n addBuiltin(context, \"step\", (...args) => {\n expectArgCount(\"step\", args, 0);\n const value = context.getGlobal(\"__ranty_step\");\n return typeof value === \"bigint\" ? value + 1n : 0n;\n });\n\n addBuiltin(context, \"step-index\", (...args) => {\n expectArgCount(\"step-index\", args, 0);\n const value = context.getGlobal(\"__ranty_step\");\n return typeof value === \"bigint\" ? value : 0n;\n });\n\n addBuiltin(context, \"step-count\", (...args) => {\n expectArgCount(\"step-count\", args, 0);\n const value = context.getGlobal(\"__ranty_total\");\n return typeof value === \"bigint\" ? value : 0n;\n });\n\n addBuiltin(context, \"reset-attrs\", () => attribute(\"reset\", \"\"));\n}\n","import type { Ranty } from \"../ranty\";\nimport { addBuiltin, argAt, expectArgCount, isTruthy } from \"./shared\";\n\nexport function loadBooleanStdlib(context: Ranty): void {\n addBuiltin(context, \"and\", (...args) => {\n expectArgCount(\"and\", args, 2);\n const left = argAt(args, 0);\n return isTruthy(left) ? argAt(args, 1) : left;\n });\n\n addBuiltin(context, \"not\", (...args) => {\n expectArgCount(\"not\", args, 1);\n return !isTruthy(argAt(args, 0));\n });\n\n addBuiltin(context, \"or\", (...args) => {\n expectArgCount(\"or\", args, 2);\n const left = argAt(args, 0);\n return isTruthy(left) ? left : argAt(args, 1);\n });\n\n addBuiltin(context, \"xor\", (...args) => {\n expectArgCount(\"xor\", args, 2);\n return isTruthy(argAt(args, 0)) !== isTruthy(argAt(args, 1));\n });\n}\n","import { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport {\n getMapChainValue,\n getMapPrototype,\n setMapPrototype\n} from \"../map-proto\";\nimport type { Ranty } from \"../ranty\";\nimport {\n cloneCollectionValue,\n getCollectionKind,\n makeListValue,\n makeTupleValue,\n type RantyValue\n} from \"../values\";\nimport { renderRantyValue } from \"../util\";\nimport {\n addBuiltin,\n argAt,\n areEqual,\n asCallable,\n asInteger,\n asList,\n asMap,\n expectArgCount,\n mapKey\n} from \"./shared\";\n\nfunction typeName(value: RantyValue): string {\n if (value == null) {\n return \"nothing\";\n }\n if (typeof value === \"string\") {\n return \"string\";\n }\n if (typeof value === \"boolean\") {\n return \"bool\";\n }\n if (typeof value === \"bigint\") {\n return \"int\";\n }\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? \"int\" : \"float\";\n }\n if (typeof value === \"function\") {\n return \"function\";\n }\n if (Array.isArray(value)) {\n return getCollectionKind(value) === \"tuple\" ? \"tuple\" : \"list\";\n }\n if (value instanceof Map) {\n return \"map\";\n }\n if (typeof value === \"object\" && value !== null && \"type\" in value) {\n return typeof value.type === \"string\" ? value.type : \"value\";\n }\n return \"value\";\n}\n\nfunction cloneMap(map: Map<string, RantyValue>): Map<string, RantyValue> {\n const copy = new Map<string, RantyValue>(map.entries());\n const proto = getMapPrototype(map);\n if (proto) {\n setMapPrototype(copy, proto);\n }\n return copy;\n}\n\nfunction cloneValue(value: RantyValue): RantyValue {\n if (Array.isArray(value)) {\n return cloneCollectionValue(value);\n }\n if (value instanceof Map) {\n return cloneMap(value);\n }\n return value;\n}\n\nfunction valuesToMap(args: readonly RantyValue[]): Map<string, RantyValue> {\n const map = new Map<string, RantyValue>();\n for (let index = 0; index < args.length; index += 2) {\n const key = args[index];\n const value = args[index + 1];\n if (key === undefined || value === undefined) {\n break;\n }\n map.set(mapKey(key), value);\n }\n return map;\n}\n\nfunction toNumericComparable(value: RantyValue): bigint | number | null {\n if (typeof value === \"bigint\" || typeof value === \"number\") {\n return value;\n }\n if (typeof value === \"boolean\") {\n return value ? 1n : 0n;\n }\n return null;\n}\n\nfunction compareValues(left: RantyValue, right: RantyValue): number {\n if (areEqual(left, right)) {\n return 0;\n }\n\n const leftNumeric = toNumericComparable(left);\n const rightNumeric = toNumericComparable(right);\n if (leftNumeric != null && rightNumeric != null) {\n if (typeof leftNumeric === \"bigint\" && typeof rightNumeric === \"bigint\") {\n return leftNumeric < rightNumeric ? -1 : 1;\n }\n return Number(leftNumeric) < Number(rightNumeric) ? -1 : 1;\n }\n\n if (typeof left === \"string\" && typeof right === \"string\") {\n return left < right ? -1 : 1;\n }\n\n const leftText = renderRantyValue(left);\n const rightText = renderRantyValue(right);\n if (leftText === rightText) {\n return 0;\n }\n return leftText < rightText ? -1 : 1;\n}\n\nfunction addValues(left: RantyValue, right: RantyValue): RantyValue {\n if (left == null && right == null) {\n return null;\n }\n if (right == null) {\n return cloneValue(left);\n }\n if (left == null) {\n return cloneValue(right);\n }\n\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left + right;\n }\n if (typeof left === \"bigint\" && typeof right === \"number\") {\n return Number.isInteger(right)\n ? left + BigInt(right)\n : Number(left) + right;\n }\n if (typeof left === \"number\" && typeof right === \"bigint\") {\n return Number.isInteger(left) ? BigInt(left) + right : left + Number(right);\n }\n if (typeof left === \"number\" && typeof right === \"number\") {\n return left + right;\n }\n if (typeof left === \"boolean\" && typeof right === \"boolean\") {\n return BigInt(Number(left) + Number(right));\n }\n if (typeof left === \"boolean\" && typeof right === \"bigint\") {\n return BigInt(Number(left)) + right;\n }\n if (typeof left === \"bigint\" && typeof right === \"boolean\") {\n return left + BigInt(Number(right));\n }\n if (typeof left === \"boolean\" && typeof right === \"number\") {\n return Number(left) + right;\n }\n if (typeof left === \"number\" && typeof right === \"boolean\") {\n return left + Number(right);\n }\n if (typeof left === \"string\" && typeof right === \"string\") {\n return left + right;\n }\n if (typeof left === \"string\") {\n return left + renderRantyValue(right);\n }\n if (typeof right === \"string\") {\n return renderRantyValue(left) + right;\n }\n if (Array.isArray(left) && Array.isArray(right)) {\n const kind =\n getCollectionKind(left) === \"tuple\" &&\n getCollectionKind(right) === \"tuple\"\n ? \"tuple\"\n : \"list\";\n return kind === \"tuple\"\n ? makeTupleValue([...left, ...right])\n : makeListValue([...left, ...right]);\n }\n if (left instanceof Map && right instanceof Map) {\n const map = cloneMap(left);\n for (const [key, value] of right.entries()) {\n map.set(key, value);\n }\n return map;\n }\n\n return `${renderRantyValue(left)}${renderRantyValue(right)}`;\n}\n\nfunction asNonNegativeCount(value: RantyValue, name: string): number {\n const count = Number(asInteger(value, name));\n if (!Number.isInteger(count) || count < 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `'${name}' expected a non-negative integer value`\n );\n }\n return count;\n}\n\nfunction expectListIndex(\n value: RantyValue,\n name: string,\n action: string\n): number {\n const index = Number(asInteger(value, name));\n if (!Number.isInteger(index)) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `cannot ${action} list by '${typeName(value)}' index`\n );\n }\n return index;\n}\n\nfunction ensureIndexRange(index: number, length: number): void {\n if (index < 0 || index >= length) {\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n \"index is out of range of list size\"\n );\n }\n}\n\nfunction orderedCollectionLength(value: RantyValue, name: string): number {\n if (typeof value === \"string\") {\n return Array.from(value).length;\n }\n if (Array.isArray(value)) {\n return value.length;\n }\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `${name}: type '${typeName(value)}' cannot be chunked`\n );\n}\n\nfunction orderedCollectionSlice(\n value: RantyValue,\n from: number,\n to: number\n): RantyValue {\n if (typeof value === \"string\") {\n return Array.from(value).slice(from, to).join(\"\");\n }\n if (Array.isArray(value)) {\n return getCollectionKind(value) === \"tuple\"\n ? makeTupleValue(value.slice(from, to))\n : makeListValue(value.slice(from, to));\n }\n return makeListValue();\n}\n\nfunction shuffleInPlace(context: Ranty, list: RantyValue[]): void {\n if (list.length === 0) {\n return;\n }\n\n for (let index = 0; index < list.length; index += 1) {\n const swapIndex = context.rng().nextUsize(list.length);\n const current = list[index];\n list[index] = list[swapIndex] ?? null;\n list[swapIndex] = current ?? null;\n }\n}\n\nfunction siftInPlace(context: Ranty, list: RantyValue[], size: number): void {\n while (list.length > size) {\n list.splice(context.rng().nextUsize(list.length), 1);\n }\n}\n\nfunction squishInPlace(\n context: Ranty,\n list: RantyValue[],\n targetSize: number\n): void {\n if (targetSize === 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"cannot squish to a target size of 0\"\n );\n }\n\n while (list.length > targetSize && list.length >= 2) {\n const leftIndex = context.rng().nextUsize(list.length - 1);\n const rightIndex = leftIndex + 1;\n const left = list[leftIndex] ?? null;\n const [right] = list.splice(rightIndex, 1);\n list[leftIndex] = addValues(left, right ?? null);\n }\n}\n\nexport function loadCollectionsStdlib(context: Ranty): void {\n addBuiltin(context, \"assoc\", (...args) => {\n if (args.length === 2 && Array.isArray(args[0]) && Array.isArray(args[1])) {\n const keys = asList(argAt(args, 0), \"assoc\");\n const values = asList(argAt(args, 1), \"assoc\");\n if (keys.length !== values.length) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"assoc: key and value counts don't match\"\n );\n }\n\n const map = new Map<string, RantyValue>();\n for (const [index, key] of keys.entries()) {\n map.set(mapKey(key), values[index] ?? null);\n }\n return map;\n }\n\n return valuesToMap(args);\n });\n\n addBuiltin(context, \"list\", (...args) => makeListValue(args));\n addBuiltin(context, \"tuple\", (...args) => makeTupleValue(args));\n addBuiltin(context, \"nlist\", (...args) =>\n makeListValue([makeListValue(args)])\n );\n\n addBuiltin(context, \"keys\", (...args) => {\n expectArgCount(\"keys\", args, 1);\n return makeListValue([...asMap(argAt(args, 0), \"keys\").keys()]);\n });\n\n addBuiltin(context, \"values\", (...args) => {\n expectArgCount(\"values\", args, 1);\n return makeListValue([...asMap(argAt(args, 0), \"values\").values()]);\n });\n\n addBuiltin(context, \"clear\", (...args) => {\n expectArgCount(\"clear\", args, 1);\n const value = argAt(args, 0);\n if (value instanceof Map) {\n value.clear();\n return \"\";\n }\n const list = asList(value, \"clear\");\n list.length = 0;\n return \"\";\n });\n\n addBuiltin(context, \"has\", (...args) => {\n expectArgCount(\"has\", args, 2);\n const value = argAt(args, 0);\n const key = argAt(args, 1);\n if (value instanceof Map) {\n return typeof key === \"string\" && value.has(key);\n }\n if (Array.isArray(value)) {\n return value.some((item) => areEqual(item, key));\n }\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `unable to check if value of type '${typeName(value)}' contains element of type '${typeName(\n key\n )}'`\n );\n });\n\n addBuiltin(context, \"insert\", (...args) => {\n expectArgCount(\"insert\", args, 3);\n const target = argAt(args, 0);\n const value = argAt(args, 1);\n const position = argAt(args, 2);\n\n if (target instanceof Map) {\n target.set(mapKey(position), value);\n return \"\";\n }\n\n const list = asList(target, \"insert\");\n const index = expectListIndex(position, \"insert\", \"insert into\");\n if (index < 0 || index > list.length) {\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n \"index is out of range of list size\"\n );\n }\n list.splice(index, 0, value);\n return \"\";\n });\n\n addBuiltin(context, \"remove\", (...args) => {\n expectArgCount(\"remove\", args, 2);\n const target = argAt(args, 0);\n const position = argAt(args, 1);\n\n if (target instanceof Map) {\n target.delete(mapKey(position));\n return \"\";\n }\n\n const list = asList(target, \"remove\");\n const index = expectListIndex(position, \"remove\", \"remove from\");\n ensureIndexRange(index, list.length);\n list.splice(index, 1);\n return \"\";\n });\n\n addBuiltin(context, \"take\", (...args) => {\n expectArgCount(\"take\", args, 2);\n const target = argAt(args, 0);\n const position = argAt(args, 1);\n\n if (target instanceof Map) {\n const key = mapKey(position);\n if (!target.has(key)) {\n throw new RuntimeError(\n RuntimeErrorType.KeyError,\n `tried to take non-existent key: '${key}'`\n );\n }\n const value = target.get(key) ?? null;\n target.delete(key);\n return value;\n }\n\n const list = asList(target, \"take\");\n const index = expectListIndex(position, \"take\", \"take from\");\n ensureIndexRange(index, list.length);\n list.splice(index, 1);\n return \"\";\n });\n\n addBuiltin(context, \"join\", (...args) => {\n if (args.length < 1 || args.length > 2) {\n throw new TypeError(\"join expects 1 or 2 arguments\");\n }\n const list = asList(argAt(args, 0), \"join\");\n const separator = args.length === 2 ? renderRantyValue(argAt(args, 1)) : \"\";\n return list.map((item) => renderRantyValue(item)).join(separator);\n });\n\n addBuiltin(context, \"oxford-join\", (...args) => {\n expectArgCount(\"oxford-join\", args, 4);\n const comma = renderRantyValue(argAt(args, 0));\n const conjunction = renderRantyValue(argAt(args, 1));\n const commaConjunction = renderRantyValue(argAt(args, 2));\n const list = asList(argAt(args, 3), \"oxford-join\");\n\n return list\n .map((value, index) => {\n if (index === 0 || list.length === 1) {\n return renderRantyValue(value);\n }\n if (index === 1 && list.length === 2) {\n return `${conjunction}${renderRantyValue(value)}`;\n }\n if (index < list.length - 1) {\n return `${comma}${renderRantyValue(value)}`;\n }\n return `${commaConjunction}${renderRantyValue(value)}`;\n })\n .join(\"\");\n });\n\n addBuiltin(context, \"sum\", (...args) => {\n expectArgCount(\"sum\", args, 1);\n const list = asList(argAt(args, 0), \"sum\");\n if (list.length === 0) {\n return \"\";\n }\n let result = cloneValue(list[0] ?? null);\n for (let index = 1; index < list.length; index += 1) {\n result = addValues(result, list[index] ?? null);\n }\n return result;\n });\n\n addBuiltin(context, \"push\", (...args) => {\n expectArgCount(\"push\", args, 2);\n const list = asList(argAt(args, 0), \"push\");\n list.push(argAt(args, 1));\n return \"\";\n });\n\n addBuiltin(context, \"pop\", (...args) => {\n expectArgCount(\"pop\", args, 1);\n return asList(argAt(args, 0), \"pop\").pop() ?? null;\n });\n\n addBuiltin(context, \"rev\", (...args) => {\n expectArgCount(\"rev\", args, 1);\n const value = argAt(args, 0);\n if (typeof value === \"string\") {\n return Array.from(value).reverse().join(\"\");\n }\n return [...asList(value, \"rev\")].reverse();\n });\n\n addBuiltin(context, \"translate\", (...args) => {\n expectArgCount(\"translate\", args, 2);\n const list = asList(argAt(args, 0), \"translate\");\n const map = asMap(argAt(args, 1), \"translate\");\n return list.map((value) => map.get(renderRantyValue(value)) ?? value);\n });\n\n addBuiltin(context, \"filter\", (...args) => {\n expectArgCount(\"filter\", args, 2);\n const list = asList(argAt(args, 0), \"filter\");\n const predicate = asCallable(argAt(args, 1), \"filter\");\n const result: RantyValue[] = [];\n\n for (const item of list) {\n const passed = predicate(item);\n if (typeof passed !== \"boolean\") {\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `filter callback expected to return 'bool' value, but returned '${typeName(\n passed as RantyValue\n )}' instead`\n );\n }\n if (passed) {\n result.push(item);\n }\n }\n\n return result;\n });\n\n addBuiltin(context, \"map\", (...args) => {\n expectArgCount(\"map\", args, 2);\n const list = asList(argAt(args, 0), \"map\");\n const mapFn = asCallable(argAt(args, 1), \"map\");\n return list.map((item) => mapFn(item));\n });\n\n addBuiltin(context, \"zip\", (...args) => {\n expectArgCount(\"zip\", args, 3);\n const listA = asList(argAt(args, 0), \"zip\");\n const listB = asList(argAt(args, 1), \"zip\");\n const zipFn = asCallable(argAt(args, 2), \"zip\");\n const result: RantyValue[] = [];\n const maxLength = Math.max(listA.length, listB.length);\n\n for (let index = 0; index < maxLength; index += 1) {\n result.push(zipFn(listA[index] ?? null, listB[index] ?? null));\n }\n\n return result;\n });\n\n addBuiltin(context, \"augment-self\", (...args) => {\n expectArgCount(\"augment-self\", args, 2);\n const toMap = asMap(argAt(args, 0), \"augment-self\");\n const fromMap = asMap(argAt(args, 1), \"augment-self\");\n\n for (const [key, value] of fromMap.entries()) {\n const existing = getMapChainValue(toMap, key);\n toMap.set(key, existing.found ? addValues(existing.value, value) : value);\n }\n\n return \"\";\n });\n\n addBuiltin(context, \"augment-thru\", (...args) => {\n expectArgCount(\"augment-thru\", args, 2);\n const toMap = asMap(argAt(args, 0), \"augment-thru\");\n const fromMap = asMap(argAt(args, 1), \"augment-thru\");\n\n for (const [key, value] of fromMap.entries()) {\n const existing = getMapChainValue(toMap, key);\n toMap.set(key, existing.found ? addValues(existing.value, value) : value);\n }\n\n return toMap;\n });\n\n addBuiltin(context, \"augment\", (...args) => {\n expectArgCount(\"augment\", args, 2);\n const copy = cloneMap(asMap(argAt(args, 0), \"augment\"));\n const fromMap = asMap(argAt(args, 1), \"augment\");\n\n for (const [key, value] of fromMap.entries()) {\n const existing = getMapChainValue(copy, key);\n copy.set(key, existing.found ? addValues(existing.value, value) : value);\n }\n\n return copy;\n });\n\n addBuiltin(context, \"index-of\", (...args) => {\n expectArgCount(\"index-of\", args, 2);\n const list = asList(argAt(args, 0), \"index-of\");\n const value = argAt(args, 1);\n const index = list.findIndex((item) => areEqual(item, value));\n return index >= 0 ? BigInt(index) : null;\n });\n\n addBuiltin(context, \"last-index-of\", (...args) => {\n expectArgCount(\"last-index-of\", args, 2);\n const list = asList(argAt(args, 0), \"last-index-of\");\n const value = argAt(args, 1);\n for (let index = list.length - 1; index >= 0; index -= 1) {\n if (areEqual(list[index] ?? null, value)) {\n return BigInt(index);\n }\n }\n return null;\n });\n\n addBuiltin(context, \"shuffle-self\", (...args) => {\n expectArgCount(\"shuffle-self\", args, 1);\n shuffleInPlace(context, asList(argAt(args, 0), \"shuffle-self\"));\n return \"\";\n });\n\n addBuiltin(context, \"shuffle-thru\", (...args) => {\n expectArgCount(\"shuffle-thru\", args, 1);\n const list = asList(argAt(args, 0), \"shuffle-thru\");\n shuffleInPlace(context, list);\n return list;\n });\n\n addBuiltin(context, \"shuffle\", (...args) => {\n expectArgCount(\"shuffle\", args, 1);\n const list = [...asList(argAt(args, 0), \"shuffle\")];\n shuffleInPlace(context, list);\n return list;\n });\n\n addBuiltin(context, \"sort-self\", (...args) => {\n expectArgCount(\"sort-self\", args, 1);\n asList(argAt(args, 0), \"sort-self\").sort(compareValues);\n return \"\";\n });\n\n addBuiltin(context, \"sort-thru\", (...args) => {\n expectArgCount(\"sort-thru\", args, 1);\n const list = asList(argAt(args, 0), \"sort-thru\");\n list.sort(compareValues);\n return list;\n });\n\n addBuiltin(context, \"sort\", (...args) => {\n expectArgCount(\"sort\", args, 1);\n return [...asList(argAt(args, 0), \"sort\")].sort(compareValues);\n });\n\n addBuiltin(context, \"sift-self\", (...args) => {\n expectArgCount(\"sift-self\", args, 2);\n const list = asList(argAt(args, 0), \"sift-self\");\n siftInPlace(context, list, asNonNegativeCount(argAt(args, 1), \"sift-self\"));\n return \"\";\n });\n\n addBuiltin(context, \"sift-thru\", (...args) => {\n expectArgCount(\"sift-thru\", args, 2);\n const list = asList(argAt(args, 0), \"sift-thru\");\n siftInPlace(context, list, asNonNegativeCount(argAt(args, 1), \"sift-thru\"));\n return list;\n });\n\n addBuiltin(context, \"sift\", (...args) => {\n expectArgCount(\"sift\", args, 2);\n const list = [...asList(argAt(args, 0), \"sift\")];\n siftInPlace(context, list, asNonNegativeCount(argAt(args, 1), \"sift\"));\n return list;\n });\n\n addBuiltin(context, \"squish-self\", (...args) => {\n expectArgCount(\"squish-self\", args, 2);\n const list = asList(argAt(args, 0), \"squish-self\");\n squishInPlace(\n context,\n list,\n asNonNegativeCount(argAt(args, 1), \"squish-self\")\n );\n return \"\";\n });\n\n addBuiltin(context, \"squish-thru\", (...args) => {\n expectArgCount(\"squish-thru\", args, 2);\n const list = asList(argAt(args, 0), \"squish-thru\");\n squishInPlace(\n context,\n list,\n asNonNegativeCount(argAt(args, 1), \"squish-thru\")\n );\n return list;\n });\n\n addBuiltin(context, \"squish\", (...args) => {\n expectArgCount(\"squish\", args, 2);\n const list = [...asList(argAt(args, 0), \"squish\")];\n squishInPlace(context, list, asNonNegativeCount(argAt(args, 1), \"squish\"));\n return list;\n });\n\n addBuiltin(context, \"chunks\", (...args) => {\n expectArgCount(\"chunks\", args, 2);\n const collection = argAt(args, 0);\n const chunkCount = asNonNegativeCount(argAt(args, 1), \"chunks\");\n const chunked: RantyValue[] = [];\n\n if (chunkCount > 0) {\n const length = orderedCollectionLength(collection, \"chunks\");\n const minChunkSize = Math.floor(length / chunkCount);\n const maxChunkSize = minChunkSize + 1;\n const biggerChunkCount = length % chunkCount;\n\n for (let index = 0; index < chunkCount; index += 1) {\n const chunkSize =\n index < biggerChunkCount ? maxChunkSize : minChunkSize;\n const offset =\n index < biggerChunkCount\n ? index * maxChunkSize\n : biggerChunkCount * maxChunkSize +\n (index - biggerChunkCount) * minChunkSize;\n chunked.push(\n orderedCollectionSlice(collection, offset, offset + chunkSize)\n );\n }\n }\n\n return chunked;\n });\n\n addBuiltin(context, \"fill-self\", (...args) => {\n expectArgCount(\"fill-self\", args, 2);\n const list = asList(argAt(args, 0), \"fill-self\");\n const value = argAt(args, 1);\n for (let index = 0; index < list.length; index += 1) {\n list[index] = value;\n }\n return \"\";\n });\n\n addBuiltin(context, \"fill-thru\", (...args) => {\n expectArgCount(\"fill-thru\", args, 2);\n const list = asList(argAt(args, 0), \"fill-thru\");\n const value = argAt(args, 1);\n for (let index = 0; index < list.length; index += 1) {\n list[index] = value;\n }\n return list;\n });\n}\n","import type { Ranty } from \"../ranty\";\nimport {\n addBuiltin,\n areEqual,\n argAt,\n asNumber,\n expectArgCount\n} from \"./shared\";\n\nexport function loadCompareStdlib(context: Ranty): void {\n addBuiltin(context, \"eq\", (...args) => {\n expectArgCount(\"eq\", args, 2);\n return areEqual(argAt(args, 0), argAt(args, 1));\n });\n\n addBuiltin(context, \"neq\", (...args) => {\n expectArgCount(\"neq\", args, 2);\n return !areEqual(argAt(args, 0), argAt(args, 1));\n });\n\n addBuiltin(context, \"gt\", (...args) => {\n expectArgCount(\"gt\", args, 2);\n return asNumber(argAt(args, 0), \"gt\") > asNumber(argAt(args, 1), \"gt\");\n });\n\n addBuiltin(context, \"lt\", (...args) => {\n expectArgCount(\"lt\", args, 2);\n return asNumber(argAt(args, 0), \"lt\") < asNumber(argAt(args, 1), \"lt\");\n });\n\n addBuiltin(context, \"ge\", (...args) => {\n expectArgCount(\"ge\", args, 2);\n return asNumber(argAt(args, 0), \"ge\") >= asNumber(argAt(args, 1), \"ge\");\n });\n\n addBuiltin(context, \"le\", (...args) => {\n expectArgCount(\"le\", args, 2);\n return asNumber(argAt(args, 0), \"le\") <= asNumber(argAt(args, 1), \"le\");\n });\n}\n","import { toExactInt } from \"../int64\";\nimport type { Ranty } from \"../ranty\";\nimport {\n makeListValue,\n makeTupleValue,\n type RantyRange,\n type RantyValue\n} from \"../values\";\nimport {\n addBuiltin,\n argAt,\n expectArgCount,\n toBoolean,\n toFloat,\n toInt,\n toStringValue\n} from \"./shared\";\n\nfunction isRangeValue(value: RantyValue): value is RantyRange {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"range\"\n );\n}\n\nfunction rangeStep(range: RantyRange): bigint | number {\n const isBig =\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\" ||\n typeof range.step === \"bigint\" ||\n typeof range.step === \"object\";\n\n if (range.step !== undefined) {\n if (isBig) {\n const raw =\n typeof range.step === \"bigint\" ? range.step : toExactInt(range.step);\n if (raw === 0n) {\n return 0n;\n }\n const magnitude = raw < 0n ? -raw : raw;\n return toExactInt(range.start) <= toExactInt(range.end)\n ? magnitude\n : -magnitude;\n }\n\n const raw = Number(range.step);\n if (raw === 0) {\n return 0;\n }\n const magnitude = Math.abs(raw);\n return Number(range.start) <= Number(range.end) ? magnitude : -magnitude;\n }\n\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\"\n ) {\n return toExactInt(range.start) <= toExactInt(range.end) ? 1n : -1n;\n }\n\n return Number(range.start) <= Number(range.end) ? 1 : -1;\n}\n\nfunction rangeLength(range: RantyRange): number {\n const step = rangeStep(range);\n\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof step === \"bigint\"\n ) {\n const start = toExactInt(range.start);\n const end = toExactInt(range.end);\n const stride = typeof step === \"bigint\" ? step : toExactInt(step);\n if (stride === 0n) {\n return 0;\n }\n if ((stride > 0n && start >= end) || (stride < 0n && start <= end)) {\n return 0;\n }\n const distance = stride > 0n ? end - start : start - end;\n const magnitude = stride > 0n ? stride : -stride;\n return Number((distance + magnitude - 1n) / magnitude);\n }\n\n const start = Number(range.start);\n const end = Number(range.end);\n const stride = Number(step);\n if (\n !Number.isFinite(start) ||\n !Number.isFinite(end) ||\n !Number.isFinite(stride) ||\n stride === 0\n ) {\n return 0;\n }\n if ((stride > 0 && start >= end) || (stride < 0 && start <= end)) {\n return 0;\n }\n return Math.max(0, Math.ceil(Math.abs((end - start) / stride)));\n}\n\nfunction rangeValueAt(range: RantyRange, index: number): RantyValue {\n const step = rangeStep(range);\n if (\n typeof range.start === \"bigint\" ||\n typeof step === \"bigint\" ||\n typeof range.start === \"object\"\n ) {\n return (\n toExactInt(range.start) +\n BigInt(index) * (typeof step === \"bigint\" ? step : toExactInt(step))\n );\n }\n\n return Number(range.start) + index * Number(step);\n}\n\nfunction rangeItems(range: RantyRange): readonly RantyValue[] {\n return Array.from({ length: rangeLength(range) }, (_, index) =>\n rangeValueAt(range, index)\n );\n}\n\nexport function loadConvertStdlib(context: Ranty): void {\n addBuiltin(context, \"to-int\", (...args) => {\n expectArgCount(\"to-int\", args, 1);\n return toInt(argAt(args, 0), \"to-int\");\n });\n\n addBuiltin(context, \"to-float\", (...args) => {\n expectArgCount(\"to-float\", args, 1);\n return toFloat(argAt(args, 0), \"to-float\");\n });\n\n addBuiltin(context, \"to-string\", (...args) => {\n expectArgCount(\"to-string\", args, 1);\n return toStringValue(argAt(args, 0));\n });\n\n addBuiltin(context, \"to-bool\", (...args) => {\n expectArgCount(\"to-bool\", args, 1);\n return toBoolean(argAt(args, 0));\n });\n\n addBuiltin(context, \"to-list\", (...args) => {\n expectArgCount(\"to-list\", args, 1);\n const value = argAt(args, 0);\n if (Array.isArray(value)) {\n return makeListValue(value);\n }\n if (isRangeValue(value)) {\n return makeListValue(rangeItems(value));\n }\n if (typeof value === \"string\") {\n return makeListValue(Array.from(value));\n }\n return makeListValue([value]);\n });\n\n addBuiltin(context, \"to-tuple\", (...args) => {\n expectArgCount(\"to-tuple\", args, 1);\n const value = argAt(args, 0);\n if (Array.isArray(value)) {\n return makeTupleValue(value);\n }\n if (isRangeValue(value)) {\n return makeTupleValue(rangeItems(value));\n }\n if (typeof value === \"string\") {\n return makeTupleValue(Array.from(value));\n }\n return makeTupleValue([value]);\n });\n}\n","import { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport type {\n Endianness,\n InfinityStyle,\n NumeralSystem,\n SignStyle,\n WhitespaceFormatMode\n} from \"../format-state\";\nimport type { Ranty } from \"../ranty\";\nimport type { RantyValue } from \"../values\";\nimport { addBuiltin } from \"./shared\";\n\nconst NUM_FMT_KEYS = [\n \"system\",\n \"alt\",\n \"precision\",\n \"padding\",\n \"upper\",\n \"endian\",\n \"sign\",\n \"infinity\",\n \"group-sep\",\n \"decimal-sep\"\n] as const;\n\nfunction expectStringArg(name: string, value: RantyValue): string {\n if (typeof value === \"string\") {\n return value;\n }\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a string value`\n );\n}\n\nfunction expectBoolArg(name: string, value: RantyValue): boolean {\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a bool value`\n );\n}\n\nfunction expectIntArg(name: string, value: RantyValue): number {\n if (typeof value === \"bigint\") {\n return Number(value);\n }\n if (typeof value === \"number\" && Number.isInteger(value)) {\n return value;\n }\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected an int value`\n );\n}\n\nfunction expectMapArg(\n name: string,\n value: RantyValue\n): Map<string, RantyValue> {\n if (value instanceof Map) {\n return value;\n }\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n `'${name}' expected a map value`\n );\n}\n\nfunction parseWhitespaceMode(\n name: string,\n value: RantyValue\n): WhitespaceFormatMode {\n const mode = expectStringArg(name, value).toLowerCase();\n if (\n mode === \"default\" ||\n mode === \"ignore-all\" ||\n mode === \"verbatim\" ||\n mode === \"custom\"\n ) {\n return mode;\n }\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `invalid whitespace normalization mode: '${mode}'`\n );\n}\n\nfunction parseSystem(name: string, value: RantyValue): NumeralSystem {\n const system = expectStringArg(name, value).toLowerCase();\n if (\n system === \"west-arabic\" ||\n system === \"east-arabic\" ||\n system === \"persian\" ||\n system === \"roman\" ||\n system === \"babylonian\" ||\n system === \"hex\" ||\n system === \"octal\" ||\n system === \"binary\" ||\n system === \"alpha\"\n ) {\n return system;\n }\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `invalid numeral system: '${system}'`\n );\n}\n\nfunction parseEndian(name: string, value: RantyValue): Endianness {\n const endian = expectStringArg(name, value).toLowerCase();\n if (endian === \"big\" || endian === \"little\") {\n return endian;\n }\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `invalid endianness: '${endian}'`\n );\n}\n\nfunction parseSign(name: string, value: RantyValue): SignStyle {\n const sign = expectStringArg(name, value).toLowerCase();\n if (sign === \"default\" || sign === \"negative-only\") {\n return \"negative-only\";\n }\n if (sign === \"explicit\" || sign === \"explicit-non-zero\") {\n return sign;\n }\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `invalid sign style: '${sign}'`\n );\n}\n\nfunction parseInfinity(name: string, value: RantyValue): InfinityStyle {\n const style = expectStringArg(name, value).toLowerCase();\n if (style === \"default\" || style === \"keyword\") {\n return \"keyword\";\n }\n if (style === \"symbol\") {\n return \"symbol\";\n }\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `invalid infinity style: '${style}'`\n );\n}\n\nfunction buildNumFmtMap(context: Ranty): Map<string, RantyValue> {\n const { number } = context.formatState();\n return new Map<string, RantyValue>([\n [\"system\", number.system],\n [\"alt\", number.alt],\n [\"precision\", BigInt(number.precision ?? -1)],\n [\"padding\", BigInt(number.padding)],\n [\"upper\", number.upper],\n [\"endian\", number.endian],\n [\"sign\", number.sign],\n [\"infinity\", number.infinity],\n [\"group-sep\", number.groupSep],\n [\"decimal-sep\", number.decimalSep]\n ]);\n}\n\nexport function loadFormatStdlib(context: Ranty): void {\n addBuiltin(context, \"ws-fmt\", (...args) => {\n if (args.length === 0) {\n const whitespace = context.formatState().whitespace;\n return whitespace.mode === \"custom\"\n ? whitespace.customValue\n : whitespace.mode;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'ws-fmt' expected at most 2 argument(s), got ${args.length}`\n );\n }\n\n const mode = parseWhitespaceMode(\"ws-fmt\", args[0] ?? null);\n const whitespace = context.formatState().whitespace;\n whitespace.mode = mode;\n whitespace.customValue = mode === \"custom\" ? (args[1] ?? null) : null;\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt\", (...args) => {\n if (args.length === 0) {\n return buildNumFmtMap(context);\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt' expected at most 2 argument(s), got ${args.length}`\n );\n }\n\n if (!(args[0] instanceof Map)) {\n if (\n args.length === 1 &&\n (typeof args[0] === \"bigint\" || typeof args[0] === \"number\")\n ) {\n return buildNumFmtMap(context);\n }\n throw new RuntimeError(\n RuntimeErrorType.TypeError,\n \"'num-fmt' expected a map value\"\n );\n }\n\n const options = expectMapArg(\"num-fmt\", args[0]);\n const format = context.formatState().number;\n\n for (const [key, value] of options.entries()) {\n switch (key.toLowerCase()) {\n case \"system\":\n format.system = parseSystem(\"num-fmt\", value);\n break;\n case \"alt\":\n format.alt = expectBoolArg(\"num-fmt\", value);\n break;\n case \"precision\": {\n const precision = expectIntArg(\"num-fmt\", value);\n format.precision = precision >= 0 ? precision : null;\n break;\n }\n case \"padding\":\n format.padding = Math.max(0, expectIntArg(\"num-fmt\", value));\n break;\n case \"upper\":\n format.upper = expectBoolArg(\"num-fmt\", value);\n break;\n case \"endian\":\n format.endian = parseEndian(\"num-fmt\", value);\n break;\n case \"sign\":\n format.sign = parseSign(\"num-fmt\", value);\n break;\n case \"infinity\":\n format.infinity = parseInfinity(\"num-fmt\", value);\n break;\n case \"group-sep\":\n format.groupSep = expectStringArg(\"num-fmt\", value);\n break;\n case \"decimal-sep\":\n format.decimalSep = expectStringArg(\"num-fmt\", value);\n break;\n default:\n break;\n }\n }\n\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-system\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.system;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-system' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.system = parseSystem(\n \"num-fmt-system\",\n args[0] ?? null\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-alt\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.alt;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-alt' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.alt = expectBoolArg(\n \"num-fmt-alt\",\n args[0] ?? null\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-padding\", (...args) => {\n if (args.length === 0) {\n return BigInt(context.formatState().number.padding);\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-padding' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.padding = Math.max(\n 0,\n expectIntArg(\"num-fmt-padding\", args[0] ?? null)\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-precision\", (...args) => {\n if (args.length === 0) {\n return BigInt(context.formatState().number.precision ?? -1);\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-precision' expected at most 2 argument(s), got ${args.length}`\n );\n }\n const precision = expectIntArg(\"num-fmt-precision\", args[0] ?? null);\n context.formatState().number.precision = precision >= 0 ? precision : null;\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-upper\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.upper;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-upper' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.upper = expectBoolArg(\n \"num-fmt-upper\",\n args[0] ?? null\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-endian\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.endian;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-endian' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.endian = parseEndian(\n \"num-fmt-endian\",\n args[0] ?? null\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-sign\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.sign;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-sign' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.sign = parseSign(\n \"num-fmt-sign\",\n args[0] ?? null\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-infinity\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.infinity;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-infinity' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.infinity = parseInfinity(\n \"num-fmt-infinity\",\n args[0] ?? null\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-group-sep\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.groupSep;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-group-sep' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.groupSep = expectStringArg(\n \"num-fmt-group-sep\",\n args[0] ?? null\n );\n return \"\";\n });\n\n addBuiltin(context, \"num-fmt-decimal-sep\", (...args) => {\n if (args.length === 0) {\n return context.formatState().number.decimalSep;\n }\n if (args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'num-fmt-decimal-sep' expected at most 2 argument(s), got ${args.length}`\n );\n }\n context.formatState().number.decimalSep = expectStringArg(\n \"num-fmt-decimal-sep\",\n args[0] ?? null\n );\n return \"\";\n });\n\n void NUM_FMT_KEYS;\n}\n","import { BUILD_VERSION, RANTY_LANG_VERSION } from \"../constants\";\nimport { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport { toExactInt } from \"../int64\";\nimport type { Ranty } from \"../ranty\";\nimport { getCollectionKind, type RantyRange, type RantyValue } from \"../values\";\nimport { renderRantyValue } from \"../util\";\nimport {\n addBuiltin,\n addConst,\n argAt,\n asCallable,\n expectArgCount,\n expectMinArgCount,\n isTruthy,\n rangeValue\n} from \"./shared\";\n\nconst MIN_INT = -(1n << 63n);\nconst MAX_INT = (1n << 63n) - 1n;\n\nfunction typeName(value: RantyValue): string {\n if (value == null) {\n return \"nothing\";\n }\n if (typeof value === \"bigint\") {\n return \"int\";\n }\n if (typeof value === \"number\") {\n return \"float\";\n }\n if (typeof value === \"string\") {\n return \"string\";\n }\n if (typeof value === \"boolean\") {\n return \"bool\";\n }\n if (typeof value === \"function\") {\n return \"function\";\n }\n if (value instanceof Map) {\n return \"map\";\n }\n if (Array.isArray(value)) {\n return getCollectionKind(value) === \"tuple\" ? \"tuple\" : \"list\";\n }\n if (typeof value === \"object\" && value !== null && \"type\" in value) {\n if (value.type === \"range\") {\n return \"range\";\n }\n if (value.type === \"selector\") {\n return \"selector\";\n }\n }\n return \"value\";\n}\n\nfunction isRangeValue(value: RantyValue): value is RantyRange {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"range\"\n );\n}\n\nfunction rangeStep(range: RantyRange): bigint | number {\n const isBig =\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\" ||\n typeof range.step === \"bigint\" ||\n typeof range.step === \"object\";\n\n if (range.step !== undefined) {\n if (isBig) {\n const raw =\n typeof range.step === \"bigint\" ? range.step : toExactInt(range.step);\n if (raw === 0n) {\n return 0n;\n }\n const magnitude = raw < 0n ? -raw : raw;\n return toExactInt(range.start) <= toExactInt(range.end)\n ? magnitude\n : -magnitude;\n }\n\n const raw = Number(range.step);\n if (raw === 0) {\n return 0;\n }\n const magnitude = Math.abs(raw);\n return Number(range.start) <= Number(range.end) ? magnitude : -magnitude;\n }\n\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\"\n ) {\n return toExactInt(range.start) <= toExactInt(range.end) ? 1n : -1n;\n }\n\n return Number(range.start) <= Number(range.end) ? 1 : -1;\n}\n\nfunction rangeLength(range: RantyRange): number {\n const step = rangeStep(range);\n\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof step === \"bigint\"\n ) {\n const start = toExactInt(range.start);\n const end = toExactInt(range.end);\n const stride = typeof step === \"bigint\" ? step : toExactInt(step);\n if (stride === 0n) {\n return 0;\n }\n if ((stride > 0n && start >= end) || (stride < 0n && start <= end)) {\n return 0;\n }\n const distance = stride > 0n ? end - start : start - end;\n const magnitude = stride > 0n ? stride : -stride;\n return Number((distance + magnitude - 1n) / magnitude);\n }\n\n const start = Number(range.start);\n const end = Number(range.end);\n const stride = Number(step);\n if (\n !Number.isFinite(start) ||\n !Number.isFinite(end) ||\n !Number.isFinite(stride) ||\n stride === 0\n ) {\n return 0;\n }\n if ((stride > 0 && start >= end) || (stride < 0 && start <= end)) {\n return 0;\n }\n return Math.max(0, Math.ceil(Math.abs((end - start) / stride)));\n}\n\nfunction inclusiveRangeEnd(\n start: bigint | number,\n end: bigint | number,\n step?: bigint | number\n): bigint | number {\n if (\n typeof start === \"bigint\" ||\n typeof end === \"bigint\" ||\n typeof step === \"bigint\"\n ) {\n const startInt = typeof start === \"bigint\" ? start : BigInt(start);\n const endInt = typeof end === \"bigint\" ? end : BigInt(end);\n const rawStep =\n step === undefined\n ? startInt <= endInt\n ? 1n\n : -1n\n : typeof step === \"bigint\"\n ? step\n : BigInt(step);\n const direction = rawStep === 0n ? 0n : rawStep > 0n ? 1n : -1n;\n return endInt + direction;\n }\n\n const rawStep =\n step === undefined ? (Number(start) <= Number(end) ? 1 : -1) : Number(step);\n const direction = rawStep === 0 ? 0 : rawStep > 0 ? 1 : -1;\n return Number(end) + direction;\n}\n\nfunction defaultModuleAlias(modulePath: string): string {\n const normalized = modulePath.replaceAll(\"\\\\\", \"/\");\n const base = normalized.split(\"/\").at(-1) ?? normalized;\n return base.replace(/\\.(ranty|rant)$/u, \"\");\n}\n\nexport function loadGeneralStdlib(context: Ranty): void {\n addConst(context, \"BUILD_VERSION\", BUILD_VERSION);\n addConst(context, \"RANTY_VERSION\", RANTY_LANG_VERSION);\n addConst(context, \"EPSILON\", Number.EPSILON);\n addConst(context, \"MIN_FLOAT\", Number.MIN_VALUE);\n addConst(context, \"MAX_FLOAT\", Number.MAX_VALUE);\n addConst(context, \"MIN_INT\", MIN_INT);\n addConst(context, \"MAX_INT\", MAX_INT);\n addConst(context, \"INFINITY\", Number.POSITIVE_INFINITY);\n addConst(context, \"NEG_INFINITY\", Number.NEGATIVE_INFINITY);\n addConst(context, \"NAN\", Number.NaN);\n\n addBuiltin(context, \"call\", (...args) => {\n expectMinArgCount(\"call\", args, 1);\n return asCallable(argAt(args, 0), \"call\")(...args.slice(1));\n });\n\n addBuiltin(context, \"cat\", (...args) => {\n if (args.length === 0) {\n return \"\";\n }\n if (args.length === 1) {\n return argAt(args, 0);\n }\n return args.map((arg) => renderRantyValue(arg)).join(\"\");\n });\n\n addBuiltin(context, \"either\", (...args) => {\n expectArgCount(\"either\", args, 3);\n return isTruthy(argAt(args, 0)) ? argAt(args, 1) : argAt(args, 2);\n });\n\n addBuiltin(context, \"alt\", (...args) => {\n expectMinArgCount(\"alt\", args, 1);\n return args.find((arg) => arg != null) ?? \"\";\n });\n\n addBuiltin(context, \"len\", (...args) => {\n expectArgCount(\"len\", args, 1);\n const value = argAt(args, 0);\n if (typeof value === \"string\") {\n return BigInt(Array.from(value).length);\n }\n if (Array.isArray(value)) {\n return BigInt(value.length);\n }\n if (value instanceof Map) {\n return BigInt(value.size);\n }\n if (isRangeValue(value)) {\n return BigInt(rangeLength(value));\n }\n return value == null ? 0n : 1n;\n });\n\n addBuiltin(context, \"type\", (...args) => {\n expectArgCount(\"type\", args, 1);\n return typeName(argAt(args, 0));\n });\n\n addBuiltin(context, \"seed\", (...args) => {\n expectArgCount(\"seed\", args, 0);\n return context.seed();\n });\n\n addBuiltin(context, \"tap\", (..._args) => {\n return \"\";\n });\n\n addBuiltin(context, \"print\", (...args) =>\n args.map((arg) => renderRantyValue(arg)).join(\"\")\n );\n\n addBuiltin(context, \"error\", (...args) => {\n expectArgCount(\"error\", args, 1);\n throw new RuntimeError(\n RuntimeErrorType.UserError,\n renderRantyValue(argAt(args, 0))\n );\n });\n\n addBuiltin(context, \"range\", (...args) => {\n if (args.length < 2 || args.length > 3) {\n throw new TypeError(\"range expects 2 or 3 arguments\");\n }\n return rangeValue(\n argAt(args, 0) as bigint | number,\n argAt(args, 1) as bigint | number,\n args.length === 3 ? (argAt(args, 2) as bigint | number) : undefined\n );\n });\n\n addBuiltin(context, \"irange\", (...args) => {\n if (args.length < 2 || args.length > 3) {\n throw new TypeError(\"irange expects 2 or 3 arguments\");\n }\n const start = argAt(args, 0) as bigint | number;\n const end = argAt(args, 1) as bigint | number;\n const step =\n args.length === 3 ? (argAt(args, 2) as bigint | number) : undefined;\n return rangeValue(start, inclusiveRangeEnd(start, end, step), step);\n });\n\n addBuiltin(context, \"require\", (...args) => {\n expectArgCount(\"require\", args, 1);\n const modulePath = argAt(args, 0);\n if (typeof modulePath !== \"string\") {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"'require' expected a string path\"\n );\n }\n\n const activeVm = context.activeVm();\n if (!activeVm) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n \"require requires an active VM\"\n );\n }\n\n const moduleValue = context.loadModule(modulePath, activeVm.program.info);\n activeVm.bindLocal(defaultModuleAlias(modulePath), moduleValue);\n return \"\";\n });\n\n addBuiltin(context, \"fork\", (...args) => {\n if (args.length > 1) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'fork' expected at most 1 argument(s), got ${args.length}`\n );\n }\n\n const seed = args[0];\n if (seed == null) {\n context.pushRng(context.rng().forkRandom());\n return \"\";\n }\n\n if (typeof seed === \"bigint\" || typeof seed === \"number\") {\n context.pushRng(context.rng().forkI64(seed));\n return \"\";\n }\n\n if (typeof seed === \"string\") {\n context.pushRng(context.rng().forkStr(seed));\n return \"\";\n }\n\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n `seeding fork with '${typeName(seed)}' value is not supported`\n );\n });\n\n addBuiltin(context, \"unfork\", (...args) => {\n expectArgCount(\"unfork\", args, 0);\n if (!context.popRng()) {\n throw new RuntimeError(\n RuntimeErrorType.InvalidOperation,\n \"cannot unfork root seed\"\n );\n }\n return \"\";\n });\n\n addBuiltin(context, \"try\", (...args) => {\n if (args.length < 1 || args.length > 2) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'try' expected 1 or 2 argument(s), got ${args.length}`\n );\n }\n\n const contextFn = asCallable(argAt(args, 0), \"try\");\n const handler =\n args.length === 2 ? asCallable(argAt(args, 1), \"try\") : null;\n\n try {\n return contextFn();\n } catch (error) {\n if (!handler) {\n return \"\";\n }\n if (error instanceof Error) {\n return handler(error.message);\n }\n return handler(String(error));\n }\n });\n\n addBuiltin(context, \"ds-request\", (...args) => {\n expectMinArgCount(\"ds-request\", args, 1);\n const id = argAt(args, 0);\n if (typeof id !== \"string\") {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"'ds-request' expected a string source id\"\n );\n }\n\n const source = context.dataSource(id);\n if (!source) {\n throw new RuntimeError(\n RuntimeErrorType.DataSourceError,\n `data source '${id}' not found`\n );\n }\n\n try {\n return source.requestData(args.slice(1));\n } catch (error) {\n if (error instanceof RuntimeError) {\n throw error;\n }\n if (error instanceof Error) {\n throw new RuntimeError(RuntimeErrorType.DataSourceError, error.message);\n }\n throw new RuntimeError(RuntimeErrorType.DataSourceError, String(error));\n }\n });\n\n addBuiltin(context, \"ds-query-sources\", (...args) => {\n expectArgCount(\"ds-query-sources\", args, 0);\n return [...context.iterDataSources()].map(([id]) => id);\n });\n}\n","import { RuntimeError, RuntimeErrorType } from \"../errors\";\nimport { toExactInt } from \"../int64\";\nimport type { Ranty } from \"../ranty\";\nimport type { RantyRange, RantyValue } from \"../values\";\nimport {\n addBuiltin,\n argAt,\n asInteger,\n expectArgCount,\n expectMinArgCount,\n toFloat\n} from \"./shared\";\n\nfunction buildRandomChars(\n context: Ranty,\n chars: string,\n count: number\n): string {\n let output = \"\";\n for (let index = 0; index < count; index += 1) {\n output += chars[context.rng().nextUsize(chars.length)];\n }\n return output;\n}\n\nfunction isRangeValue(value: RantyValue): value is RantyRange {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"type\" in value &&\n value.type === \"range\"\n );\n}\n\nfunction rangeStep(range: RantyRange): bigint | number {\n const isBig =\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\" ||\n typeof range.step === \"bigint\" ||\n typeof range.step === \"object\";\n\n if (range.step !== undefined) {\n if (isBig) {\n const raw =\n typeof range.step === \"bigint\" ? range.step : toExactInt(range.step);\n if (raw === 0n) {\n return 0n;\n }\n const magnitude = raw < 0n ? -raw : raw;\n return toExactInt(range.start) <= toExactInt(range.end)\n ? magnitude\n : -magnitude;\n }\n\n const raw = Number(range.step);\n if (raw === 0) {\n return 0;\n }\n const magnitude = Math.abs(raw);\n return Number(range.start) <= Number(range.end) ? magnitude : -magnitude;\n }\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\"\n ) {\n return toExactInt(range.start) <= toExactInt(range.end) ? 1n : -1n;\n }\n return Number(range.start) <= Number(range.end) ? 1 : -1;\n}\n\nfunction rangeLength(range: RantyRange): number {\n const step = rangeStep(range);\n\n if (\n typeof range.start === \"bigint\" ||\n typeof range.end === \"bigint\" ||\n typeof step === \"bigint\" ||\n typeof range.start === \"object\" ||\n typeof range.end === \"object\"\n ) {\n const start = toExactInt(range.start);\n const end = toExactInt(range.end);\n const stride = typeof step === \"bigint\" ? step : toExactInt(step);\n if (stride === 0n) {\n return 0;\n }\n if ((stride > 0n && start >= end) || (stride < 0n && start <= end)) {\n return 0;\n }\n const distance = stride > 0n ? end - start : start - end;\n const magnitude = stride > 0n ? stride : -stride;\n return Number((distance + magnitude - 1n) / magnitude);\n }\n\n const start = Number(range.start);\n const end = Number(range.end);\n const stride = Number(step);\n if (\n !Number.isFinite(start) ||\n !Number.isFinite(end) ||\n !Number.isFinite(stride) ||\n stride === 0\n ) {\n return 0;\n }\n if ((stride > 0 && start >= end) || (stride < 0 && start <= end)) {\n return 0;\n }\n return Math.max(0, Math.ceil(Math.abs((end - start) / stride)));\n}\n\nfunction rangeIndex(range: RantyRange, index: number): RantyValue {\n if (index < 0 || index >= rangeLength(range)) {\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n \"range index out of range\"\n );\n }\n\n const step = rangeStep(range);\n if (\n typeof range.start === \"bigint\" ||\n typeof step === \"bigint\" ||\n typeof range.start === \"object\"\n ) {\n return (\n toExactInt(range.start) +\n BigInt(index) * (typeof step === \"bigint\" ? step : toExactInt(step))\n );\n }\n\n return Number(range.start) + index * Number(step);\n}\n\nfunction collectionLength(value: RantyValue): number {\n if (typeof value === \"string\") {\n return Array.from(value).length;\n }\n if (Array.isArray(value)) {\n return value.length;\n }\n if (value instanceof Map) {\n return value.size;\n }\n if (isRangeValue(value)) {\n return rangeLength(value);\n }\n if (value == null) {\n return 0;\n }\n return 1;\n}\n\nfunction indexCollectionValue(\n value: RantyValue,\n index: number,\n name: string\n): RantyValue {\n if (typeof value === \"string\") {\n const chars = Array.from(value);\n const item = chars[index];\n if (item === undefined) {\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n `'${name}' index out of range`\n );\n }\n return item;\n }\n if (Array.isArray(value)) {\n const item = value[index];\n if (item === undefined) {\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n `'${name}' index out of range`\n );\n }\n return item;\n }\n if (isRangeValue(value)) {\n return rangeIndex(value, index);\n }\n if (index === 0) {\n return value;\n }\n throw new RuntimeError(\n RuntimeErrorType.IndexError,\n `'${name}' index out of range`\n );\n}\n\nexport function loadGenerateStdlib(context: Ranty): void {\n addBuiltin(context, \"rand\", (...args) => {\n expectArgCount(\"rand\", args, 2);\n return context\n .rng()\n .nextI64(\n asInteger(argAt(args, 0), \"rand\"),\n asInteger(argAt(args, 1), \"rand\")\n );\n });\n\n addBuiltin(context, \"randf\", (...args) => {\n expectArgCount(\"randf\", args, 2);\n const a = argAt(args, 0);\n const b = argAt(args, 1);\n return context.rng().nextF64(Number(a), Number(b));\n });\n\n addBuiltin(context, \"rand-list\", (...args) => {\n expectArgCount(\"rand-list\", args, 3);\n const min = asInteger(argAt(args, 0), \"rand-list\");\n const max = asInteger(argAt(args, 1), \"rand-list\");\n const count = Number(asInteger(argAt(args, 2), \"rand-list\"));\n return Array.from({ length: count }, () => context.rng().nextI64(min, max));\n });\n\n addBuiltin(context, \"randf-list\", (...args) => {\n expectArgCount(\"randf-list\", args, 3);\n const min = Number(argAt(args, 0));\n const max = Number(argAt(args, 1));\n const count = Number(asInteger(argAt(args, 2), \"randf-list\"));\n return Array.from({ length: count }, () => context.rng().nextF64(min, max));\n });\n\n addBuiltin(context, \"alpha\", (...args) => {\n const count =\n args.length === 0 ? 1 : Number(asInteger(argAt(args, 0), \"alpha\"));\n return buildRandomChars(context, \"abcdefghijklmnopqrstuvwxyz\", count);\n });\n\n addBuiltin(context, \"dig\", (...args) => {\n const count =\n args.length === 0 ? 1 : Number(asInteger(argAt(args, 0), \"dig\"));\n return buildRandomChars(context, \"0123456789\", count);\n });\n\n addBuiltin(context, \"digh\", (...args) => {\n const count =\n args.length === 0 ? 1 : Number(asInteger(argAt(args, 0), \"digh\"));\n return buildRandomChars(context, \"0123456789abcdef\", count);\n });\n\n addBuiltin(context, \"dignz\", (...args) => {\n const count =\n args.length === 0 ? 1 : Number(asInteger(argAt(args, 0), \"dignz\"));\n return buildRandomChars(context, \"123456789\", count);\n });\n\n addBuiltin(context, \"pick\", (...args) => {\n expectMinArgCount(\"pick\", args, 1);\n if (args.length === 1) {\n const input = argAt(args, 0);\n const len = collectionLength(input);\n if (len === 0) {\n return \"\";\n }\n return indexCollectionValue(input, context.rng().nextUsize(len), \"pick\");\n }\n return argAt(args, context.rng().nextUsize(args.length));\n });\n\n addBuiltin(context, \"maybe\", (...args) => {\n if (args.length > 1) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'maybe' expected at most 1 argument(s), got ${args.length}`\n );\n }\n const probability =\n args.length === 0 || args[0] == null\n ? 0.5\n : toFloat(argAt(args, 0), \"maybe\");\n return context.rng().nextBool(probability);\n });\n\n addBuiltin(context, \"pickn\", (...args) => {\n expectArgCount(\"pickn\", args, 2);\n const input = argAt(args, 0);\n const count = Number(asInteger(argAt(args, 1), \"pickn\"));\n if (!Number.isInteger(count) || count < 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"pick count must be non-negative\"\n );\n }\n\n const len = collectionLength(input);\n if (len === 0) {\n return [];\n }\n\n return Array.from({ length: count }, () =>\n indexCollectionValue(input, context.rng().nextUsize(len), \"pickn\")\n );\n });\n\n addBuiltin(context, \"pick-sparse\", (...args) => {\n expectMinArgCount(\"pick-sparse\", args, 1);\n const lengths = args.map((value) => collectionLength(value));\n const total = lengths.reduce((sum, value) => sum + value, 0);\n if (total <= 0) {\n return \"\";\n }\n\n let remainder = context.rng().nextUsize(total);\n for (const [index, item] of args.entries()) {\n const length = lengths[index] ?? 0;\n if (remainder < length) {\n return collectionLength(item) > 1\n ? indexCollectionValue(item, remainder, \"pick-sparse\")\n : item;\n }\n remainder -= length;\n }\n\n return \"\";\n });\n\n addBuiltin(context, \"rand-list-sum\", (...args) => {\n if (args.length < 2 || args.length > 3) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentMismatch,\n `'rand-list-sum' expected 2 or 3 argument(s), got ${args.length}`\n );\n }\n\n const input = argAt(args, 0);\n const count = Number(asInteger(argAt(args, 1), \"rand-list-sum\"));\n if (!Number.isInteger(count) || count <= 0) {\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"shred count must be greater than zero\"\n );\n }\n\n if (typeof input === \"bigint\") {\n const variance =\n args.length === 3 ? asInteger(argAt(args, 2), \"rand-list-sum\") : 0n;\n const quotient = input / BigInt(count);\n const remainder = input % BigInt(count);\n const shreds: bigint[] = Array.from({ length: count }, (_, index) =>\n index === 0 ? quotient + remainder : quotient\n );\n\n const maxShift = variance < 0n ? -variance : variance;\n for (let index = 0; index < count; index += 1) {\n const shift = context.rng().nextI64(0n, maxShift + 1n);\n shreds[index] = (shreds[index] ?? 0n) - shift;\n shreds[(index + 1) % count] =\n (shreds[(index + 1) % count] ?? 0n) + shift;\n }\n\n return shreds;\n }\n\n if (typeof input === \"number\") {\n const variance =\n args.length === 3\n ? Math.abs(toFloat(argAt(args, 2), \"rand-list-sum\"))\n : 0;\n const quotient = input / count;\n const remainder = input % count;\n const shreds: number[] = Array.from({ length: count }, (_, index) =>\n index === 0 ? quotient + remainder : quotient\n );\n\n for (let index = 0; index < count; index += 1) {\n const shift = context.rng().nextF64(0, variance);\n shreds[index] = (shreds[index] ?? 0) - shift;\n shreds[(index + 1) % count] =\n (shreds[(index + 1) % count] ?? 0) + shift;\n }\n\n return shreds;\n }\n\n throw new RuntimeError(\n RuntimeErrorType.ArgumentError,\n \"cannot shred non-numeric value\"\n );\n });\n}\n","import type { Ranty } from \"../ranty\";\nimport {\n addBuiltin,\n argAt,\n asNumber,\n expectArgCount,\n numericExtrema\n} from \"./shared\";\n\nexport function loadMathStdlib(context: Ranty): void {\n addBuiltin(context, \"abs\", (...args) => {\n expectArgCount(\"abs\", args, 1);\n const value = argAt(args, 0);\n return typeof value === \"bigint\"\n ? value < 0n\n ? -value\n : value\n : Math.abs(asNumber(value, \"abs\"));\n });\n\n addBuiltin(context, \"add\", (...args) => {\n expectArgCount(\"add\", args, 2);\n const left = argAt(args, 0);\n const right = argAt(args, 1);\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left + right;\n }\n return asNumber(left, \"add\") + asNumber(right, \"add\");\n });\n\n addBuiltin(context, \"sub\", (...args) => {\n expectArgCount(\"sub\", args, 2);\n const left = argAt(args, 0);\n const right = argAt(args, 1);\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left - right;\n }\n return asNumber(left, \"sub\") - asNumber(right, \"sub\");\n });\n\n addBuiltin(context, \"mul\", (...args) => {\n expectArgCount(\"mul\", args, 2);\n const left = argAt(args, 0);\n const right = argAt(args, 1);\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left * right;\n }\n return asNumber(left, \"mul\") * asNumber(right, \"mul\");\n });\n\n addBuiltin(context, \"div\", (...args) => {\n expectArgCount(\"div\", args, 2);\n return asNumber(argAt(args, 0), \"div\") / asNumber(argAt(args, 1), \"div\");\n });\n\n addBuiltin(context, \"mul-add\", (...args) => {\n expectArgCount(\"mul-add\", args, 3);\n return (\n asNumber(argAt(args, 0), \"mul-add\") *\n asNumber(argAt(args, 1), \"mul-add\") +\n asNumber(argAt(args, 2), \"mul-add\")\n );\n });\n\n addBuiltin(context, \"mod\", (...args) => {\n expectArgCount(\"mod\", args, 2);\n const left = argAt(args, 0);\n const right = argAt(args, 1);\n if (typeof left === \"bigint\" && typeof right === \"bigint\") {\n return left % right;\n }\n return asNumber(left, \"mod\") % asNumber(right, \"mod\");\n });\n\n addBuiltin(context, \"neg\", (...args) => {\n expectArgCount(\"neg\", args, 1);\n const value = argAt(args, 0);\n return typeof value === \"bigint\" ? -value : -asNumber(value, \"neg\");\n });\n\n addBuiltin(context, \"pow\", (...args) => {\n expectArgCount(\"pow\", args, 2);\n const left = argAt(args, 0);\n const right = argAt(args, 1);\n if (typeof left === \"bigint\" && typeof right === \"bigint\" && right >= 0n) {\n return left ** right;\n }\n return asNumber(left, \"pow\") ** asNumber(right, \"pow\");\n });\n\n addBuiltin(context, \"recip\", (...args) => {\n expectArgCount(\"recip\", args, 1);\n return 1 / asNumber(argAt(args, 0), \"recip\");\n });\n\n addBuiltin(context, \"clamp\", (...args) => {\n expectArgCount(\"clamp\", args, 3);\n const value = asNumber(argAt(args, 0), \"clamp\");\n const min = asNumber(argAt(args, 1), \"clamp\");\n const max = asNumber(argAt(args, 2), \"clamp\");\n return Math.min(max, Math.max(min, value));\n });\n\n addBuiltin(context, \"min\", (...args) => numericExtrema(args, \"min\", \"min\"));\n addBuiltin(context, \"max\", (...args) => numericExtrema(args, \"max\", \"max\"));\n\n addBuiltin(context, \"floor\", (...args) => {\n expectArgCount(\"floor\", args, 1);\n return Math.floor(asNumber(argAt(args, 0), \"floor\"));\n });\n\n addBuiltin(context, \"ceil\", (...args) => {\n expectArgCount(\"ceil\", args, 1);\n return Math.ceil(asNumber(argAt(args, 0), \"ceil\"));\n });\n\n addBuiltin(context, \"frac\", (...args) => {\n expectArgCount(\"frac\", args, 1);\n const value = asNumber(argAt(args, 0), \"frac\");\n return value - Math.trunc(value);\n });\n\n addBuiltin(context, \"asin\", (...args) => {\n expectArgCount(\"asin\", args, 1);\n return Math.asin(asNumber(argAt(args, 0), \"asin\"));\n });\n addBuiltin(context, \"sin\", (...args) => {\n expectArgCount(\"sin\", args, 1);\n return Math.sin(asNumber(argAt(args, 0), \"sin\"));\n });\n addBuiltin(context, \"acos\", (...args) => {\n expectArgCount(\"acos\", args, 1);\n return Math.acos(asNumber(argAt(args, 0), \"acos\"));\n });\n addBuiltin(context, \"cos\", (...args) => {\n expectArgCount(\"cos\", args, 1);\n return Math.cos(asNumber(argAt(args, 0), \"cos\"));\n });\n addBuiltin(context, \"atan\", (...args) => {\n expectArgCount(\"atan\", args, 1);\n return Math.atan(asNumber(argAt(args, 0), \"atan\"));\n });\n addBuiltin(context, \"atan2\", (...args) => {\n expectArgCount(\"atan2\", args, 2);\n return Math.atan2(\n asNumber(argAt(args, 0), \"atan2\"),\n asNumber(argAt(args, 1), \"atan2\")\n );\n });\n addBuiltin(context, \"tan\", (...args) => {\n expectArgCount(\"tan\", args, 1);\n return Math.tan(asNumber(argAt(args, 0), \"tan\"));\n });\n addBuiltin(context, \"sqrt\", (...args) => {\n expectArgCount(\"sqrt\", args, 1);\n return Math.sqrt(asNumber(argAt(args, 0), \"sqrt\"));\n });\n}\n","import type { Ranty } from \"../ranty\";\nimport { getMapPrototype, setMapPrototype } from \"../map-proto\";\nimport { addBuiltin, argAt, asMap, expectArgCount } from \"./shared\";\n\nexport function loadProtoStdlib(context: Ranty): void {\n addBuiltin(context, \"proto\", (...args) => {\n expectArgCount(\"proto\", args, 1);\n const map = asMap(argAt(args, 0), \"proto\");\n return getMapPrototype(map);\n });\n\n addBuiltin(context, \"set-proto\", (...args) => {\n expectArgCount(\"set-proto\", args, 2);\n const map = asMap(argAt(args, 0), \"set-proto\");\n const protoArg = argAt(args, 1);\n const proto = protoArg == null ? null : asMap(protoArg, \"set-proto\");\n setMapPrototype(map, proto);\n return \"\";\n });\n}\n","import type { Ranty } from \"../ranty\";\nimport {\n addBuiltin,\n argAt,\n asInteger,\n asString,\n expectArgCount\n} from \"./shared\";\n\nexport function loadStringsStdlib(context: Ranty): void {\n addBuiltin(context, \"char\", (...args) => {\n expectArgCount(\"char\", args, 1);\n return String.fromCodePoint(Number(asInteger(argAt(args, 0), \"char\")));\n });\n\n addBuiltin(context, \"lower\", (...args) => {\n expectArgCount(\"lower\", args, 1);\n return asString(argAt(args, 0), \"lower\").toLowerCase();\n });\n\n addBuiltin(context, \"upper\", (...args) => {\n expectArgCount(\"upper\", args, 1);\n return asString(argAt(args, 0), \"upper\").toUpperCase();\n });\n\n addBuiltin(context, \"seg\", (...args) => {\n expectArgCount(\"seg\", args, 1);\n return Array.from(asString(argAt(args, 0), \"seg\"));\n });\n\n addBuiltin(context, \"split\", (...args) => {\n expectArgCount(\"split\", args, 2);\n return asString(argAt(args, 0), \"split\").split(\n asString(argAt(args, 1), \"split\")\n );\n });\n\n addBuiltin(context, \"lines\", (...args) => {\n expectArgCount(\"lines\", args, 1);\n return asString(argAt(args, 0), \"lines\").split(/\\r?\\n/);\n });\n\n addBuiltin(context, \"indent\", (...args) => {\n expectArgCount(\"indent\", args, 2);\n const value = asString(argAt(args, 0), \"indent\");\n const indentation = argAt(args, 1);\n const prefix =\n typeof indentation === \"bigint\" || typeof indentation === \"number\"\n ? \" \".repeat(Number(indentation))\n : asString(indentation, \"indent\");\n return value\n .split(/\\r?\\n/)\n .map((line) => `${prefix}${line}`)\n .join(\"\\n\");\n });\n\n addBuiltin(context, \"string-replace\", (...args) => {\n expectArgCount(\"string-replace\", args, 3);\n return asString(argAt(args, 0), \"string-replace\").replaceAll(\n asString(argAt(args, 1), \"string-replace\"),\n asString(argAt(args, 2), \"string-replace\")\n );\n });\n\n addBuiltin(context, \"trim\", (...args) => {\n expectArgCount(\"trim\", args, 1);\n return asString(argAt(args, 0), \"trim\").trim();\n });\n\n addBuiltin(context, \"ord\", (...args) => {\n expectArgCount(\"ord\", args, 1);\n const char = Array.from(asString(argAt(args, 0), \"ord\"))[0] ?? \"\";\n return BigInt(char.codePointAt(0) ?? 0);\n });\n\n addBuiltin(context, \"ord-all\", (...args) => {\n expectArgCount(\"ord-all\", args, 1);\n return Array.from(asString(argAt(args, 0), \"ord-all\"), (char) =>\n BigInt(char.codePointAt(0) ?? 0)\n );\n });\n}\n","import type { Ranty } from \"../ranty\";\nimport type { RantyValue } from \"../values\";\nimport {\n addBuiltin,\n areEqual,\n argAt,\n asInteger,\n asNumber,\n expectArgCount\n} from \"./shared\";\n\nfunction typeName(value: RantyValue): string {\n if (value == null) {\n return \"nothing\";\n }\n if (typeof value === \"string\") {\n return \"string\";\n }\n if (typeof value === \"bigint\") {\n return \"int\";\n }\n if (typeof value === \"number\") {\n return \"float\";\n }\n if (typeof value === \"boolean\") {\n return \"bool\";\n }\n return \"value\";\n}\n\nexport function loadVerifyStdlib(context: Ranty): void {\n addBuiltin(context, \"is-string\", (...args) => {\n expectArgCount(\"is-string\", args, 1);\n return typeof argAt(args, 0) === \"string\";\n });\n addBuiltin(context, \"is-int\", (...args) => {\n expectArgCount(\"is-int\", args, 1);\n return typeof argAt(args, 0) === \"bigint\";\n });\n addBuiltin(context, \"is-float\", (...args) => {\n expectArgCount(\"is-float\", args, 1);\n return typeof argAt(args, 0) === \"number\";\n });\n addBuiltin(context, \"is-number\", (...args) => {\n expectArgCount(\"is-number\", args, 1);\n const value = argAt(args, 0);\n return typeof value === \"bigint\" || typeof value === \"number\";\n });\n addBuiltin(context, \"is-bool\", (...args) => {\n expectArgCount(\"is-bool\", args, 1);\n return typeof argAt(args, 0) === \"boolean\";\n });\n addBuiltin(context, \"is-nothing\", (...args) => {\n expectArgCount(\"is-nothing\", args, 1);\n return argAt(args, 0) == null;\n });\n addBuiltin(context, \"is-nan\", (...args) => {\n expectArgCount(\"is-nan\", args, 1);\n const value = argAt(args, 0);\n return typeof value === \"number\" && Number.isNaN(value);\n });\n addBuiltin(context, \"is-odd\", (...args) => {\n expectArgCount(\"is-odd\", args, 1);\n return asInteger(argAt(args, 0), \"is-odd\") % 2n !== 0n;\n });\n addBuiltin(context, \"is-even\", (...args) => {\n expectArgCount(\"is-even\", args, 1);\n return asInteger(argAt(args, 0), \"is-even\") % 2n === 0n;\n });\n addBuiltin(context, \"is-factor\", (...args) => {\n expectArgCount(\"is-factor\", args, 2);\n const factor = asInteger(argAt(args, 0), \"is-factor\");\n const value = asInteger(argAt(args, 1), \"is-factor\");\n return factor !== 0n && value % factor === 0n;\n });\n addBuiltin(context, \"is-between\", (...args) => {\n expectArgCount(\"is-between\", args, 3);\n const value = asNumber(argAt(args, 0), \"is-between\");\n const min = asNumber(argAt(args, 1), \"is-between\");\n const max = asNumber(argAt(args, 2), \"is-between\");\n return value >= min && value <= max;\n });\n addBuiltin(context, \"is-some\", (...args) => {\n expectArgCount(\"is-some\", args, 1);\n return argAt(args, 0) != null;\n });\n addBuiltin(context, \"is\", (...args) => {\n expectArgCount(\"is\", args, 2);\n const value = argAt(args, 0);\n const name = argAt(args, 1);\n if (typeof name === \"string\") {\n return typeName(value) === name;\n }\n return areEqual(value, name);\n });\n}\n","import type { Ranty } from \"../ranty\";\nimport { loadAssertionStdlib } from \"./assertion\";\nimport { loadBlockStdlib } from \"./block\";\nimport { loadBooleanStdlib } from \"./boolean\";\nimport { loadCollectionsStdlib } from \"./collections\";\nimport { loadCompareStdlib } from \"./compare\";\nimport { loadConvertStdlib } from \"./convert\";\nimport { loadFormatStdlib } from \"./format\";\nimport { loadGeneralStdlib } from \"./general\";\nimport { loadGenerateStdlib } from \"./generate\";\nimport { loadMathStdlib } from \"./math\";\nimport { loadProtoStdlib } from \"./proto\";\nimport { loadStringsStdlib } from \"./strings\";\nimport { loadVerifyStdlib } from \"./verify\";\n\nexport function loadStdlib(context: Ranty): void {\n loadGeneralStdlib(context);\n loadAssertionStdlib(context);\n loadFormatStdlib(context);\n loadBlockStdlib(context);\n loadBooleanStdlib(context);\n loadCompareStdlib(context);\n loadVerifyStdlib(context);\n loadMathStdlib(context);\n loadConvertStdlib(context);\n loadGenerateStdlib(context);\n loadProtoStdlib(context);\n loadCollectionsStdlib(context);\n loadStringsStdlib(context);\n}\n","import { BUILD_VERSION, MODULES_CACHE_KEY } from \"./constants\";\nimport type { RantyBinding } from \"./binding\";\nimport { valueBinding } from \"./binding\";\nimport { compileFile, compileString } from \"./compiler\";\nimport { nullReporter } from \"./compiler/message\";\nimport type { DataSource } from \"./data-source\";\nimport { ModuleResolveError, RuntimeError, RuntimeErrorType } from \"./errors\";\nimport {\n defaultOutputFormatState,\n type OutputFormatState\n} from \"./format-state\";\nimport { DefaultModuleResolver, type ModuleResolver } from \"./module-resolver\";\nimport type { Reporter } from \"./messages\";\nimport type { RantyProgram } from \"./program\";\nimport { RantyRng } from \"./rng\";\nimport { VM } from \"./runtime/vm\";\nimport { loadStdlib } from \"./stdlib\";\nimport { VirtualModuleResolver } from \"./virtual-module-resolver\";\nimport type { RantyValue } from \"./values\";\n\nexport interface RantyOptions {\n useStdlib: boolean;\n debugMode: boolean;\n topLevelDefsAreGlobals: boolean;\n seed: bigint | number;\n gcAllocationThreshold: number;\n}\n\nexport const DEFAULT_ALLOCATION_THRESHOLD = 1024;\n\nexport class Ranty {\n static readonly BUILD_VERSION = BUILD_VERSION;\n\n static createVirtualModules(\n modules?: Record<string, string> | Map<string, string>\n ) {\n return new VirtualModuleResolver(modules);\n }\n\n static evaluate(\n source: string,\n options: Partial<RantyOptions> = {}\n ): RantyValue {\n const ranty = new Ranty(options);\n const program = ranty.compileQuiet(source);\n return ranty.run(program);\n }\n\n #options: RantyOptions;\n #moduleResolver: ModuleResolver;\n #rngStack: RantyRng[];\n #globals = new Map<string, RantyBinding>();\n #dataSources = new Map<string, DataSource>();\n #loadingModules = new Set<string>();\n #activeVms: VM[] = [];\n #formatState: OutputFormatState;\n\n constructor(options: Partial<RantyOptions> = {}) {\n this.#options = {\n useStdlib: options.useStdlib ?? true,\n debugMode: options.debugMode ?? false,\n topLevelDefsAreGlobals: options.topLevelDefsAreGlobals ?? false,\n seed: options.seed ?? 0n,\n gcAllocationThreshold:\n options.gcAllocationThreshold ?? DEFAULT_ALLOCATION_THRESHOLD\n };\n this.#moduleResolver = new DefaultModuleResolver();\n this.#rngStack = [new RantyRng(this.#options.seed)];\n this.#globals.set(\n MODULES_CACHE_KEY,\n valueBinding(new Map<string, RantyValue>())\n );\n this.#formatState = defaultOutputFormatState();\n if (this.#options.useStdlib) {\n loadStdlib(this);\n }\n }\n\n usingModuleResolver(moduleResolver: ModuleResolver): this {\n this.#moduleResolver = moduleResolver;\n return this;\n }\n\n moduleResolver(): ModuleResolver {\n return this.#moduleResolver;\n }\n\n options(): Readonly<RantyOptions> {\n return this.#options;\n }\n\n optionsMut(): RantyOptions {\n return this.#options;\n }\n\n seed(): bigint {\n return this.rng().seed();\n }\n\n rng(): RantyRng {\n return this.#rngStack[this.#rngStack.length - 1] ?? this.#rngStack[0]!;\n }\n\n setSeed(seed: bigint | number): void {\n this.#options.seed = seed;\n this.#rngStack = [new RantyRng(seed)];\n }\n\n resetSeed(): void {\n this.#rngStack = [new RantyRng(this.#options.seed)];\n }\n\n compile<R extends Reporter>(source: string, _reporter: R): RantyProgram {\n return compileString(source, _reporter, this.#options.debugMode, {});\n }\n\n compileNamed<R extends Reporter>(\n source: string,\n reporter: R,\n name: string\n ): RantyProgram {\n return compileString(source, reporter, this.#options.debugMode, { name });\n }\n\n compileQuiet(source: string): RantyProgram {\n return compileString(source, nullReporter(), this.#options.debugMode, {});\n }\n\n compileQuietNamed(source: string, name: string): RantyProgram {\n return compileString(source, nullReporter(), this.#options.debugMode, {\n name\n });\n }\n\n compileFile(path: string): RantyProgram {\n return compileFile(path, nullReporter(), this.#options.debugMode);\n }\n\n compileFileQuiet(path: string): RantyProgram {\n return compileFile(path, nullReporter(), this.#options.debugMode);\n }\n\n setGlobalBinding(key: string, binding: RantyBinding): boolean {\n if (this.#globals.get(key)?.const) {\n return false;\n }\n this.#globals.set(key, binding);\n return true;\n }\n\n setGlobalBindingForce(key: string, binding: RantyBinding): void {\n this.#globals.set(key, binding);\n }\n\n setGlobal(key: string, value: RantyValue): boolean {\n return this.setGlobalBinding(key, valueBinding(value));\n }\n\n setGlobalConst(key: string, value: RantyValue): boolean {\n return this.setGlobalBinding(key, valueBinding(value, true));\n }\n\n setGlobalForce(key: string, value: RantyValue): void {\n this.setGlobalBindingForce(key, valueBinding(value));\n }\n\n getGlobal(key: string): RantyValue | undefined {\n const binding = this.#globals.get(key);\n if (!binding) {\n return undefined;\n }\n\n const activeVm = this.activeVm();\n if (activeVm) {\n return activeVm.readBindingValue(binding);\n }\n\n if (binding.kind === \"value\") {\n return binding.value;\n }\n\n return binding.state.kind === \"ready\" ? binding.state.value : undefined;\n }\n\n hasGlobal(key: string): boolean {\n return this.#globals.has(key);\n }\n\n deleteGlobal(key: string): boolean {\n return this.#globals.delete(key);\n }\n\n globalNames(): IterableIterator<string> {\n return this.#globals.keys();\n }\n\n getGlobalBinding(key: string): RantyBinding | undefined {\n return this.#globals.get(key);\n }\n\n addDataSource(dataSource: DataSource): void {\n this.#dataSources.set(dataSource.typeId(), dataSource);\n }\n\n removeDataSource(name: string): DataSource | undefined {\n const source = this.#dataSources.get(name);\n this.#dataSources.delete(name);\n return source;\n }\n\n hasDataSource(name: string): boolean {\n return this.#dataSources.has(name);\n }\n\n clearDataSources(): void {\n this.#dataSources.clear();\n }\n\n dataSource(name: string): DataSource | undefined {\n return this.#dataSources.get(name);\n }\n\n iterDataSources(): IterableIterator<[string, DataSource]> {\n return this.#dataSources.entries();\n }\n\n run(program: RantyProgram): RantyValue {\n return new VM(this, program).run();\n }\n\n runWith(program: RantyProgram, args: Record<string, RantyValue>): RantyValue {\n return new VM(this, program).runWith(args);\n }\n\n collectGarbage(): void {}\n\n tryLoadGlobalModule(modulePath: string): void {\n this.#moduleResolver.tryResolve(this, modulePath);\n }\n\n pushRng(rng: RantyRng): void {\n this.#rngStack.push(rng);\n }\n\n popRng(): RantyRng | undefined {\n if (this.#rngStack.length <= 1) {\n return undefined;\n }\n return this.#rngStack.pop();\n }\n\n withActiveVm<T>(vm: VM, fn: () => T): T {\n this.#activeVms.push(vm);\n try {\n return fn();\n } finally {\n this.#activeVms.pop();\n }\n }\n\n activeVm(): VM | undefined {\n return this.#activeVms[this.#activeVms.length - 1];\n }\n\n formatState(): OutputFormatState {\n return this.#formatState;\n }\n\n resetFormatState(): void {\n this.#formatState = defaultOutputFormatState();\n }\n\n loadModule(\n modulePath: string,\n dependant?: { readonly path?: string }\n ): RantyValue {\n let program: RantyProgram;\n\n try {\n program = this.#moduleResolver.tryResolve(this, modulePath, dependant);\n } catch (error) {\n if (error instanceof ModuleResolveError) {\n throw new RuntimeError(RuntimeErrorType.ModuleError, error.message);\n }\n throw error;\n }\n\n const cache = this.moduleCache();\n const cacheKey = program.path() ?? modulePath;\n const cached = cache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n if (this.#loadingModules.has(cacheKey)) {\n throw new RuntimeError(\n RuntimeErrorType.ModuleError,\n \"cyclic module import detected\"\n );\n }\n\n this.#loadingModules.add(cacheKey);\n try {\n const value = new VM(this, program).runRaw();\n cache.set(cacheKey, value);\n return value;\n } finally {\n this.#loadingModules.delete(cacheKey);\n }\n }\n\n private moduleCache(): Map<string, RantyValue> {\n const existing = this.#globals.get(MODULES_CACHE_KEY);\n if (existing?.kind === \"value\" && existing.value instanceof Map) {\n return existing.value as Map<string, RantyValue>;\n }\n\n const cache = new Map<string, RantyValue>();\n this.#globals.set(MODULES_CACHE_KEY, valueBinding(cache));\n return cache;\n }\n}\n","export interface CliOptions {\n noDebug: boolean;\n noWarn: boolean;\n benchMode: boolean;\n seed: bigint | undefined;\n eval: string | undefined;\n file: string | undefined;\n}\n\nexport enum LaunchMode {\n Eval = \"eval\",\n File = \"file\",\n Stdin = \"stdin\",\n Repl = \"repl\"\n}\n\nexport function parseSeedArg(raw: string): bigint {\n const trimmed = raw.trim();\n const digits = trimmed.replace(/^0x/i, \"\");\n\n if (\n digits.length === 0 ||\n digits.length > 16 ||\n !/^[0-9a-f]+$/i.test(digits)\n ) {\n throw new Error(\n `invalid seed '${raw}'; expected 1 to 16 hexadecimal digits with an optional 0x prefix`\n );\n }\n\n return BigInt(`0x${digits}`);\n}\n\nexport function selectLaunchMode(\n evalSource: string | undefined,\n file: string | undefined,\n stdinIsTty: boolean\n): LaunchMode {\n if (evalSource != null) {\n return LaunchMode.Eval;\n }\n if (file != null) {\n return LaunchMode.File;\n }\n if (!stdinIsTty) {\n return LaunchMode.Stdin;\n }\n return LaunchMode.Repl;\n}\n\nexport function parseCliArgs(argv: readonly string[]): CliOptions {\n const options: CliOptions = {\n noDebug: false,\n noWarn: false,\n benchMode: false,\n seed: undefined,\n eval: undefined,\n file: undefined\n };\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index];\n if (arg == null) {\n continue;\n }\n switch (arg) {\n case \"-D\":\n case \"--no-debug\":\n options.noDebug = true;\n break;\n case \"-W\":\n case \"--no-warnings\":\n options.noWarn = true;\n break;\n case \"-b\":\n case \"--bench-mode\":\n options.benchMode = true;\n break;\n case \"-s\":\n case \"--seed\":\n index += 1;\n options.seed = parseSeedArg(argv[index] ?? \"\");\n break;\n case \"-e\":\n case \"--eval\":\n index += 1;\n options.eval = argv[index] ?? \"\";\n break;\n default:\n if (arg.startsWith(\"-\")) {\n throw new Error(`unknown flag: ${arg}`);\n }\n if (options.file == null) {\n options.file = arg;\n }\n break;\n }\n }\n\n return options;\n}\n","import { compileFile as compileProgramFile } from \"../../core/compiler\";\nimport { BUILD_VERSION } from \"../../core/constants\";\nimport { CompilerError, RuntimeError } from \"../../core/errors\";\nimport type { CompilerMessage, Reporter } from \"../../core/messages\";\nimport { Ranty } from \"../../core/ranty\";\nimport type { RantyProgram } from \"../../core/program\";\nimport { loadNodeFs, renderRantyValue, runtimeRequire } from \"../../core/util\";\nimport { LaunchMode, parseCliArgs, selectLaunchMode } from \"./cli-utils\";\nimport type * as ReadlinePromises from \"node:readline/promises\";\n\nconst CREDITS_TEXT = `Ranty.js is a TypeScript port of the Ranty language runtime.`;\nconst COPYRIGHT_TEXT = `Ranty.js derives from the Ranty project licensed under MIT.`;\n\nclass CliReporter implements Reporter {\n readonly messages: CompilerMessage[] = [];\n\n report(message: CompilerMessage): void {\n this.messages.push(message);\n }\n}\n\nexport async function runCli(argv: readonly string[]): Promise<number> {\n if (argv.includes(\"-h\") || argv.includes(\"--help\")) {\n writeHelp();\n return 0;\n }\n\n if (argv.includes(\"-V\") || argv.includes(\"--version\")) {\n console.log(BUILD_VERSION);\n return 0;\n }\n\n let options;\n try {\n options = parseCliArgs(argv);\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n return 64;\n }\n\n const stdinIsTty = process.stdin.isTTY ?? false;\n const mode = selectLaunchMode(options.eval, options.file, stdinIsTty);\n const ranty = new Ranty({\n debugMode: !options.noDebug,\n seed:\n options.seed ??\n BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER))\n });\n\n registerCliGlobals(ranty);\n\n const startedAt = process.hrtime.bigint();\n try {\n switch (mode) {\n case LaunchMode.Eval:\n return executeCompiledProgram(\n ranty,\n compileNamedForCli(\n ranty,\n options.eval ?? \"\",\n \"cmdline\",\n options.noWarn\n ),\n options.benchMode,\n startedAt\n );\n case LaunchMode.File:\n return executeFile(\n ranty,\n options.file ?? \"\",\n options.noWarn,\n options.benchMode,\n startedAt\n );\n case LaunchMode.Stdin: {\n const source = await readAllFromStdin();\n return executeCompiledProgram(\n ranty,\n compileNamedForCli(ranty, source, \"stdin\", options.noWarn),\n options.benchMode,\n startedAt\n );\n }\n case LaunchMode.Repl:\n return launchRepl(ranty);\n }\n } catch (error) {\n if (error instanceof RuntimeError) {\n console.error(`Runtime error: ${error.message}`);\n return 70;\n }\n if (error instanceof CompilerError) {\n console.error(`Compile failed: ${error.message}`);\n return 65;\n }\n console.error(error instanceof Error ? error.message : String(error));\n return 70;\n }\n}\n\nfunction registerCliGlobals(ranty: Ranty): void {\n ranty.setGlobalConst(\"credits\", () => CREDITS_TEXT);\n ranty.setGlobalConst(\"copyright\", () => COPYRIGHT_TEXT);\n}\n\nfunction compileNamedForCli(\n ranty: Ranty,\n source: string,\n name: string,\n noWarn: boolean\n): RantyProgram {\n const reporter = new CliReporter();\n const program = ranty.compileNamed(source, reporter, name);\n writeWarnings(reporter, noWarn);\n return program;\n}\n\nfunction compileFileForCli(\n ranty: Ranty,\n filePath: string,\n noWarn: boolean\n): RantyProgram {\n const reporter = new CliReporter();\n const program = compileProgramFile(\n filePath,\n reporter,\n ranty.options().debugMode\n );\n writeWarnings(reporter, noWarn);\n return program;\n}\n\nfunction writeWarnings(reporter: CliReporter, noWarn: boolean): void {\n if (noWarn) {\n return;\n }\n\n for (const message of reporter.messages) {\n if (!message.isWarning()) {\n continue;\n }\n console.error(`warning[${message.code}]: ${message.message}`);\n }\n}\n\nfunction executeCompiledProgram(\n ranty: Ranty,\n program: ReturnType<Ranty[\"compileQuietNamed\"]>,\n benchMode: boolean,\n startedAt: bigint\n): number {\n const runStartedAt = process.hrtime.bigint();\n const output = ranty.run(program);\n if (output != null && output !== \"\") {\n console.log(renderRantyValue(output));\n }\n if (benchMode) {\n const compileElapsed = Number(runStartedAt - startedAt) / 1_000_000;\n const runElapsed =\n Number(process.hrtime.bigint() - runStartedAt) / 1_000_000;\n console.error(`Compiled in ${compileElapsed.toFixed(3)}ms`);\n console.error(`Executed in ${runElapsed.toFixed(3)}ms`);\n }\n return 0;\n}\n\nfunction executeFile(\n ranty: Ranty,\n filePath: string,\n noWarn: boolean,\n benchMode: boolean,\n startedAt: bigint\n): number {\n const node = loadNodeFs();\n if (!node) {\n throw new Error(\"filesystem access is unavailable in this environment\");\n }\n\n if (!node.fs.existsSync(filePath)) {\n console.error(`file not found: ${filePath}`);\n return 66;\n }\n\n const program = compileFileForCli(ranty, filePath, noWarn);\n return executeCompiledProgram(ranty, program, benchMode, startedAt);\n}\n\nasync function readAllFromStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n }\n return Buffer.concat(chunks).toString(\"utf8\");\n}\n\nasync function launchRepl(ranty: Ranty): Promise<number> {\n console.log(`Ranty ${BUILD_VERSION}`);\n console.log(\"Write an expression and press Enter to run it.\");\n console.log(\"More info: [credits], [copyright]\\n\");\n\n const readline = loadNodeReadline();\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n\n try {\n while (true) {\n const line = await rl.question(\">> \");\n try {\n executeCompiledProgram(\n ranty,\n compileNamedForCli(ranty, line, \"stdin\", false),\n false,\n process.hrtime.bigint()\n );\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n }\n }\n } finally {\n rl.close();\n }\n}\n\nfunction loadNodeReadline(): typeof ReadlinePromises {\n const readline = runtimeRequire<typeof ReadlinePromises>(\n \"node:readline/promises\"\n );\n if (!readline) {\n throw new Error(\"Node readline is unavailable in this environment\");\n }\n return readline;\n}\n\nfunction writeHelp(): void {\n console.log(`Command-line interface for Ranty ${BUILD_VERSION}\n\nUsage:\n ranty-js [options] [file]\n\nOptions:\n -e, --eval PROGRAM Runs an inline program string\n -s, --seed SEED Sets the initial RNG seed as 1 to 16 hexadecimal digits\n -b, --bench-mode Prints compile and execution timing\n -W, --no-warnings Suppresses compiler warnings\n -D, --no-debug Disables debug symbol emission during compilation\n -h, --help Show this help\n -V, --version Show version\n`);\n}\n","import \"./hosts/browser/index\";\n\nimport {\n BUILD_VERSION,\n DEFAULT_PROGRAM_NAME,\n RANTY_COMPAT_FILE_EXTENSION,\n RANTY_FILE_EXTENSION,\n RANTY_LANG_VERSION,\n RANTY_SUPPORTED_FILE_EXTENSIONS\n} from \"./core/constants\";\nimport { DataSourceError } from \"./core/errors\";\nimport {\n RuntimeError,\n RuntimeErrorType,\n ModuleResolveError,\n ModuleLoadError,\n CompilerError\n} from \"./core/errors\";\nimport type { DataSource } from \"./core/data-source\";\nimport { RantyInt } from \"./core/int64\";\nimport { CompilerMessage } from \"./core/messages\";\nimport { DefaultModuleResolver } from \"./core/module-resolver\";\nimport { RantyProgram } from \"./core/program\";\nimport { Ranty } from \"./core/ranty\";\nimport { RantyRng } from \"./core/rng\";\nimport { VirtualModuleResolver } from \"./core/virtual-module-resolver\";\nimport { runCli } from \"./hosts/node/cli\";\n\nexport {\n BUILD_VERSION,\n CompilerError,\n CompilerMessage,\n DataSourceError,\n DEFAULT_PROGRAM_NAME,\n DefaultModuleResolver,\n ModuleLoadError,\n ModuleResolveError,\n Ranty,\n RantyInt,\n RantyProgram,\n RantyRng,\n RANTY_COMPAT_FILE_EXTENSION,\n RANTY_FILE_EXTENSION,\n RANTY_LANG_VERSION,\n RANTY_SUPPORTED_FILE_EXTENSIONS,\n RuntimeError,\n RuntimeErrorType,\n VirtualModuleResolver\n};\n\nexport type { DataSource };\n\ndeclare const module:\n | { readonly filename?: string; readonly parent?: unknown }\n | undefined;\n\nfunction isDirectExecution(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof module !== \"undefined\" &&\n module?.parent == null\n );\n}\n\nif (isDirectExecution()) {\n void runCli(process.argv.slice(2)).then((code) => {\n process.exitCode = code;\n });\n}\n"],"names":["RuntimeErrorType","syntaxError","decodeEscape","value","binding","CollectingReporter","isSelectorValue","isRangeValue","rangeStep","raw","magnitude","rangeLength","start","end","stride","rangeValueAt","addValues","arg","typeName","whitespace","rawStep","direction","LaunchMode","compileProgramFile"],"mappings":"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"}