@mojir/lits 2.0.20 → 2.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/cli.js +18 -16
- package/dist/cli/src/Lits/Lits.d.ts +3 -1
- package/dist/cli/src/tokenizer/minifyTokenStream.d.ts +2 -0
- package/dist/index.esm.js +17 -15
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +17 -15
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +17 -15
- package/dist/lits.iife.js.map +1 -1
- package/dist/src/Lits/Lits.d.ts +3 -1
- package/dist/src/tokenizer/minifyTokenStream.d.ts +2 -0
- package/dist/testFramework.esm.js +17 -15
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +17 -15
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testFramework.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/constants/constants.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/tokenizer/utils.ts","../src/tokenizer/common/commonTokens.ts","../src/tokenizer/algebraic/algebraicTokens.ts","../src/tokenizer/polish/polishTokens.ts","../src/tokenizer/tokens.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/removeCommentNodes/removeCommentNodesFromSpecialExpression.ts","../src/removeCommentNodes/index.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/commonParser.ts","../src/builtin/specialExpressions/comment.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/switch.ts","../src/builtin/specialExpressions/declared.ts","../src/tokenizer/polish/polishReservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/do.ts","../src/analyze/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/unless.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/analyze/findUnresolvedIdentifiers.ts","../src/analyze/index.ts","../src/parser/commonTokenParsers.ts","../src/parser/AlgebraicParser.ts","../src/parser/PolishTokenParsers.ts","../src/parser/index.ts","../src/identifier.ts","../src/tokenizer/common/commonTokenizers.ts","../src/tokenizer/algebraic/algebraicReservedNames.ts","../src/tokenizer/algebraic/algebraicTokenizers.ts","../src/tokenizer/polish/polishTokenizers.ts","../src/tokenizer/sugar/applyCollectionAccessor.ts","../src/tokenizer/sugar/index.ts","../src/tokenizer/index.ts","../src/transformer/index.ts","../src/untokenizer/index.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../src/testFramework/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/interface'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n const filePathLine = sourceCodeInfo?.filePath ? `\\n${sourceCodeInfo.filePath}` : ''\n const codeLine = sourceCodeInfo?.code ? `\\n${sourceCodeInfo.code}` : ''\n const codeMarker = sourceCodeInfo && codeLine ? `\\n${getCodeMarker(sourceCodeInfo)}` : ''\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(message: string | Error, sourceCodeInfo: SourceCodeInfo | undefined) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${fn}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","export enum AstNodeType {\n Number = 201,\n String = 202,\n NormalExpression = 203,\n SpecialExpression = 204,\n Symbol = 205,\n Modifier = 206,\n ReservedSymbol = 207,\n Binding = 208,\n Argument = 209,\n Partial = 210,\n Comment = 211,\n}\n\nexport const astNodeTypeName = new Map([\n [AstNodeType.Number, 'Number'],\n [AstNodeType.String, 'String'],\n [AstNodeType.NormalExpression, 'NormalExpression'],\n [AstNodeType.SpecialExpression, 'SpecialExpression'],\n [AstNodeType.Symbol, 'Name'],\n [AstNodeType.Modifier, 'Modifier'],\n [AstNodeType.ReservedSymbol, 'ReservedName'],\n [AstNodeType.Binding, 'Binding'],\n [AstNodeType.Argument, 'Argument'],\n [AstNodeType.Partial, 'Partial'],\n])\n\nexport function isAstNodeType(type: unknown): type is AstNodeType {\n return typeof type === 'number' && astNodeTypeName.has(type)\n}\n\nexport enum FunctionType {\n UserDefined = 301,\n Partial = 302,\n Comp = 303,\n Constantly = 304,\n Juxt = 305,\n Complement = 306,\n EveryPred = 307,\n SomePred = 308,\n Fnil = 309,\n Builtin = 310,\n NativeJsFunction = 399,\n}\n\nexport const functionTypeName = new Map([\n [FunctionType.UserDefined, 'UserDefined'],\n [FunctionType.Partial, 'Partial'],\n [FunctionType.Comp, 'Comp'],\n [FunctionType.Constantly, 'Constantly'],\n [FunctionType.Juxt, 'Juxt'],\n [FunctionType.Complement, 'Complement'],\n [FunctionType.EveryPred, 'EveryPred'],\n [FunctionType.SomePred, 'SomePred'],\n [FunctionType.Fnil, 'Fnil'],\n [FunctionType.Builtin, 'Builtin'],\n])\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'number' && functionTypeName.has(type)\n}\n","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo?: SourceCodeInfo): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\nimport type { SourceCodeInfo } from './interface'\nimport type { Token, TokenType } from './tokens'\n\nexport type TokenDebugData = {\n sourceCodeInfo: SourceCodeInfo\n}\n\nfunction isTokenDebugData(tokenDebugData: unknown): tokenDebugData is TokenDebugData {\n return (\n typeof tokenDebugData === 'object'\n && tokenDebugData !== null\n && 'sourceCodeInfo' in tokenDebugData\n )\n}\n\nexport function getTokenDebugData(token?: Token): TokenDebugData | undefined {\n const debugData = token?.at(-1)\n return isTokenDebugData(debugData) ? debugData : undefined\n}\n\nexport function hasTokenDebugData(token?: Token): boolean {\n return isTokenDebugData(token?.at(-1))\n}\n\nexport function addTokenDebugData(token: Token, debugData: TokenDebugData): void {\n if (isTokenDebugData(token.at(-1))) {\n throw new Error(`Token already has debug data: ${token}`)\n }\n ;(token as unknown[]).push(debugData)\n}\n\nexport function throwUnexpectedToken(expected: TokenType, expectedValue: string | undefined, actual?: Token): never {\n if (actual === undefined) {\n throw new LitsError(`Unexpected end of input, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, undefined)\n }\n const actualOutput = `${actual[0]}${actual[1] ? ` '${actual[1]}'` : ''}`\n throw new LitsError(`Unexpected token: ${actualOutput}, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, getSourceCodeInfo(actual))\n}\n","import { type TokenDebugData, throwUnexpectedToken } from '../utils'\nimport type { Token } from '../tokens'\n\nexport const commonSimpleTokenTypes = [\n 'LBrace',\n 'LBracket',\n 'LParen',\n 'RBrace',\n 'RBracket',\n 'RParen',\n] as const\n\nexport const commomValueTokenTypes = [\n 'String',\n 'RegexpShorthand',\n] as const\n\nexport type CommonSimpleTokenType = typeof commonSimpleTokenTypes[number]\nexport type CommonValueTokenType = typeof commomValueTokenTypes[number]\n\ntype GenericCommonSimpleToken<T extends CommonSimpleTokenType> = [T] | [T, TokenDebugData]\ntype GenericCommonValueToken<T extends CommonValueTokenType, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type LParenToken = GenericCommonSimpleToken<'LParen'>\nexport type RParenToken = GenericCommonSimpleToken<'RParen'>\nexport type LBracketToken = GenericCommonSimpleToken<'LBracket'>\nexport type RBracketToken = GenericCommonSimpleToken<'RBracket'>\nexport type LBraceToken = GenericCommonSimpleToken<'LBrace'>\nexport type RBraceToken = GenericCommonSimpleToken<'RBrace'>\n\nexport type StringToken = GenericCommonValueToken<'String'>\nexport type RegexpShorthandToken = GenericCommonValueToken<'RegexpShorthand'>\n\nexport type CommonSimpleToken =\n | LParenToken\n | RParenToken\n | LBracketToken\n | RBracketToken\n | LBraceToken\n | RBraceToken\n\nexport type CommonValueToken =\n | StringToken\n | RegexpShorthandToken\n\nexport function isLParenToken(token?: Token): token is LParenToken {\n return token?.[0] === 'LParen'\n}\nexport function assertLParenToken(token?: Token): asserts token is LParenToken {\n if (!isLParenToken(token)) {\n throwUnexpectedToken('LParen', undefined, token)\n }\n}\nexport function asLParenToken(token?: Token): LParenToken {\n assertLParenToken(token)\n return token\n}\n\nexport function isRParenToken(token?: Token): token is RParenToken {\n return token?.[0] === 'RParen'\n}\nexport function assertRParenToken(token?: Token): asserts token is RParenToken {\n if (!isRParenToken(token)) {\n throwUnexpectedToken('RParen', undefined, token)\n }\n}\nexport function asRParenToken(token?: Token): RParenToken {\n assertRParenToken(token)\n return token\n}\n\nexport function isLBracketToken(token?: Token): token is LBracketToken {\n return token?.[0] === 'LBracket'\n}\nexport function assertLBracketToken(token?: Token): asserts token is LBracketToken {\n if (!isLBracketToken(token)) {\n throwUnexpectedToken('LBracket', undefined, token)\n }\n}\nexport function asLBracketToken(token?: Token): LBracketToken {\n assertLBracketToken(token)\n return token\n}\n\nexport function isRBracketToken(token?: Token): token is RBracketToken {\n return token?.[0] === 'RBracket'\n}\nexport function assertRBracketToken(token?: Token): asserts token is RBracketToken {\n if (!isRBracketToken(token)) {\n throwUnexpectedToken('RBracket', undefined, token)\n }\n}\nexport function asRBracketToken(token?: Token): RBracketToken {\n assertRBracketToken(token)\n return token\n}\n\nexport function isLBraceToken(token?: Token): token is LBraceToken {\n return token?.[0] === 'LBrace'\n}\nexport function assertLBraceToken(token?: Token): asserts token is LBraceToken {\n if (!isLBraceToken(token)) {\n throwUnexpectedToken('LBrace', undefined, token)\n }\n}\nexport function asLBraceToken(token?: Token): LBraceToken {\n assertLBraceToken(token)\n return token\n}\n\nexport function isRBraceToken(token?: Token): token is RBraceToken {\n return token?.[0] === 'RBrace'\n}\nexport function assertRBraceToken(token?: Token): asserts token is RBraceToken {\n if (!isRBraceToken(token)) {\n throwUnexpectedToken('RBrace', undefined, token)\n }\n}\nexport function asRBraceToken(token?: Token): RBraceToken {\n assertRBraceToken(token)\n return token\n}\n\nexport function isStringToken(token?: Token): token is StringToken {\n return token?.[0] === 'String'\n}\nexport function assertStringToken(token?: Token): asserts token is StringToken {\n if (!isStringToken(token)) {\n throwUnexpectedToken('String', undefined, token)\n }\n}\nexport function asStringToken(token?: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isRegexpShorthandToken(token?: Token): token is RegexpShorthandToken {\n return token?.[0] === 'RegexpShorthand'\n}\nexport function assertRegexpShorthandToken(token?: Token): asserts token is RegexpShorthandToken {\n if (!isRegexpShorthandToken(token)) {\n throwUnexpectedToken('RegexpShorthand', undefined, token)\n }\n}\nexport function asRegexpShorthandToken(token?: Token): RegexpShorthandToken {\n assertRegexpShorthandToken(token)\n return token\n}\n","import { LitsError } from '../../errors'\nimport type { CommonSimpleToken, CommonValueToken, CommonValueTokenType } from '../common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from '../common/commonTokens'\nimport type { Token } from '../tokens'\nimport { type TokenDebugData, throwUnexpectedToken } from '../utils'\nimport type { ValidAlgebraicReservedName } from './algebraicReservedNames'\n\nexport const algebraicSimpleTokenTypes = [\n ...commonSimpleTokenTypes,\n] as const\n\nexport const algebraicOnlyValueTokenTypes = [\n 'A_Whitespace',\n 'A_Operator',\n 'A_Symbol',\n 'A_ReservedSymbol',\n 'A_SingleLineComment',\n 'A_MultiLineComment',\n 'A_Number',\n 'A_BasePrefixedNumber',\n] as const satisfies `A_${string}`[]\n\nexport const algebraicValueTokenTypes = [\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n] as const\n\nexport const algebraicTokenTypes = [\n ...algebraicSimpleTokenTypes,\n ...algebraicValueTokenTypes,\n] as const\n\nconst symbolicUnaryOperators = [\n '!', // logical NOT\n '~', // bitwise NOT\n '+', // addition\n '-', // subtraction\n] as const\n\nconst symbolicBinaryOperators = [\n '**', // exponentiation\n\n '*', // multiplication\n '/', // division\n '%', // remainder\n\n '+', // addition\n '-', // subtraction\n\n '<<', // left shift\n '>>', // signed right shift\n '>>>', // unsigned right shift\n\n '++', // string concatenation\n\n '<', // less than\n '<=', // less than or equal\n '>', // greater than\n '>=', // greater than or equal\n\n '==', // equal\n '!=', // not equal\n\n '&', // bitwise AND\n '^', // bitwise XOR\n '|', // bitwise OR\n\n '&&', // logical AND\n '||', // logical OR\n '??', // nullish coalescing\n] as const\n\nconst otherSymbolicOperators = [\n '=>', // lambda\n '...', // rest\n '.', // property accessor\n ',', // item separator\n '=', // property assignment\n ';', // statement terminator\n] as const\n\nconst symbolicOperators = [\n ...symbolicUnaryOperators,\n ...symbolicBinaryOperators,\n ...otherSymbolicOperators,\n] as const\n\nconst nonFunctionOperators = [\n '??',\n '&&',\n '||',\n 'comment',\n 'cond',\n 'def',\n 'defined?',\n 'defn',\n 'do',\n 'doseq',\n 'fn',\n 'if',\n 'let',\n 'loop',\n 'recur',\n 'throw',\n 'try',\n 'unless',\n 'while',\n]\n\nconst nonFunctionOperatorSet = new Set(nonFunctionOperators)\nexport function isFunctionOperator(operator: string): boolean {\n return !nonFunctionOperatorSet.has(operator)\n}\n\nexport type SymbolicUnaryOperator = typeof symbolicUnaryOperators[number]\nexport type SymbolicBinaryOperator = typeof symbolicBinaryOperators[number]\nexport type SymbolicOperator = typeof symbolicOperators[number]\n\nconst symbolicUnaryOperatorSet = new Set(symbolicUnaryOperators)\nexport function isSymbolicUnaryOperator(operator: string): operator is SymbolicUnaryOperator {\n return symbolicUnaryOperatorSet.has(operator as SymbolicUnaryOperator)\n}\nexport function assertSymbolicUnaryOperator(operator: string): asserts operator is SymbolicUnaryOperator {\n if (!isSymbolicUnaryOperator(operator)) {\n throw new LitsError(`Expected symbolic unary operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicUnaryOperator(operator: string): SymbolicUnaryOperator {\n assertSymbolicUnaryOperator(operator)\n return operator\n}\n\nconst symbolicBinaryOperatorSet = new Set(symbolicBinaryOperators)\nexport function isSymbolicBinaryOperator(operator: string): operator is SymbolicBinaryOperator {\n return symbolicBinaryOperatorSet.has(operator as SymbolicBinaryOperator)\n}\nexport function assertSymbolicBinaryOperator(operator: string): asserts operator is SymbolicBinaryOperator {\n if (!isSymbolicBinaryOperator(operator)) {\n throw new LitsError(`Expected symbolic binary operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicBinaryOperator(operator: string): SymbolicBinaryOperator {\n assertSymbolicBinaryOperator(operator)\n return operator\n}\n\nconst symbolicOperatorSet = new Set(symbolicOperators)\nexport function isSymbolicOperator(operator: string): operator is SymbolicOperator {\n return symbolicOperatorSet.has(operator as SymbolicOperator)\n}\nexport function assertSymbolicOperator(operator: string): asserts operator is SymbolicOperator {\n if (!isSymbolicOperator(operator)) {\n throw new LitsError(`Expected symbolic operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicOperator(operator: string): SymbolicOperator {\n assertSymbolicOperator(operator)\n return operator\n}\nexport type AlgebraicSimpleTokenType = typeof algebraicSimpleTokenTypes[number]\nexport type AlgebraicValueTokenType = typeof algebraicValueTokenTypes[number]\nexport type AlgebraicTokenType = typeof algebraicTokenTypes[number]\n\ntype GenericAlgebraicValueToken<T extends Exclude<AlgebraicValueTokenType, CommonValueTokenType>, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type A_WhitespaceToken = GenericAlgebraicValueToken<'A_Whitespace'>\nexport type A_NumberToken = GenericAlgebraicValueToken<'A_Number'>\nexport type A_BasePrefixedNumberToken = GenericAlgebraicValueToken<'A_BasePrefixedNumber'>\nexport type A_OperatorToken<T extends SymbolicOperator = SymbolicOperator> = GenericAlgebraicValueToken<'A_Operator', T>\nexport type A_SymbolToken<T extends string = string> = GenericAlgebraicValueToken<'A_Symbol', T>\nexport type A_ReservedSymbolToken<T extends ValidAlgebraicReservedName = ValidAlgebraicReservedName> = GenericAlgebraicValueToken<'A_ReservedSymbol', T>\nexport type A_SingleLineCommentToken = GenericAlgebraicValueToken<'A_SingleLineComment'>\nexport type A_MultiLineCommentToken = GenericAlgebraicValueToken<'A_MultiLineComment'>\n\nexport type AlgebraicOnlyValueToken =\n | A_WhitespaceToken\n | A_NumberToken\n | A_BasePrefixedNumberToken\n | A_OperatorToken\n | A_SymbolToken\n | A_ReservedSymbolToken\n | A_SingleLineCommentToken\n | A_MultiLineCommentToken\n\nexport type AlgebraicToken =\n | AlgebraicOnlyValueToken\n | CommonSimpleToken\n | CommonValueToken\n\nexport function isA_SymbolToken<T extends string>(token: Token | undefined, symbolName?: T): token is A_SymbolToken<T> {\n if (token?.[0] !== 'A_Symbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\n\nexport function assertA_SymbolToken<T extends string>(token: Token | undefined, symbolName?: T): asserts token is A_SymbolToken<T> {\n if (!isA_SymbolToken(token, symbolName)) {\n throwUnexpectedToken('A_Symbol', undefined, token)\n }\n}\nexport function asA_SymbolToken<T extends string>(token: Token | undefined, symbolName?: T): A_SymbolToken<T> {\n assertA_SymbolToken(token, symbolName)\n return token\n}\n\nexport function isA_BinaryOperatorToken(token: Token | undefined): token is A_OperatorToken<SymbolicBinaryOperator> {\n return token?.[0] === 'A_Operator' && isSymbolicBinaryOperator(token[1])\n}\nexport function assertA_BinaryOperatorToken(token: Token | undefined): asserts token is A_OperatorToken<SymbolicBinaryOperator> {\n if (!isA_BinaryOperatorToken(token)) {\n throwUnexpectedToken('A_Operator', undefined, token)\n }\n}\nexport function asA_BinaryOperatorToken(token: Token | undefined): A_OperatorToken<SymbolicBinaryOperator> {\n assertA_BinaryOperatorToken(token)\n return token\n}\n\nexport function isA_ReservedSymbolToken<T extends ValidAlgebraicReservedName>(token: Token | undefined, symbolName?: T): token is A_ReservedSymbolToken<T> {\n if (token?.[0] !== 'A_ReservedSymbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\nexport function assertA_ReservedSymbolToken<T extends ValidAlgebraicReservedName>(token: Token | undefined, symbolName?: T): asserts token is A_ReservedSymbolToken<T> {\n if (!isA_ReservedSymbolToken(token, symbolName)) {\n throwUnexpectedToken('A_ReservedSymbol', symbolName, token)\n }\n}\nexport function asA_ReservedSymbolToken<T extends ValidAlgebraicReservedName>(token: Token | undefined, symbolName?: T): A_ReservedSymbolToken<T> {\n assertA_ReservedSymbolToken(token, symbolName)\n return token\n}\n\nexport function isA_CommentToken(token: Token | undefined): token is A_SingleLineCommentToken {\n return token?.[0] === 'A_SingleLineComment'\n}\nexport function assertA_CommentToken(token: Token | undefined): asserts token is A_SingleLineCommentToken {\n if (!isA_CommentToken(token)) {\n throwUnexpectedToken('A_SingleLineComment', undefined, token)\n }\n}\nexport function asA_CommentToken(token: Token | undefined): A_SingleLineCommentToken {\n assertA_CommentToken(token)\n return token\n}\n\nexport function isA_MultiLineCommentToken(token: Token | undefined): token is A_MultiLineCommentToken {\n return token?.[0] === 'A_MultiLineComment'\n}\nexport function assertA_MultiLineCommentToken(token: Token | undefined): asserts token is A_MultiLineCommentToken {\n if (!isA_MultiLineCommentToken(token)) {\n throwUnexpectedToken('A_MultiLineComment', undefined, token)\n }\n}\nexport function asA_MultiLineCommentToken(token: Token | undefined): A_MultiLineCommentToken {\n assertA_MultiLineCommentToken(token)\n return token\n}\n\nexport function isA_OperatorToken<T extends SymbolicOperator>(token: Token | undefined, operatorName?: T): token is A_OperatorToken<T> {\n if (token?.[0] !== 'A_Operator') {\n return false\n }\n if (operatorName && token[1] !== operatorName) {\n return false\n }\n return true\n}\nexport function assertA_OperatorToken<T extends SymbolicOperator>(token: Token | undefined, operatorName?: T): asserts token is A_OperatorToken<T> {\n if (!isA_OperatorToken(token, operatorName)) {\n if (operatorName) {\n throw new LitsError(`Unexpected token: ${token}, expected operator ${operatorName}`, undefined)\n }\n throwUnexpectedToken('A_Operator', operatorName, token)\n }\n}\nexport function asA_OperatorToken<T extends SymbolicOperator>(token: Token | undefined, operatorName?: T): A_OperatorToken<T> {\n assertA_OperatorToken(token, operatorName)\n return token\n}\n\nexport function isA_WhitespaceToken(token: Token | undefined): token is A_WhitespaceToken {\n return token?.[0] === 'A_Whitespace'\n}\nexport function assertA_WhitespaceToken(token: Token | undefined): asserts token is A_WhitespaceToken {\n if (!isA_WhitespaceToken(token)) {\n throwUnexpectedToken('A_Whitespace', undefined, token)\n }\n}\nexport function asA_WhitespaceToken(token: Token | undefined): A_WhitespaceToken {\n assertA_WhitespaceToken(token)\n return token\n}\n\nexport function isA_NumberToken(token: Token | undefined): token is A_NumberToken {\n return token?.[0] === 'A_Number'\n}\nexport function assertA_NumberToken(token: Token | undefined): asserts token is A_NumberToken {\n if (!isA_NumberToken(token)) {\n throwUnexpectedToken('A_Number', undefined, token)\n }\n}\nexport function asA_NumberToken(token: Token | undefined): A_NumberToken {\n assertA_NumberToken(token)\n return token\n}\n\nexport function isA_BasePrefixedNumberToken(token: Token | undefined): token is A_BasePrefixedNumberToken {\n return token?.[0] === 'A_BasePrefixedNumber'\n}\nexport function assertA_BasePrefixedNumberToken(token: Token | undefined): asserts token is A_BasePrefixedNumberToken {\n if (!isA_BasePrefixedNumberToken(token)) {\n throwUnexpectedToken('A_BasePrefixedNumber', undefined, token)\n }\n}\nexport function asA_BasePrefixedNumberToken(token: Token | undefined): A_BasePrefixedNumberToken {\n assertA_BasePrefixedNumberToken(token)\n return token\n}\n","import type { CommonSimpleToken, CommonSimpleTokenType, CommonValueToken, CommonValueTokenType } from '../common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from '../common/commonTokens'\nimport type { Token } from '../tokens'\nimport { type TokenDebugData, throwUnexpectedToken } from '../utils'\n\nexport const modifierNames = ['&rest', '&let', '&when', '&while'] as const\nexport type ModifierName = typeof modifierNames[number]\n\nexport const polishOnlySimpleTokenTypes = [\n 'P_FnShorthand',\n] as const satisfies `P_${string}`[]\n\nexport const polishSimpleTokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n] as const\n\nexport const polishOnlyValueTokenTypes = [\n 'P_Modifier',\n 'P_StringShorthand',\n 'P_Symbol',\n 'P_ReservedSymbol',\n 'P_CollectionAccessor',\n 'P_Comment',\n 'P_Whitespace',\n 'P_Number',\n] as const satisfies `P_${string}`[]\n\nexport const polishValueTokenTypes = [\n ...commomValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\nexport const polishTokenTypes = [\n ...polishSimpleTokenTypes,\n ...polishValueTokenTypes,\n] as const\n\nexport type PolishSimpleTokenType = typeof polishSimpleTokenTypes[number]\nexport type PolishValueTokenType = typeof polishValueTokenTypes[number]\nexport type PolishTokenType = typeof polishTokenTypes[number]\n\ntype GenericPolishSimpleToken<T extends Exclude<PolishSimpleTokenType, CommonSimpleTokenType>> = [T] | [T, TokenDebugData]\ntype GenericPolishValueToken<T extends Exclude<PolishValueTokenType, CommonValueTokenType>, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type P_FnShorthandToken = GenericPolishSimpleToken<'P_FnShorthand'>\nexport type P_ModifierToken = GenericPolishValueToken<'P_Modifier', ModifierName>\nexport type P_StringShorthandToken = GenericPolishValueToken<'P_StringShorthand'>\nexport type P_SymbolToken = GenericPolishValueToken<'P_Symbol'>\nexport type P_ReservedSymbolToken = GenericPolishValueToken<'P_ReservedSymbol'>\nexport type P_CollectionAccessorToken = GenericPolishValueToken<'P_CollectionAccessor', '.' | '#'>\nexport type P_CommentToken = GenericPolishValueToken<'P_Comment'>\nexport type P_WhitespaceToken = GenericPolishValueToken<'P_Whitespace'>\nexport type P_NumberToken = GenericPolishValueToken<'P_Number'>\n\nexport type PolishOnlySimpleToken =\n | P_FnShorthandToken\n\nexport type PolishOnlyValueToken =\n | P_ModifierToken\n | P_StringShorthandToken\n | P_SymbolToken\n | P_ReservedSymbolToken\n | P_CollectionAccessorToken\n | P_CommentToken\n | P_WhitespaceToken\n | P_NumberToken\n\nexport type PolishToken =\n | PolishOnlySimpleToken\n | PolishOnlyValueToken\n | CommonSimpleToken\n | CommonValueToken\n\nexport function isP_StringShorthandToken(token?: Token): token is P_StringShorthandToken {\n return token?.[0] === 'P_StringShorthand'\n}\nexport function assertP_StringShorthandToken(token?: Token): asserts token is P_StringShorthandToken {\n if (!isP_StringShorthandToken(token)) {\n throwUnexpectedToken('P_StringShorthand', undefined, token)\n }\n}\nexport function asP_StringShorthandToken(token?: Token): P_StringShorthandToken {\n assertP_StringShorthandToken(token)\n return token\n}\n\nexport function isP_SymbolToken(token?: Token): token is P_SymbolToken {\n return token?.[0] === 'P_Symbol'\n}\nexport function assertP_SymbolToken(token?: Token): asserts token is P_SymbolToken {\n if (!isP_SymbolToken(token)) {\n throwUnexpectedToken('P_Symbol', undefined, token)\n }\n}\nexport function asP_SymbolToken(token?: Token): P_SymbolToken {\n assertP_SymbolToken(token)\n return token\n}\n\nexport function isP_ReservedSymbolToken(token?: Token): token is P_ReservedSymbolToken {\n return token?.[0] === 'P_ReservedSymbol'\n}\nexport function assertP_ReservedSymbolToken(token?: Token): asserts token is P_ReservedSymbolToken {\n if (!isP_ReservedSymbolToken(token)) {\n throwUnexpectedToken('P_ReservedSymbol', undefined, token)\n }\n}\nexport function asP_ReservedSymbolToken(token?: Token): P_ReservedSymbolToken {\n assertP_ReservedSymbolToken(token)\n return token\n}\n\nexport function isP_ModifierToken(token?: Token): token is P_ModifierToken {\n return token?.[0] === 'P_Modifier'\n}\nexport function assertP_ModifierToken(token?: Token): asserts token is P_ModifierToken {\n if (!isP_ModifierToken(token)) {\n throwUnexpectedToken('P_Modifier', undefined, token)\n }\n}\nexport function asP_ModifierToken(token?: Token): P_ModifierToken {\n assertP_ModifierToken(token)\n return token\n}\n\nexport function isP_FnShorthandToken(token?: Token): token is P_FnShorthandToken {\n return token?.[0] === 'P_FnShorthand'\n}\nexport function assertP_FnShorthandToken(token?: Token): asserts token is P_FnShorthandToken {\n if (!isP_FnShorthandToken(token)) {\n throwUnexpectedToken('P_FnShorthand', undefined, token)\n }\n}\nexport function asP_FnShorthandToken(token?: Token): P_FnShorthandToken {\n assertP_FnShorthandToken(token)\n return token\n}\n\nexport function isP_CollectionAccessorToken(token?: Token): token is P_CollectionAccessorToken {\n return token?.[0] === 'P_CollectionAccessor'\n}\nexport function assertP_CollectionAccessorToken(token?: Token): asserts token is P_CollectionAccessorToken {\n if (!isP_CollectionAccessorToken(token)) {\n throwUnexpectedToken('P_CollectionAccessor', undefined, token)\n }\n}\nexport function asP_CollectionAccessorToken(token?: Token): P_CollectionAccessorToken {\n assertP_CollectionAccessorToken(token)\n return token\n}\n\nexport function isP_CommentToken(token?: Token): token is P_CommentToken {\n return token?.[0] === 'P_Comment'\n}\nexport function assertP_CommentToken(token?: Token): asserts token is P_CommentToken {\n if (!isP_CommentToken(token)) {\n throwUnexpectedToken('P_Comment', undefined, token)\n }\n}\nexport function asP_CommentToken(token?: Token): P_CommentToken {\n assertP_CommentToken(token)\n return token\n}\n\nexport function isP_WhitespaceToken(token?: Token): token is P_WhitespaceToken {\n return token?.[0] === 'P_Whitespace'\n}\nexport function assertP_WhitespaceToken(token?: Token): asserts token is P_WhitespaceToken {\n if (!isP_WhitespaceToken(token)) {\n throwUnexpectedToken('P_Whitespace', undefined, token)\n }\n}\nexport function asP_WhitespaceToken(token?: Token): P_WhitespaceToken {\n assertP_WhitespaceToken(token)\n return token\n}\n\nexport function isP_NumberToken(token?: Token): token is P_NumberToken {\n return token?.[0] === 'P_Number'\n}\nexport function assertP_NumberToken(token?: Token): asserts token is P_NumberToken {\n if (!isP_NumberToken(token)) {\n throwUnexpectedToken('P_Number', undefined, token)\n }\n}\nexport function asP_NumberToken(token?: Token): P_NumberToken {\n assertP_NumberToken(token)\n return token\n}\n","import { LitsError } from '../errors'\nimport type { CommonSimpleToken, CommonValueToken } from './common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from './common/commonTokens'\nimport type { AlgebraicOnlyValueToken, AlgebraicSimpleTokenType, AlgebraicValueTokenType } from './algebraic/algebraicTokens'\nimport { algebraicOnlyValueTokenTypes } from './algebraic/algebraicTokens'\nimport type { PolishOnlySimpleToken, PolishOnlyValueToken, PolishSimpleTokenType, PolishValueTokenType } from './polish/polishTokens'\nimport { polishOnlySimpleTokenTypes, polishOnlyValueTokenTypes } from './polish/polishTokens'\n\nexport const simpleTokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n] as const\n\nexport const valueTokenTypes = [\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\nexport const tokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\ntype SimpleTokenType = AlgebraicSimpleTokenType | PolishSimpleTokenType\ntype ValueTokenType = AlgebraicValueTokenType | PolishValueTokenType\n\nexport type TokenType = typeof tokenTypes[number]\n\nexport type SimpleToken =\n | CommonSimpleToken\n | PolishOnlySimpleToken\n\nexport type ValueToken =\n | CommonValueToken\n | AlgebraicOnlyValueToken\n | PolishOnlyValueToken\n\nexport type Token =\n | SimpleToken\n | ValueToken\n\nexport function isTokenType(type: string): type is TokenType {\n return typeof type === 'string' && tokenTypes.includes(type as TokenType)\n}\n\nexport function isToken(token?: Token): token is Token {\n return !!token\n}\nexport function assertToken(token?: Token): asserts token is Token {\n if (!isToken(token)) {\n throw new LitsError(`Expected token, got ${token}`, undefined)\n }\n}\nexport function asToken(token?: Token): Token {\n assertToken(token)\n return token\n}\n\nexport function isSimpleToken(token?: Token): token is SimpleToken {\n return isToken(token) && simpleTokenTypes.includes(token[0] as SimpleTokenType)\n}\n\nexport function assertSimpleToken(token?: Token): asserts token is SimpleToken {\n if (!isSimpleToken(token)) {\n throw new LitsError(`Expected simple token, got ${token}`, undefined)\n }\n}\n\nexport function asSimpleToken(token?: Token): SimpleToken {\n assertSimpleToken(token)\n return token\n}\n\nexport function isValueToken(token?: Token): token is ValueToken {\n return isToken(token) && valueTokenTypes.includes(token[0] as ValueTokenType)\n}\n\nexport function assertValueToken(token?: Token): asserts token is ValueToken {\n if (!isValueToken(token)) {\n throw new LitsError(`Expected value token, got ${token}`, undefined)\n }\n}\n\nexport function asValueToken(token?: Token): ValueToken {\n assertValueToken(token)\n return token\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { astNodeTypeName, isAstNodeType, isFunctionType } from '../../constants/constants'\nimport type { AstNode, LitsFunction } from '../../parser/interface'\nimport { type Token, isTokenType } from '../../tokenizer/tokens'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (!isUnknownRecord(func))\n return false\n\n return !!func[FUNCTION_SYMBOL] && isFunctionType(func.t)\n}\n\nfunction isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isToken(value: unknown): value is Token {\n return Array.isArray(value) && value.length >= 1 && value.length <= 3 && typeof value[0] === 'string' && isTokenType(value[0])\n}\n\nfunction isAstNode(value: unknown): value is AstNode {\n return isUnknownRecord(value) && isAstNodeType(value.t)\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isToken(value))\n return `${value[0]}-token${value[1] ? `\"${value[1]}\"` : ''}`\n\n if (isAstNode(value))\n return `${astNodeTypeName.get(value.t)}-node`\n\n if (value === null)\n return 'nil'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n '<<': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n paramCount: 2,\n },\n '>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n paramCount: 2,\n },\n '>>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >>> count\n },\n paramCount: 2,\n },\n '~': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n paramCount: 1,\n },\n '&': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '&!': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '|': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '^': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit_flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n paramCount: 2,\n },\n 'bit_set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n paramCount: 2,\n },\n 'bit_clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n paramCount: 2,\n },\n 'bit_test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n paramCount: 2,\n },\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { AstNodeType, isAstNodeType } from '../constants/constants'\nimport type {\n AstNode,\n ExpressionNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n SymbolNode,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isAstNode(value: unknown): value is AstNode {\n if (value === null || typeof value !== 'object')\n return false\n\n if (!isAstNodeType((value as AstNode).t))\n return false\n\n return true\n}\nexport function asAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): AstNode {\n assertAstNode(value, sourceCodeInfo)\n return value\n}\nexport function assertAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is AstNode {\n if (!isAstNode(value))\n throw getAssertionError('AstNode', value, sourceCodeInfo)\n}\n\nexport function isSymbolNode(value: unknown): value is SymbolNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.Symbol\n}\nexport function asSymbolNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(value, sourceCodeInfo)\n return value\n}\nexport function assertSymbolNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is SymbolNode {\n if (!isSymbolNode(value))\n throw getAssertionError('SymbolNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNode(value: unknown): value is NormalExpressionNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression\n}\nexport function asNormalExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNode(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNode {\n if (!isNormalExpressionNode(value))\n throw getAssertionError('NormalExpressionNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(value: unknown): value is NormalExpressionNodeWithName {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression && typeof value.n === 'string'\n}\nexport function asNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(value))\n throw getAssertionError('NormalExpressionNodeWithName', value, sourceCodeInfo)\n}\n\nexport function isExpressionNode(value: unknown): value is ExpressionNode {\n if (!isAstNode(value))\n return false\n\n return (\n value.t === AstNodeType.NormalExpression\n || value.t === AstNodeType.SpecialExpression\n || value.t === AstNodeType.Number\n || value.t === AstNodeType.String\n )\n}\nexport function asExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is ExpressionNode {\n if (!isExpressionNode(value))\n throw getAssertionError('ExpressionNode', value, sourceCodeInfo)\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../builtin/specialExpressions/declared'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../builtin/specialExpressions/loops'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { RemoveOptions } from '.'\n\nconst specialExpressionCommentRemovers = {\n '&&': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'comment': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'cond': (node: CondNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'switch': (node: SwitchNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defined?': (node: DeclaredNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defn': (_node: DefnNode, _removeOptions: RemoveOptions) => {},\n 'def': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'do': (node: DoNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'doseq': (_node: DoSeqNode, _removeOptions: RemoveOptions) => {},\n 'fn': (_node: FnNode, _removeOptions: RemoveOptions) => {},\n 'for': (_node: ForNode, _removeOptions: RemoveOptions) => {},\n 'if': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'unless': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'let': (node: LetNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n node.bs.forEach((bindingNode) => {\n removeOptions.recursivelyRemoveCommentNodes(bindingNode.v)\n })\n },\n 'loop': (_node: LoopNode, _removeOptions: RemoveOptions) => {},\n '||': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n '??': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'recur': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'throw': (node: ThrowNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'try': (_node: TryNode, _removeOptions: RemoveOptions) => {},\n} satisfies Record<SpecialExpressionName, (astNode: any, removeOptions: RemoveOptions) => void>\n\nexport function removeCommentNodesFromSpecialExpression(\n node: SpecialExpressionNode,\n removeOptions: RemoveOptions,\n) {\n const uncommenter = specialExpressionCommentRemovers[node.n as '&&']\n return uncommenter?.(node as AndNode, removeOptions)\n}\n","import { AstNodeType } from '../constants/constants'\nimport type { Ast, AstNode } from '../parser/interface'\nimport { isNormalExpressionNode } from '../typeGuards/astNode'\nimport { removeCommentNodesFromSpecialExpression } from './removeCommentNodesFromSpecialExpression'\n\nconst removeOptions = {\n recursivelyRemoveCommentNodes,\n removeCommenNodesFromArray,\n} as const\n\nexport type RemoveOptions = typeof removeOptions\n\nexport function removeCommenNodes(ast: Ast): void {\n removeCommenNodesFromArray(ast.b)\n ast.b.forEach(recursivelyRemoveCommentNodes)\n}\n\nfunction recursivelyRemoveCommentNodes(astNode: AstNode) {\n if (isNormalExpressionNode(astNode)) {\n removeCommenNodesFromArray(astNode.p)\n astNode.p.forEach(recursivelyRemoveCommentNodes)\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n removeCommentNodesFromSpecialExpression(astNode, removeOptions)\n }\n}\n\nfunction removeCommenNodesFromArray(astNodes: AstNode[]): void {\n let i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n while (i >= 0) {\n astNodes.splice(i, 1)\n i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n }\n}\n\nexport function withoutCommentNodes(astNodes: AstNode[]) {\n return astNodes.filter(n => n.t !== AstNodeType.Comment)\n}\n","import type { Count } from '../builtin/interface'\nimport { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { GenericNode } from '../parser/interface'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertNumberOfParams(count: Count, node: GenericNode): void {\n assertCount({\n count,\n length: withoutCommentNodes(node.p).length,\n name: node.n ?? 'expression',\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n })\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nfunction assertCount({ count, length, name, sourceCodeInfo }: { name: string | undefined, count: Count, length: number, sourceCodeInfo?: SourceCodeInfo }): void {\n if (typeof count === 'number') {\n if (length !== count) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n else {\n const { min, max, even, odd } = count\n if (even) {\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an even number, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n\n if (odd) {\n if (length % 2 !== 1) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an odd number, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n\n if (typeof min === 'number' && length < min) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at least ${min}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n\n if (typeof max === 'number' && length > max) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { BuiltinFunction, LitsFunction, NativeJsFunction, UserDefinedFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.t === FunctionType.UserDefined\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.t === FunctionType.NativeJsFunction\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is BuiltinFunction {\n return isUnknownRecord(value) && value.t === FunctionType.Builtin\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Arr, Coll, Obj } from '../interface'\nimport type { NativeJsFunction, RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { FunctionType } from '../constants/constants'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\ntype Type = 'null' | 'boolean' | 'number' | 'string' | 'object' | 'array' | 'regexp' | 'unknown'\n\nconst sortOrderByType: Record<Type, number> = {\n boolean: 0,\n number: 1,\n string: 2,\n array: 3,\n object: 4,\n regexp: 5,\n unknown: 6,\n null: 7,\n}\n\nfunction getType(value: unknown): Type {\n if (value === null)\n return 'null'\n else if (typeof value === 'boolean')\n return 'boolean'\n else if (typeof value === 'number')\n return 'number'\n else if (typeof value === 'string')\n return 'string'\n else if (Array.isArray(value))\n return 'array'\n else if (isObj(value))\n return 'object'\n else if (isRegularExpression(value))\n return 'regexp'\n else\n return 'unknown'\n}\n\nexport function compare(a: unknown, b: unknown): number {\n const aType = getType(a)\n const bType = getType(b)\n if (aType !== bType)\n return Math.sign(sortOrderByType[aType] - sortOrderByType[bType])\n\n switch (aType) {\n case 'null':\n return 0\n case 'boolean':\n if (a === b)\n return 0\n\n return a === false ? -1 : 1\n case 'number':\n return Math.sign((a as number) - (b as number))\n case 'string': {\n const aString = a as string\n const bString = b as string\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'array': {\n const aArray = a as Arr\n const bArray = b as Arr\n if (aArray.length < bArray.length)\n return -1\n else if (aArray.length > bArray.length)\n return 1\n\n for (let i = 0; i < aArray.length; i += 1) {\n const innerComp = compare(aArray[i], bArray[i])\n if (innerComp !== 0)\n return innerComp\n }\n return 0\n }\n case 'object': {\n const aObj = a as Obj\n const bObj = b as Obj\n return Math.sign(Object.keys(aObj).length - Object.keys(bObj).length)\n }\n case 'regexp': {\n const aString = (a as RegularExpression).s\n const bString = (b as RegularExpression).s\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'unknown':\n return 0\n }\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n f: {\n fn,\n },\n n: name,\n t: FunctionType.NativeJsFunction,\n }\n}\n\nexport function arrayToPairs<T>(arr: T[]): T[][] {\n const pairs: T[][] = []\n for (let i = 0; i < arr.length; i += 2)\n pairs.push([arr[i]!, arr[i + 1]!])\n\n return pairs\n}\n","import type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { LitsFunction } from '../../..'\nimport type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { cloneColl, collHasKey, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asColl, assertAny, assertColl, assertObj, assertSeq, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString } from '../../../typeGuards/string'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'get_in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // nil behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n paramCount: { min: 2, max: 3 },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n paramCount: 1,\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isSeq(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n assertNumber(key, sourceCodeInfo, { integer: true })\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n },\n paramCount: 2,\n },\n 'has?': {\n evaluate: ([coll, value], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.includes(value)\n\n if (typeof coll === 'string') {\n if (typeof value === 'string') {\n return coll.includes(value)\n }\n else if (typeof value === 'number') {\n return coll.includes(`${value}`)\n }\n return false\n }\n\n return Object.values(coll).includes(value)\n },\n paramCount: 2,\n },\n 'has_some?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null || seq === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (coll.includes(value))\n return true\n }\n return false\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (isString(value, { char: true }) ? coll.split('').includes(value) : false)\n return true\n }\n return false\n }\n for (const value of seq) {\n if (Object.values(coll).includes(value))\n return true\n }\n return false\n },\n paramCount: 2,\n },\n 'has_every?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (seq === null)\n return true\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (!coll.includes(value))\n return false\n }\n return true\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (!isString(value, { char: true }) || !coll.split('').includes(value))\n return false\n }\n return true\n }\n for (const value of seq) {\n if (!Object.values(coll).includes(value))\n return false\n }\n return true\n },\n paramCount: 2,\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n paramCount: 3,\n },\n 'assoc_in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n paramCount: 3,\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n paramCount: { min: 3 },\n },\n 'update_in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n paramCount: { min: 3 },\n },\n 'concat': {\n evaluate: (params, sourceCodeInfo): Any => {\n assertColl(params[0], sourceCodeInfo)\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isString(params[0])) {\n return params.reduce((result: string, s) => {\n assertString(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n paramCount: { min: 1 },\n },\n 'not_empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n paramCount: 1,\n },\n 'every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertColl(coll, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not_any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not_every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n array: {\n evaluate: (params): Arr => params,\n paramCount: {},\n },\n\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n paramCount: { min: 1, max: 3 },\n },\n\n repeat: {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n paramCount: 2,\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n paramCount: 1,\n },\n mapcat: {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n paramCount: 2,\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { collHasKey, compare, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n paramCount: { min: 2, max: 3 },\n },\n 'filter': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n paramCount: 1,\n },\n 'map': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }) => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n return seq.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return seq\n .split('')\n .map((elem) => {\n const newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo, { char: true })\n return newVal\n })\n .join('')\n }\n },\n paramCount: 2,\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index_of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last_index_of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (seq.length === 1)\n return [toAny(seq[0])]\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(seq[0])]\n seq.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(seq[0]))\n return resultArray\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return seq.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(seq[0]))\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce_right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'nthrest': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substring(integerCount)\n },\n paramCount: 2,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'nthnext': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (seq.length <= count)\n return null\n\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substring(integerCount)\n },\n paramCount: 2,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n\n if (params.length === 1)\n return seq\n\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n paramCount: { min: 1, max: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort_by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertAny(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take_last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take_while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop_last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop_while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return Array.from(new Set(input))\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove_at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n\n const intIndex = Math.ceil(index)\n if (intIndex < 0 || intIndex >= input.length)\n return input\n\n if (Array.isArray(input)) {\n const copy = [...input]\n copy.splice(index, 1)\n return copy\n }\n return `${input.substring(0, index)}${input.substring(index + 1)}`\n },\n paramCount: 2,\n },\n 'split_at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { finite: true })\n const intPos = toNonNegativeInteger(pos)\n assertSeq(seq, sourceCodeInfo)\n return [seq.slice(0, intPos), seq.slice(intPos)]\n },\n paramCount: 2,\n },\n\n 'split_with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group_by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition_all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition_by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends_with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return str.at(-1) === search\n },\n paramCount: 2,\n },\n 'starts_with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.startsWith(search)\n }\n\n return str[0] === search\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.split('')\n\n return seq\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n paramCount: {},\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n 'sqrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n paramCount: 1,\n },\n\n 'cbrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n paramCount: 1,\n },\n\n '**': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n paramCount: 1,\n },\n\n 'max_safe_integer': {\n evaluate: (): number => {\n return Number.MAX_SAFE_INTEGER\n },\n paramCount: 0,\n },\n\n 'min_safe_integer': {\n evaluate: (): number => {\n return Number.MIN_SAFE_INTEGER\n },\n paramCount: 0,\n },\n\n 'max_value': {\n evaluate: (): number => {\n return Number.MAX_VALUE\n },\n paramCount: 0,\n },\n\n 'min_value': {\n evaluate: (): number => {\n return Number.MIN_VALUE\n },\n paramCount: 0,\n },\n\n 'epsilon': {\n evaluate: (): number => {\n return Number.EPSILON\n },\n paramCount: 0,\n },\n\n 'positive_infinity': {\n evaluate: (): number => {\n return Number.POSITIVE_INFINITY\n },\n paramCount: 0,\n },\n\n 'negative_infinity': {\n evaluate: (): number => {\n return Number.NEGATIVE_INFINITY\n },\n paramCount: 0,\n },\n\n 'nan': {\n evaluate: (): number => {\n return Number.NaN\n },\n paramCount: 0,\n },\n\n 'e': {\n evaluate: (): number => {\n return Math.E\n },\n paramCount: 0,\n },\n\n 'pi': {\n evaluate: (): number => {\n return Math.PI\n },\n paramCount: 0,\n },\n\n 'exp': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.exp(value)\n },\n paramCount: 1,\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n paramCount: 1,\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n paramCount: 1,\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '!=': {\n evaluate: (params): boolean => {\n for (let i = 0; i < params.length - 1; i += 1) {\n for (let j = i + 1; j < params.length; j += 1) {\n if (params[i] === params[j])\n return false\n }\n }\n\n return true\n },\n paramCount: { min: 1 },\n },\n '==': {\n evaluate: ([first, ...rest]): boolean => {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n },\n paramCount: { min: 1 },\n },\n 'equal?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n return deepEqual(asAny(a, sourceCodeInfo), asAny(b, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) <= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) >= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '>=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) < 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) > 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch>iso_date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso_date>epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b]): number => {\n return compare(a, b)\n },\n paramCount: 2,\n },\n 'json_parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json_stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== second)\n throw new AssertionError(`Expected ${first} to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first === second)\n throw new AssertionError(`Expected ${first} not to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected\\n${JSON.stringify(first, null, 2)}\\nto deep equal\\n${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_not_equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be nil.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_throws_error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_not_throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n object: {\n evaluate: (params, sourceCodeInfo): Obj => {\n const result: Obj = {}\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value\n }\n return result\n },\n paramCount: { even: true },\n },\n\n keys: {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n vals: {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n entries: {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n find: {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n dissoc: {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n merge: {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n merge_with: {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n zipmap: {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n select_keys: {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'nil?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not_empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n}\n","import type { RegularExpression } from '../../../parser/interface'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n regexp: {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n match: {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n replace: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n replace_all: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'subs': {\n evaluate: ([first, second, third], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo, { integer: true, nonNegative: true })\n\n if (third === undefined)\n return (first).substring(second)\n\n assertNumber(third, sourceCodeInfo, { gte: second })\n return (first).substring(second, third)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'string_repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from_char_code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to_char_code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower_case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper_case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim_left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim_right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n '++': {\n evaluate: (params, sourceCodeInfo): string => {\n if (params.length === 0) {\n return ''\n }\n const first = params[0]\n if (first !== null) {\n assertStringOrNumber(first, sourceCodeInfo)\n }\n if (params.length === 1) {\n return first === null ? '' : `${first}`\n }\n\n return params.slice(1).reduce((acc: string, str) => {\n if (str !== null) {\n assertStringOrNumber(str, sourceCodeInfo)\n }\n if (str === null) {\n return acc\n }\n return `${acc}${str}`\n }, first === null ? '' : `${first}`)\n },\n paramCount: {},\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertString(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split_lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad_left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad_right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode_base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode_base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode_uri_component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode_uri_component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import { FunctionType } from '../../../constants/constants'\nimport type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/interface'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n apply: {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n identity: {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n partial: {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Partial,\n f: toAny(fn),\n p: params,\n }\n },\n paramCount: { min: 1 },\n },\n\n comp: {\n evaluate: (fns, sourceCodeInfo): CompFunction => {\n if (fns.length > 1) {\n const last = fns[fns.length - 1]\n if (Array.isArray(last))\n // eslint-disable-next-line ts/no-unsafe-assignment\n fns = [...fns.slice(0, -1), ...last]\n }\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Comp,\n f: fns,\n }\n },\n paramCount: {},\n },\n\n constantly: {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Constantly,\n v: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n juxt: {\n evaluate: (fns, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Juxt,\n f: fns,\n }\n },\n paramCount: { min: 1 },\n },\n\n complement: {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Complement,\n f: toAny(fn),\n }\n },\n paramCount: 1,\n },\n\n every_pred: {\n evaluate: (fns, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.EveryPred,\n f: fns,\n }\n },\n paramCount: { min: 1 },\n },\n\n some_pred: {\n evaluate: (fns, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.SomePred,\n f: fns,\n }\n },\n paramCount: { min: 1 },\n },\n\n fnil: {\n evaluate: ([fn, ...params], sourceCodeInfo): FNilFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Fnil,\n f: toAny(fn),\n p: params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","import type { BuiltinNormalExpressions } from '../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface AndNode extends CommonSpecialExpressionNode<'&&'> {}\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: AndNode = {\n t: AstNodeType.SpecialExpression,\n n: '&&',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = true\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { CommonSpecialExpressionName, GenericCommonSpecialExpressionNode } from '..'\nimport { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport function getCommonPolishSpecialExpressionParser<T extends CommonSpecialExpressionName>(name: T): BuiltinSpecialExpression<Any, GenericCommonSpecialExpressionNode<T>>['polishParse'] {\n return (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n return {\n t: AstNodeType.SpecialExpression,\n n: name,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n } as unknown as GenericCommonSpecialExpressionNode<T>\n }\n}\n","import type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface CommentExpressionNode extends CommonSpecialExpressionNode<'comment'> {}\n\nexport const commentSpecialExpression: BuiltinSpecialExpression<null, CommentExpressionNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('comment'),\n paramCount: {},\n evaluate: () => null,\n findUnresolvedIdentifiers: () => new Set(),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { arrayToPairs } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface CondNode extends CommonSpecialExpressionNode<'cond'> {}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('cond'),\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const [test, form] of arrayToPairs(node.p)) {\n const value = evaluateAstNode(test!, contextStack)\n if (!value)\n continue\n\n return evaluateAstNode(form!, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { arrayToPairs } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface SwitchNode extends CommonSpecialExpressionNode<'switch'> {}\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('switch'),\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const switchValue = evaluateAstNode(node.p[0]!, contextStack)\n for (const [test, form] of arrayToPairs(node.p.slice(1))) {\n const value = evaluateAstNode(test!, contextStack)\n if (value === switchValue) {\n return evaluateAstNode(form!, contextStack)\n }\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface DeclaredNode extends CommonSpecialExpressionNode<'defined?'> {}\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('defined?'),\n paramCount: 1,\n evaluate: (node, contextStack) => {\n const lookUpResult = contextStack.lookUp(node.p[0] as SymbolNode)\n return lookUpResult !== null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\n\nexport const polishReservedNamesRecord: Record<string, { value: Any, forbidden?: true }> = {\n true: { value: true },\n false: { value: false },\n nil: { value: null },\n null: { value: null },\n} as const\n\nexport type PolishReservedName = keyof typeof polishReservedNamesRecord\n\nexport const polishReservedNames: PolishReservedName[] = Object.keys(polishReservedNamesRecord)\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode, BindingNode } from '../parser/interface'\nimport { polishReservedNamesRecord } from '../tokenizer/polish/polishReservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport type { Builtin } from './interface'\nimport type { SpecialExpressionName } from '.'\n\nexport type Arity = number | { min: number }\n\nexport interface FunctionOverload {\n as: FunctionArguments\n a: Arity\n b: AstNode[]\n}\n\nexport interface FunctionArguments {\n m: string[]\n r?: string\n b: BindingNode[]\n}\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n if (builtin.specialExpressions[name as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-member-access\n if ((polishReservedNamesRecord as any)[name])\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asAstNode, asSymbolNode, assertSymbolNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefNode extends CommonSpecialExpressionNode<'def'> {}\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefNode = {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertSymbolNode(node.p[0], getTokenDebugData(node.token)?.sourceCodeInfo)\n\n return node\n },\n paramCount: 2,\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = (node.p[0] as SymbolNode).v\n\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n\n contextStack.exportValue(name, evaluateAstNode(node.p[1]!, contextStack))\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const subNode = asAstNode(node.p[1])\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = asSymbolNode(node.p[0]).v\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.exportValue(name, true)\n return result\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface DoNode extends CommonSpecialExpressionNode<'do'> {}\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('do'),\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n return findUnresolvedIdentifiers(node.p, contextStack.create({}), builtin)\n },\n}\n","import type { UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport function joinAnalyzeResults(...results: UnresolvedIdentifiers[]): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n for (const identifier of results)\n identifier.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addAnalyzeResults(target: UnresolvedIdentifiers, source: UnresolvedIdentifiers): void {\n source.forEach(symbol => target.add(symbol))\n}\n\nexport function combinate<T>(arrays: T[][]): T[][] {\n return arrays.reduce((acc: T[][], curr) => {\n return acc.flatMap(a => curr.map(c => [...a, c]))\n }, [[]])\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { addAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, FunctionType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type {\n AstNode,\n BindingNode,\n CommonSpecialExpressionNode,\n EvaluatedFunctionOverload,\n LitsFunction,\n ParseState,\n SymbolNode,\n} from '../../parser/interface'\nimport { asLBracketToken, assertRParenToken, isLBracketToken, isLParenToken, isRBracketToken, isRParenToken } from '../../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertSymbolNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport type { Arity, FunctionArguments, FunctionOverload } from '../utils'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefnNode extends CommonSpecialExpressionNode<'defn'> {\n f: SymbolNode\n o: FunctionOverload[]\n}\n\nexport interface FnNode extends CommonSpecialExpressionNode<'fn'> {\n p: AstNode[]\n o: FunctionOverload[]\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseToken } = parsers\n const functionName = parseToken(tokenStream, parseState)\n assertSymbolNode(functionName, getTokenDebugData(functionName.token)?.sourceCodeInfo)\n\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: functionName,\n p: [],\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = node.f.v\n\n assertNameNotDefined(name, contextStack, builtin, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.exportValue(name, litsFunction)\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n contextStack.exportValue(node.f.v, true)\n const newContext: Context = { [node.f.v]: { value: true } }\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: undefined,\n o: evaluatedFunctionOverloades,\n }\n\n return litsFunction\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) =>\n addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nfunction evaluateFunctionOverloades(\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): EvaluatedFunctionOverload[] {\n const evaluatedFunctionOverloades: EvaluatedFunctionOverload[] = []\n for (const functionOverload of (node as DefnNode | FnNode).o) {\n const functionContext: Context = {}\n for (const binding of functionOverload.as.b) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, contextStack)\n functionContext[binding.n] = { value: bindingValue }\n }\n\n const evaluatedFunctionOverload: EvaluatedFunctionOverload = {\n as: {\n mandatoryArguments: functionOverload.as.m,\n restArgument: functionOverload.as.r,\n },\n a: functionOverload.a,\n b: functionOverload.b,\n f: functionContext,\n }\n\n evaluatedFunctionOverloades.push(evaluatedFunctionOverload)\n }\n return evaluatedFunctionOverloades\n}\n\nfunction addOverloadsUnresolvedIdentifiers(\n overloads: FunctionOverload[],\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n functionNameContext?: Context,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n for (const overload of overloads) {\n const newContext: Context = {}\n overload.as.b.forEach((binding) => {\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n addAnalyzeResults(result, bindingResult)\n newContext[binding.n] = { value: true }\n })\n overload.as.m.forEach((arg) => {\n newContext[arg] = { value: true }\n })\n if (typeof overload.as.r === 'string')\n newContext[overload.as.r] = { value: true }\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = findUnresolvedIdentifiers(overload.b, newContextStack, builtin)\n addAnalyzeResults(result, overloadResult)\n }\n return result\n}\n\nfunction arityOk(overloadedFunctions: FunctionOverload[], arity: Arity) {\n if (typeof arity === 'number') {\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a !== arity\n\n return fun.a.min > arity\n })\n }\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a < arity.min\n\n return false\n })\n}\n\nfunction parseFunctionBody(\n tokenStream: TokenStream,\n parseState: ParseState,\n { parseToken }: ParserHelpers,\n): AstNode[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const body: AstNode[] = []\n while (!isRParenToken(tkn)) {\n body.push(parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n if (body.length === 0)\n throw new LitsError('Missing body in function', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n return body\n}\n\nfunction parseFunctionOverloades(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): FunctionOverload[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n if (isLParenToken(tkn)) {\n const functionOverloades: FunctionOverload[] = []\n while (!isRParenToken(tkn)) {\n parseState.position++\n tkn = asLBracketToken(tokenStream.tokens[parseState.position])\n const functionArguments = parseFunctionArguments(tokenStream, parseState, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n\n if (!arityOk(functionOverloades, arity))\n throw new LitsError('All overloaded functions must have different arity', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n const functionBody = parseFunctionBody(tokenStream, parseState, parsers)\n functionOverloades.push({\n as: functionArguments,\n b: functionBody,\n a: arity,\n })\n\n tkn = asToken(tokenStream.tokens[++parseState.position])\n if (!isRParenToken(tkn) && !isLParenToken(tkn))\n throw new LitsError(`Expected ( or ) token, got ${valueToString(tkn)}.`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n\n return functionOverloades\n }\n else if (isLBracketToken(tkn)) {\n const functionArguments = parseFunctionArguments(tokenStream, parseState, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n const functionBody = parseFunctionBody(tokenStream, parseState, parsers)\n return [\n {\n as: functionArguments,\n b: functionBody,\n a: arity,\n },\n ]\n }\n else {\n throw new LitsError(`Expected [ or ( token, got ${valueToString(tkn)}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n}\n\nfunction parseFunctionArguments(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): FunctionArguments {\n const { parseArgument, parseBindings } = parsers\n\n let bindings: BindingNode[] = []\n let restArgument: string | undefined\n const mandatoryArguments: string[] = []\n let state: 'mandatory' | 'rest' | 'let' = 'mandatory'\n let tkn = asToken(tokenStream.tokens[++parseState.position])\n\n // let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRBracketToken(tkn)) {\n if (state === 'let') {\n bindings = parseBindings(tokenStream, parseState)\n break\n }\n else {\n const node = parseArgument(tokenStream, parseState)\n tkn = asToken(tokenStream.tokens[parseState.position])\n\n if (node.t === AstNodeType.Modifier) {\n switch (node.v) {\n case '&rest':\n if (state === 'rest')\n throw new LitsError('& can only appear once', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n state = 'rest'\n break\n case '&let':\n if (state === 'rest' && !restArgument)\n throw new LitsError('No rest argument was specified', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n state = 'let'\n break\n default:\n throw new LitsError(`Illegal modifier: ${node.v}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n }\n else {\n switch (state) {\n case 'mandatory':\n mandatoryArguments.push(node.n)\n break\n case 'rest':\n if (restArgument !== undefined)\n throw new LitsError('Can only specify one rest argument', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n restArgument = node.n\n break\n }\n }\n }\n }\n parseState.position += 1\n\n if (state === 'rest' && restArgument === undefined)\n throw new LitsError('Missing rest argument name', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n const args: FunctionArguments = {\n m: mandatoryArguments,\n r: restArgument,\n b: bindings,\n }\n\n return args\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface IfNode extends CommonSpecialExpressionNode<'if'> {}\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('if'),\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface UnlessNode extends CommonSpecialExpressionNode<'unless'> {}\n\nexport const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('unless'),\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (!evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LetNode extends CommonSpecialExpressionNode<'let'> {\n bs: BindingNode[]\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n // const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [],\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n paramCount: 0,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const binding of node.bs) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, contextStack)\n contextStack.addValue(binding.n, bindingValue)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n const bindingResults = node.bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = findUnresolvedIdentifiers([valueNode], contextStack, builtin)\n contextStack.addValue(bindingNode.n, { value: true })\n return bindingsResult\n })\n\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(...bindingResults, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny } from '../../typeGuards/lits'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LoopNode extends CommonSpecialExpressionNode<'loop'> {\n bs: BindingNode[]\n}\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket, parseBindings }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: LoopNode = {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const bindingContext: Context = node.bs.reduce((result: Context, binding) => {\n result[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n for (;;) {\n let result: Any = null\n try {\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== node.bs.length) {\n throw new LitsError(\n `recur expected ${node.bs.length} parameters, got ${valueToString(params.length)}`,\n sourceCodeInfo,\n )\n }\n ;node.bs.forEach((binding, index) => {\n asNonUndefined(bindingContext[binding.n], sourceCodeInfo).value = asAny(params[index], sourceCodeInfo)\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n\n const bindingValueNodes = node.bs.map(binding => binding.v)\n const bindingsResult = findUnresolvedIdentifiers(bindingValueNodes, contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingsResult, paramsResult)\n },\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode, ParseState } from '../../parser/interface'\nimport { assertLBracketToken, assertRParenToken, isRBracketToken } from '../../tokenizer/common/commonTokens'\nimport type { SourceCodeInfo, TokenStream } from '../../tokenizer/interface'\nimport { isP_ModifierToken } from '../../tokenizer/polish/polishTokens'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\n\nexport interface ForNode extends CommonSpecialExpressionNode<'for'> {\n l: LoopBindingNode[]\n}\n\nexport interface DoSeqNode extends CommonSpecialExpressionNode<'doseq'> {\n l: LoopBindingNode[]\n}\n\ntype LoopNode = ForNode | DoSeqNode\n\nexport interface LoopBindingNode {\n b: BindingNode // Binding\n m: Array<'&let' | '&when' | '&while'> // Modifiers\n l?: BindingNode[] // Let-Bindings\n wn?: AstNode // When Node\n we?: AstNode // While Node\n}\n\nfunction parseLoopBinding(\n tokenStream: TokenStream,\n parseState: ParseState,\n { parseBinding, parseBindings, parseToken }: ParserHelpers,\n): LoopBindingNode {\n const bindingNode = parseBinding(tokenStream, parseState)\n\n const loopBinding: LoopBindingNode = {\n b: bindingNode,\n m: [],\n }\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (isP_ModifierToken(tkn)) {\n const modifier = tkn[1]\n switch (modifier) {\n case '&let':\n if (loopBinding.l) {\n throw new LitsError('Only one &let modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.l = parseBindings(tokenStream, parseState)\n loopBinding.m.push('&let')\n break\n case '&when':\n if (loopBinding.wn) {\n throw new LitsError('Only one &when modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.wn = parseToken(tokenStream, parseState)\n loopBinding.m.push('&when')\n break\n case '&while':\n if (loopBinding.we) {\n throw new LitsError('Only one &while modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.we = parseToken(tokenStream, parseState)\n loopBinding.m.push('&while')\n break\n case '&rest':\n throw new LitsError(`Illegal modifier: ${modifier}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n default:\n throw new LitsError(`Illegal modifier: ${modifier satisfies never}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n return loopBinding\n}\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n for (const binding of bindings) {\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n }\n}\n\nfunction parseLoopBindings(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): LoopBindingNode[] {\n assertLBracketToken(tokenStream.tokens[parseState.position++])\n\n const loopBindings: LoopBindingNode[] = []\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRBracketToken(tkn)) {\n loopBindings.push(parseLoopBinding(tokenStream, parseState, parsers))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n return loopBindings\n}\nfunction evaluateLoop(\n returnResult: boolean,\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n) {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const { l: loopBindings, p: params } = node as LoopNode\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const {\n b: binding,\n l: letBindings,\n wn: whenNode,\n we: whileNode,\n m: modifiers,\n } = asNonUndefined(loopBindings[bindingIndex], sourceCodeInfo)\n const coll = asColl(evaluateAstNode(binding.v, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = {\n value: asAny(seq[index], sourceCodeInfo),\n }\n for (const modifier of modifiers) {\n switch (modifier) {\n case '&let':\n addToContext(\n asNonUndefined(letBindings, sourceCodeInfo),\n context,\n newContextStack,\n evaluateAstNode,\n sourceCodeInfo,\n )\n break\n case '&when':\n if (!evaluateAstNode(asAstNode(whenNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n break\n case '&while':\n if (!evaluateAstNode(asAstNode(whileNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n break\n }\n }\n }\n if (!skip) {\n const value = evaluateAstNode(params[0]!, newContextStack)\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n return returnResult ? result : null\n}\n\nfunction analyze(\n node: LoopNode,\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const newContext: Context = {}\n const { l: loopBindings } = node\n loopBindings.forEach((loopBinding) => {\n const { b: binding, l: letBindings, wn: whenNode, we: whileNode } = loopBinding\n findUnresolvedIdentifiers([binding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[binding.n] = { value: true }\n if (letBindings) {\n letBindings.forEach((letBinding) => {\n findUnresolvedIdentifiers([letBinding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[letBinding.n] = { value: true }\n })\n }\n if (whenNode) {\n findUnresolvedIdentifiers([whenNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n findUnresolvedIdentifiers([whileNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n const loopBindings = parseLoopBindings(tokenStream, parseState, parsers)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: ForNode = {\n n: 'for',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateAstNode),\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n const loopBindings = parseLoopBindings(tokenStream, parseState, parsers)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DoSeqNode = {\n n: 'doseq',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateAstNode)\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface OrNode extends CommonSpecialExpressionNode<'||'> {}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('||'),\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = false\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { isSymbolNode } from '../../typeGuards/astNode'\nimport { assertAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface QqNode extends CommonSpecialExpressionNode<'??'> {}\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('??'),\n paramCount: { min: 1, max: 2 },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [firstNode, secondNode] = node.p\n\n if (isSymbolNode(firstNode)) {\n if (contextStack.lookUp(firstNode) === null)\n return secondNode ? evaluateAstNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, getTokenDebugData(node.token)?.sourceCodeInfo)\n const firstResult = evaluateAstNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateAstNode(secondNode, contextStack) : null)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport { RecurSignal } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface RecurNode extends CommonSpecialExpressionNode<'recur'> {}\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: RecurNode = {\n t: AstNodeType.SpecialExpression,\n n: 'recur',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n throw new RecurSignal(params)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { UserDefinedError } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface ThrowNode extends CommonSpecialExpressionNode<'throw'> {}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('throw'),\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const message = asString(evaluateAstNode(node.p[0]!, contextStack), getTokenDebugData(node.token)?.sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, getTokenDebugData(node.token)?.sourceCodeInfo)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertLParenToken, assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertSymbolNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport { getSourceCodeInfo } from '../../utils/debug/getSourceCodeInfo'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TryNode extends CommonSpecialExpressionNode<'try'> {\n e: SymbolNode | undefined\n ce: AstNode\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseToken }) => {\n const tryExpression = parseToken(tokenStream, parseState)\n\n assertLParenToken(tokenStream.tokens[parseState.position++])\n\n const catchNode = parseToken(tokenStream, parseState)\n assertSymbolNode(catchNode, getTokenDebugData(catchNode.token)?.sourceCodeInfo)\n if (catchNode.v !== 'catch') {\n throw new LitsError(\n `Expected 'catch', got '${catchNode.v}'.`,\n getSourceCodeInfo(catchNode, getTokenDebugData(catchNode.token)?.sourceCodeInfo),\n )\n }\n\n const error = parseToken(tokenStream, parseState)\n assertSymbolNode(error, getTokenDebugData(error.token)?.sourceCodeInfo)\n\n const catchExpression = parseToken(tokenStream, parseState)\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: TryNode = {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [tryExpression],\n ce: catchExpression,\n e: error,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n try {\n return evaluateAstNode(tryExpressions[0]!, contextStack)\n }\n catch (error) {\n const newContext: Context = errorNode\n ? {\n [errorNode.v]: { value: asAny(error, getTokenDebugData(node.token)?.sourceCodeInfo) },\n }\n : {}\n return evaluateAstNode(catchExpression, contextStack.create(newContext))\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n const tryResult = findUnresolvedIdentifiers(tryExpressions, contextStack, builtin)\n const newContext: Context = errorNode\n ? {\n [errorNode.v]: { value: true },\n }\n : {}\n const catchResult = findUnresolvedIdentifiers([catchExpression], contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import type { Builtin } from './interface'\nimport { normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { commentSpecialExpression } from './specialExpressions/comment'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { switchSpecialExpression } from './specialExpressions/switch'\nimport { declaredSpecialExpression } from './specialExpressions/declared'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { unlessSpecialExpression } from './specialExpressions/unless'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { trySpecialExpression } from './specialExpressions/try'\n\nconst specialExpressions = {\n '&&': andSpecialExpression,\n 'comment': commentSpecialExpression,\n 'cond': condSpecialExpression,\n 'switch': switchSpecialExpression,\n 'def': defSpecialExpression,\n 'defn': defnSpecialExpression,\n 'do': doSpecialExpression,\n 'doseq': doseqSpecialExpression,\n 'for': forSpecialExpression,\n 'fn': fnSpecialExpression,\n 'if': ifSpecialExpression,\n 'unless': unlessSpecialExpression,\n 'let': letSpecialExpression,\n 'loop': loopSpecialExpression,\n '||': orSpecialExpression,\n 'recur': recurSpecialExpression,\n 'throw': throwSpecialExpression,\n 'try': trySpecialExpression,\n 'defined?': declaredSpecialExpression,\n '??': qqSpecialExpression,\n} as const\n\nexport type SpecialExpressionName = keyof typeof specialExpressions\nexport type CommonSpecialExpressionName = keyof Pick<\n typeof specialExpressions,\n | '??'\n | '&&'\n | 'comment'\n | 'cond'\n | 'switch'\n | 'defined?'\n | 'do'\n | 'if'\n | 'unless'\n | '||'\n | 'throw'\n>\n\nexport type BuiltinSpecialExpressions = typeof specialExpressions\nexport type BuiltinSpecialExpression = typeof specialExpressions[SpecialExpressionName]\nexport type BuiltinCommonSpecialExpression = typeof specialExpressions[CommonSpecialExpressionName]\nexport type GenericCommonSpecialExpressionNode<T extends CommonSpecialExpressionName> = ReturnType<typeof specialExpressions[T]['polishParse']>\nexport type SpecialExpressionNode = ReturnType<typeof specialExpressions[SpecialExpressionName]['polishParse']>\n\nObject.keys(specialExpressions).forEach((key) => {\n /* v8 ignore next 2 */\n if (normalExpressions[key])\n throw new Error(`Expression ${key} is defined as both a normal expression and a special expression`)\n})\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressions)\n","import type { Any, Arr } from '../interface'\nimport type { AstNode, BuiltinFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateAstNode = (node: AstNode, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | BuiltinFunction | 'specialExpression' | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import type { BuiltinFunction, ExtraData, NativeJsFunction, SymbolNode } from '../parser/interface'\nimport type { SpecialExpressionName } from '../builtin'\nimport { builtin, normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { toAny } from '../utils'\nimport type { Any } from '../interface'\nimport { UndefinedSymbolError } from '../errors'\nimport type { LazyValue, LitsParams } from '../Lits/Lits'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { asNonUndefined } from '../typeGuards'\nimport { isBuiltinFunction } from '../typeGuards/litsFunction'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { isContextEntry } from './interface'\nimport type { Context, LookUpResult } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.globalContext = asNonUndefined(contexts[0])\n this.contexts = contexts\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context, extraData?: ExtraData): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStackImpl({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: extraData ? { ...this.lazyValues, ...extraData } : this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public exportValue(name: string, value: Any) {\n if (this.globalContext[name]) {\n throw new Error(`Cannot redefine exported value \"${name}\"`)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow special expression \"${name}\"`)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow builtin function \"${name}\"`)\n }\n this.addValue(name, value)\n this.globalContext[name] = { value }\n }\n\n public addValue(name: string, value: Any) {\n const currentContext = this.contexts[0]\n if (!currentContext) {\n throw new Error('No context to add value to')\n }\n if (currentContext[name]) {\n throw new Error(`Cannot redefine value \"${name}\"`)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow special expression \"${name}\"`)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow builtin function \"${name}\"`)\n }\n currentContext[name] = { value: toAny(value) }\n }\n\n public clone(): ContextStack {\n // eslint-disable-next-line ts/no-unsafe-argument\n return new ContextStackImpl(JSON.parse(JSON.stringify({\n contexts: this.contexts,\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })))\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: SymbolNode): LookUpResult {\n const value = node.v\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n if (builtin.normalExpressions[value]) {\n const builtinFunction: BuiltinFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Builtin,\n n: value,\n }\n return builtinFunction\n }\n\n if (builtin.specialExpressions[value as SpecialExpressionName])\n return 'specialExpression'\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateName(node: SymbolNode): Any {\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n else if (isBuiltinFunction(lookUpResult))\n return lookUpResult\n\n throw new UndefinedSymbolError(node.v, getTokenDebugData(node.token)?.sourceCodeInfo)\n }\n}\n\nexport function createContextStack(params: LitsParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n t: FunctionType.NativeJsFunction,\n f: jsFunction,\n n: name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack.create({})\n}\n","import { normalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n BuiltinFunction,\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunctionOverload,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n PartialFunction,\n SomePredFunction,\n UserDefinedFunction,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { FunctionType } from '../constants/constants'\nimport { asString } from '../typeGuards/string'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport type { Context, EvaluateAstNode, ExecuteFunction } from './interface'\nimport type { ContextStack } from './ContextStack'\n\ntype FunctionExecutors = Record<\n LitsFunctionType,\n (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateAstNode: EvaluateAstNode, executeFunction: ExecuteFunction },\n ) => Any\n>\n\nfunction findOverloadFunction(\n overloads: EvaluatedFunctionOverload[],\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n): EvaluatedFunctionOverload {\n const overloadFunction = overloads.find((overload) => {\n const arity = overload.a\n if (typeof arity === 'number')\n return arity === nbrOfParams\n else\n return arity.min <= nbrOfParams\n })\n if (!overloadFunction)\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n\n return overloadFunction\n}\n\nexport const functionExecutors: FunctionExecutors = {\n [FunctionType.NativeJsFunction]: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.f.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n [FunctionType.UserDefined]: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateAstNode }) => {\n for (;;) {\n const overloadFunction = findOverloadFunction(fn.o, params.length, sourceCodeInfo)\n const args = overloadFunction.as\n const nbrOfMandatoryArgs: number = args.mandatoryArguments.length\n\n const newContext: Context = { ...overloadFunction.f }\n\n const length = Math.max(params.length, args.mandatoryArguments.length)\n const rest: Arr = []\n for (let i = 0; i < length; i += 1) {\n if (i < nbrOfMandatoryArgs) {\n const param = toAny(params[i])\n const key = asString(args.mandatoryArguments[i], sourceCodeInfo)\n newContext[key] = { value: param }\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n if (args.restArgument)\n newContext[args.restArgument] = { value: rest }\n\n try {\n let result: Any = null\n const newContextStack = contextStack.create(newContext, fn.x)\n for (const node of overloadFunction.b)\n result = evaluateAstNode(node, newContextStack)\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n [FunctionType.Partial]: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.f, [...fn.p, ...params], contextStack, sourceCodeInfo)\n },\n [FunctionType.Comp]: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(toAny(fun), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n [FunctionType.Constantly]: (fn: ConstantlyFunction) => {\n return fn.v\n },\n [FunctionType.Juxt]: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.f.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n [FunctionType.Complement]: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.f, params, contextStack, sourceCodeInfo)\n },\n [FunctionType.EveryPred]: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n [FunctionType.SomePred]: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n [FunctionType.Fnil]: (fn: FNilFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fniledParams = params.map((param, index) => (param === null ? toAny(fn.p[index]) : param))\n return executeFunction(toAny(fn.f), fniledParams, contextStack, sourceCodeInfo)\n },\n [FunctionType.Builtin]: (fn: BuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(normalExpressions[fn.n], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n}\n","import type {\n Ast,\n AstNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ReservedSymbolNode,\n StringNode,\n} from '../parser/interface'\nimport type { SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport { polishReservedNamesRecord } from '../tokenizer/polish/polishReservedNames'\nimport { toAny } from '../utils'\nimport type { Any, Arr, Obj } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { isNormalExpressionNodeWithName } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { asNonUndefined } from '../typeGuards'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { assertString } from '../typeGuards/string'\nimport { removeCommenNodes } from '../removeCommentNodes'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n const safeAstNode = ast.hasDebugData ? JSON.parse(JSON.stringify(ast)) as Ast : ast\n if (safeAstNode.hasDebugData) {\n removeCommenNodes(safeAstNode)\n }\n for (const node of safeAstNode.b) {\n result = evaluateAstNode(node, contextStack)\n }\n\n return result\n}\n\nexport function evaluateAstNode(node: AstNode, contextStack: ContextStack): Any {\n switch (node.t) {\n case AstNodeType.Number:\n return evaluateNumber(node)\n case AstNodeType.String:\n return evaluateString(node)\n case AstNodeType.Symbol:\n return contextStack.evaluateName(node)\n case AstNodeType.ReservedSymbol:\n return evaluateReservedName(node)\n case AstNodeType.NormalExpression:\n return evaluateNormalExpression(node, contextStack)\n case AstNodeType.SpecialExpression:\n return evaluateSpecialExpression(node, contextStack)\n default:\n throw new LitsError(`${node.t}-node cannot be evaluated`, getTokenDebugData(node.token)?.sourceCodeInfo)\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node.v\n}\n\nfunction evaluateString(node: StringNode): string {\n return node.v\n}\n\nfunction evaluateReservedName(node: ReservedSymbolNode): Any {\n return asNonUndefined(polishReservedNamesRecord[node.v], getTokenDebugData(node.token)?.sourceCodeInfo).value\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n if (isNormalExpressionNodeWithName(node)) {\n const value = contextStack.getValue(node.n)\n if (value !== undefined)\n return executeFunction(asAny(value), params, contextStack, sourceCodeInfo)\n\n return evaluateBuiltinNormalExpression(node, params, contextStack)\n }\n else {\n const fn = params[0]!\n return executeFunction(fn, params.slice(1), contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.t](fn, params, sourceCodeInfo, contextStack, { evaluateAstNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn))\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n\n throw new NotAFunctionError(fn, sourceCodeInfo)\n}\n\nfunction evaluateBuiltinNormalExpression(\n node: NormalExpressionNodeWithName,\n params: Arr,\n contextStack: ContextStack,\n): Any {\n const normalExpression = builtin.normalExpressions[node.n]\n if (!normalExpression)\n throw new UndefinedSymbolError(node.n, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n return normalExpression.evaluate(params, getTokenDebugData(node.token)?.sourceCodeInfo, contextStack, { executeFunction })\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpression = asNonUndefined(builtin.specialExpressions[node.n], getTokenDebugData(node.token)?.sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpression.evaluate(node as any, contextStack, { evaluateAstNode, builtin })\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Builtin } from '../builtin/interface'\nimport { AstNodeType } from '../constants/constants'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode } from '../parser/interface'\nimport { asNonUndefined } from '../typeGuards'\nimport { evaluateAstNode } from '../evaluator'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport const findUnresolvedIdentifiers: FindUnresolvedIdentifiers = (ast, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(ast)\n ? ast\n : [{\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: ast.b,\n token: undefined,\n } satisfies DoNode]\n\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n\n for (const subNode of astNodes) {\n findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n .forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n\n return unresolvedIdentifiers\n}\n\nfunction findUnresolvedIdentifiersInAstNode(astNode: AstNode, contextStack: ContextStack, builtin: Builtin): UnresolvedIdentifiers {\n const emptySet = new Set<UnresolvedIdentifier>()\n switch (astNode.t) {\n case AstNodeType.Symbol: {\n const lookUpResult = contextStack.lookUp(astNode)\n if (lookUpResult === null)\n return new Set([{ symbol: astNode.v, token: astNode.token }])\n\n return emptySet\n }\n case AstNodeType.String:\n case AstNodeType.Number:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedSymbol:\n case AstNodeType.Comment:\n return emptySet\n case AstNodeType.NormalExpression: {\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n const { n: name, token: debug } = astNode\n if (typeof name === 'string') {\n const lookUpResult = contextStack.lookUp({ t: AstNodeType.Symbol, v: name, token: debug, p: [], n: undefined })\n if (lookUpResult === null)\n unresolvedIdentifiers.add({ symbol: name, token: astNode.token })\n }\n for (const subNode of astNode.p) {\n const innerUnresolvedIdentifiers = findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n innerUnresolvedIdentifiers.forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n return unresolvedIdentifiers\n }\n case AstNodeType.SpecialExpression: {\n const specialExpression = asNonUndefined(builtin.specialExpressions[astNode.n], getTokenDebugData(astNode.token)?.sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-argument\n const unresolvedIdentifiers = specialExpression.findUnresolvedIdentifiers(astNode as any, contextStack, {\n findUnresolvedIdentifiers,\n builtin,\n evaluateAstNode,\n })\n return unresolvedIdentifiers\n }\n }\n}\n","import type { LitsParams } from '../Lits/Lits'\nimport { builtin } from '../builtin'\nimport type { Builtin } from '../builtin/interface'\nimport { type ContextStack, createContextStack } from '../evaluator/ContextStack'\nimport type { Ast, AstNode } from '../parser/interface'\nimport type { Token } from '../tokenizer/tokens'\nimport { findUnresolvedIdentifiers } from './findUnresolvedIdentifiers'\n\nexport interface UnresolvedIdentifier {\n symbol: string\n token: Token | undefined\n}\n\n// A set of unresolved identifiers\nexport type UnresolvedIdentifiers = Set<UnresolvedIdentifier>\n\n// The result of analyzing an AST\nexport interface Analysis {\n unresolvedIdentifiers: UnresolvedIdentifiers\n}\n\n// A function that finds unresolved identifiers in an AST node or array of AST nodes\nexport type FindUnresolvedIdentifiers = (ast: Ast | AstNode[], contextStack: ContextStack, builtin: Builtin) => UnresolvedIdentifiers\n\nexport function analyze(ast: Ast, params: LitsParams): Analysis {\n return {\n unresolvedIdentifiers: findUnresolvedIdentifiers(ast, createContextStack(params), builtin),\n }\n}\n","import { LitsError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { asRegexpShorthandToken, asStringToken } from '../tokenizer/common/commonTokens'\nimport { isA_BasePrefixedNumberToken, isA_NumberToken, isA_OperatorToken, isA_ReservedSymbolToken, isA_SymbolToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { isP_NumberToken, isP_ReservedSymbolToken, isP_SymbolToken } from '../tokenizer/polish/polishTokens'\nimport { asToken } from '../tokenizer/tokens'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type {\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ParseState,\n ReservedSymbolNode,\n StringNode,\n SymbolNode,\n} from './interface'\n\nexport function parseSymbol(tokenStream: TokenStream, parseState: ParseState): SymbolNode {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n if (!isA_SymbolToken(tkn) && !isP_SymbolToken(tkn)) {\n throw new LitsError(`Expected symbol token, got ${tkn[0]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n if (tkn[1][0] !== '\\'') {\n return {\n t: AstNodeType.Symbol,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else {\n const value = tkn[1].substring(1, tkn[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\')|\\\\(.)/g,\n (\n _,\n backslash: string,\n singleQuote: string,\n normalChar: string,\n ) => {\n if (backslash) {\n return '\\\\'\n }\n if (singleQuote) {\n return '\\''\n }\n return `\\\\${normalChar}`\n },\n )\n return {\n t: AstNodeType.Symbol,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n}\n\nexport function parseReservedSymbol(tokenStream: TokenStream, parseState: ParseState): ReservedSymbolNode {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n\n if (!isA_ReservedSymbolToken(tkn) && !isP_ReservedSymbolToken(tkn)) {\n throw new LitsError(`Expected symbol token, got ${tkn[0]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n return {\n t: AstNodeType.ReservedSymbol,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseNumber(tokenStream: TokenStream, parseState: ParseState): NumberNode {\n const tkn = tokenStream.tokens[parseState.position++]\n if (isA_NumberToken(tkn)) {\n let numberString = tkn[1]\n const periodToken = tokenStream.tokens[parseState.position]\n const decimalToken = tokenStream.tokens[parseState.position + 1]\n if (isA_OperatorToken(periodToken, '.') && isA_NumberToken(decimalToken)) {\n numberString += `.${decimalToken[1]}`\n parseState.position += 2\n }\n return {\n t: AstNodeType.Number,\n v: Number(numberString),\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n\n if (!isP_NumberToken(tkn) && !isA_BasePrefixedNumberToken(tkn)) {\n throw new LitsError(`Expected number token, got ${tkn}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n\n const value = tkn[1]\n const negative = value[0] === '-'\n const numberString = negative ? value.substring(1) : value\n return {\n t: AstNodeType.Number,\n v: negative ? -Number(numberString) : Number(numberString),\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseString(tokenStream: TokenStream, parseState: ParseState): StringNode {\n const tkn = asStringToken(tokenStream.tokens[parseState.position++])\n const value = tkn[1].substring(1, tkn[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\\")|(\\\\n)|(\\\\t)|(\\\\r)|(\\\\b)|(\\\\f)|\\\\(.)/g,\n (\n _,\n backslash: string,\n doubleQuote: string,\n newline: string,\n tab: string,\n carriageReturn: string,\n backspace: string,\n formFeed: string,\n normalChar: string,\n ) => {\n // If it's a double escape (\\\\x), return \\x\n if (backslash) {\n return '\\\\'\n }\n // If it's a special character (\\n, \\t, \\r, \\b, \\f), return the special character\n else if (newline) {\n return '\\n'\n }\n else if (tab) {\n return '\\t'\n }\n else if (carriageReturn) {\n return '\\r'\n }\n else if (backspace) {\n return '\\b'\n }\n else if (formFeed) {\n return '\\f'\n }\n else if (doubleQuote) {\n return '\"'\n }\n return normalChar\n },\n )\n\n return {\n t: AstNodeType.String,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseRegexpShorthand(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const tkn = asRegexpShorthandToken(tokenStream.tokens[parseState.position++])\n\n const endStringPosition = tkn[1].lastIndexOf('\"')\n const regexpString = tkn[1].substring(2, endStringPosition)\n const optionsString = tkn[1].substring(endStringPosition + 1)\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: regexpString,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n\n const optionsNode: StringNode = {\n t: AstNodeType.String,\n v: optionsString,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'regexp',\n p: [stringNode, optionsNode],\n token: getTokenDebugData(tkn) && tkn,\n }\n\n return node\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin, specialExpressionKeys } from '../builtin'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DefNode } from '../builtin/specialExpressions/def'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { IfNode } from '../builtin/specialExpressions/if'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { UnlessNode } from '../builtin/specialExpressions/unless'\nimport type { Arity, FunctionArguments } from '../builtin/utils'\nimport { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { A_OperatorToken, A_ReservedSymbolToken, A_SymbolToken, AlgebraicTokenType, SymbolicBinaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asA_SymbolToken, assertA_OperatorToken, assertA_ReservedSymbolToken, assertA_SymbolToken, isA_BinaryOperatorToken, isA_OperatorToken, isA_ReservedSymbolToken, isA_SymbolToken, isFunctionOperator, isSymbolicUnaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asLBraceToken, asLBracketToken, assertLParenToken, assertRBraceToken, assertRBracketToken, assertRParenToken, isLBraceToken, isLBracketToken, isLParenToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { Token } from '../tokenizer/tokens'\nimport { getTokenDebugData, hasTokenDebugData } from '../tokenizer/utils'\nimport { assertNumberOfParams } from '../typeGuards'\nimport { asSymbolNode } from '../typeGuards/astNode'\nimport { parseNumber, parseRegexpShorthand, parseReservedSymbol, parseString, parseSymbol } from './commonTokenParsers'\nimport type { AstNode, BindingNode, NormalExpressionNodeWithName, ParseState, StringNode, SymbolNode } from './interface'\n\nconst exponentiationPrecedence = 10\nconst binaryFunctionalOperatorPrecedence = 1\nconst placeholderRegexp = /^\\$([1-9]\\d?)?$/\n\nfunction getPrecedence(operatorSign: SymbolicBinaryOperator): number {\n switch (operatorSign) {\n case '**': // exponentiation\n return exponentiationPrecedence\n\n case '*': // multiplication\n case '/': // division\n case '%': // remainder\n return 9\n\n case '+': // addition\n case '-': // subtraction\n return 8\n\n case '<<': // left shift\n case '>>': // signed right shift\n case '>>>': // unsigned right shift\n return 7\n\n case '++': // string concatenation\n return 6\n\n case '<': // less than\n case '<=': // less than or equal\n case '>': // greater than\n case '>=': // greater than or equal\n return 5\n\n case '==': // equal\n case '!=': // not equal\n return 4\n\n case '&': // bitwise AND\n case '^': // bitwise XOR\n case '|': // bitwise OR\n return 3\n\n case '&&': // logical AND\n case '||': // logical OR\n case '??': // nullish coalescing\n return 2\n\n // leave room for binaryFunctionalOperatorPrecedence = 1\n default:\n throw new Error(`Unknown binary operator: ${operatorSign satisfies never}`)\n }\n}\n\nfunction createNamedNormalExpressionNode(name: string, params: AstNode[], token: Token | undefined): NormalExpressionNodeWithName {\n const node: NormalExpressionNodeWithName = {\n t: AstNodeType.NormalExpression,\n n: name,\n p: params,\n token: getTokenDebugData(token) && token,\n }\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression) {\n assertNumberOfParams(builtinExpression.paramCount, node)\n }\n\n return node\n}\n\nfunction fromSymbolToStringNode(symbol: SymbolNode): StringNode {\n return {\n t: AstNodeType.String,\n v: symbol.v,\n token: getTokenDebugData(symbol.token) && symbol.token,\n p: [],\n n: undefined,\n }\n}\n\nfunction createAccessorNode(left: AstNode, right: AstNode, token: Token | undefined): AstNode {\n // Unnamed normal expression\n return {\n t: AstNodeType.NormalExpression,\n p: [left, right],\n n: undefined,\n token: getTokenDebugData(token) && token,\n }\n}\n\nfunction fromUnaryAlgebraicToAstNode(operator: A_OperatorToken, operand: AstNode): AstNode {\n const token: Token | undefined = hasTokenDebugData(operator) ? operand.token : undefined\n\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '+':\n case '-':\n case '!':\n case '~':\n return createNamedNormalExpressionNode(operatorName, [operand], token)\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown operator: ${operatorName}`)\n }\n}\n\nfunction fromBinaryOperatorToAstNode(operator: A_OperatorToken, left: AstNode, right: AstNode, token: Token | undefined): AstNode {\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '.':\n return createAccessorNode(left, fromSymbolToStringNode(asSymbolNode(right, getTokenDebugData(token)?.sourceCodeInfo)), token)\n case '**': // exponentiation\n case '*':\n case '/':\n case '%':\n case '+':\n case '-':\n case '<<':\n case '>>':\n case '>>>':\n case '++':\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n case '!=':\n case '&':\n case '^':\n case '|':\n return createNamedNormalExpressionNode(operatorName, [left, right], token)\n case '&&':\n case '||':\n case '??':\n return {\n t: AstNodeType.SpecialExpression,\n n: operatorName,\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n /* v8 ignore next 8 */\n case ';':\n case '!':\n case '~':\n case '=':\n case ',':\n case '=>':\n case '...':\n throw new LitsError(`Unknown binary operator: ${operatorName}`, getTokenDebugData(token)?.sourceCodeInfo)\n\n default:\n throw new LitsError(`Unknown binary operator: ${operatorName satisfies never}`, getTokenDebugData(token)?.sourceCodeInfo)\n }\n}\n\nexport class AlgebraicParser {\n constructor(\n private readonly tokenStream: TokenStream,\n private parseState: ParseState,\n ) {}\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(count: number): Token | undefined {\n return this.tokenStream.tokens[this.parseState.position + count]\n }\n\n private advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): AstNode[] {\n const nodes: AstNode[] = []\n while (!this.isAtEnd()) {\n nodes.push(this.parseExpression(0, true))\n if (!isA_OperatorToken(this.peek(), ';')) {\n break\n }\n this.advance()\n }\n return nodes\n }\n\n private parseExpression(precedence = 0, moduleScope = false): AstNode {\n const firstToken = this.peek()\n\n let left: AstNode\n\n if (isA_SymbolToken(firstToken)) {\n switch (firstToken[1]) {\n case 'let':\n return this.parseLet(firstToken)\n case 'if':\n case 'unless':\n left = this.parseIfOrUnless(firstToken)\n break\n case 'cond':\n left = this.parseCond(firstToken)\n break\n case 'switch':\n left = this.parseSwitch(firstToken)\n break\n case 'for':\n case 'doseq':\n left = this.parseForOrDoseq(firstToken)\n break\n case 'do':\n left = this.parseDo(firstToken)\n break\n case 'loop':\n left = this.parseLoop(firstToken)\n break\n case 'try':\n left = this.parseTry(firstToken)\n break\n }\n }\n else if (isA_ReservedSymbolToken(firstToken, 'function')) {\n return this.parseFunction(firstToken)\n }\n else if (isA_ReservedSymbolToken(firstToken, 'export')) {\n if (!moduleScope) {\n throw new LitsError('export is only allowed in module scope', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n return this.parseExport(firstToken)\n }\n\n left ||= this.parseOperand()\n let operator = this.peek()\n\n while (!this.isAtExpressionEnd()) {\n if (isA_BinaryOperatorToken(operator)) {\n const name = operator[1]\n const newPrecedece = getPrecedence(name)\n if (\n newPrecedece <= precedence\n // ** (exponentiation) is right associative\n && !(newPrecedece === exponentiationPrecedence && precedence === exponentiationPrecedence)) {\n break\n }\n this.advance()\n const right = this.parseExpression(newPrecedece)\n const token: Token | undefined = hasTokenDebugData(operator) ? operator : undefined\n left = fromBinaryOperatorToAstNode(operator, left, right, token)\n }\n else if (isA_SymbolToken(operator)) {\n if (!isFunctionOperator(operator[1])) {\n break\n }\n const newPrecedece = binaryFunctionalOperatorPrecedence\n if (newPrecedece <= precedence) {\n break\n }\n this.advance()\n const right = this.parseExpression(newPrecedece)\n const token: Token | undefined = hasTokenDebugData(operator) ? operator : undefined\n\n left = createNamedNormalExpressionNode(operator[1], [left, right], token)\n }\n else {\n break\n }\n\n operator = this.peek()\n }\n\n if (!left) {\n throw new LitsError('Expected operand', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n return left\n }\n\n private parseOperand(): AstNode {\n let operand = this.parseOperandPart()\n let token = this.peek()\n while (isA_OperatorToken(token, '.') || isLBracketToken(token) || isLParenToken(token)) {\n if (token[1] === '.') {\n this.advance()\n const symbolToken = this.peek()\n if (!isA_SymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: symbolToken[1],\n token: getTokenDebugData(symbolToken) && symbolToken,\n p: [],\n n: undefined,\n }\n operand = createAccessorNode(operand, stringNode, token)\n this.advance()\n token = this.peek()\n }\n else if (isLBracketToken(token)) {\n this.advance()\n const expression = this.parseExpression()\n if (!isRBracketToken(this.peek())) {\n throw new LitsError('Expected closing bracket', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n operand = createAccessorNode(operand, expression, token)\n this.advance()\n token = this.peek()\n }\n else if (isLParenToken(token)) {\n operand = this.parseFunctionCall(operand)\n token = this.peek()\n }\n }\n return operand\n }\n\n private parseOperandPart(): AstNode {\n const token = this.peek()\n\n // Parentheses\n if (isLParenToken(token)) {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n this.advance()\n const expression = this.parseExpression()\n if (!isRParenToken(this.peek())) {\n throw new Error('Expected closing parenthesis')\n }\n this.advance()\n return expression\n }\n\n // Unary operators\n else if (isA_OperatorToken(token)) {\n const operatorName = token[1]\n if (isSymbolicUnaryOperator(operatorName)) {\n this.advance()\n const operand = this.parseOperand()\n if (operand === null) {\n throw new LitsError('Expected operand', getTokenDebugData(token)?.sourceCodeInfo)\n }\n return fromUnaryAlgebraicToAstNode(token, operand)\n }\n\n if (operatorName === '=>') {\n return this.parseShorthandLamdaFunction()\n }\n else {\n throw new Error(`Unknown unary operator: ${operatorName}`)\n }\n }\n\n // Object litteral, e.g. {a=1, b=2}\n if (isLBraceToken(token)) {\n return this.parseObject()\n }\n\n // Array litteral, e.g. [1, 2]\n if (isLBracketToken(token)) {\n return this.parseArray()\n }\n\n const tokenType = token[0] as Exclude<\n AlgebraicTokenType,\n | 'A_Operator' // Handled above\n | 'LParen' // Handled above\n | 'LBrace' // Handled above\n | 'LBracket' // Handled above\n\n | 'RParen' // Illegal token\n | 'RBrace' // Illegal token\n | 'RBracket' // Illegal token\n\n | 'A_MultiLineComment' // Should have been removed\n | 'A_SingleLineComment' // Should have been removed\n | 'A_Whitespace' // Should have been removed\n >\n switch (tokenType) {\n case 'A_Number':\n case 'A_BasePrefixedNumber':\n return parseNumber(this.tokenStream, this.parseState)\n case 'String':\n return parseString(this.tokenStream, this.parseState)\n case 'A_Symbol': {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n return parseSymbol(this.tokenStream, this.parseState)\n }\n case 'A_ReservedSymbol':\n return parseReservedSymbol(this.tokenStream, this.parseState)\n case 'RegexpShorthand':\n return parseRegexpShorthand(this.tokenStream, this.parseState)\n\n default:\n throw new LitsError(`Unknown token type: ${tokenType}`, getTokenDebugData(token)?.sourceCodeInfo)\n }\n }\n\n private parseObject(): AstNode {\n const firstToken = asLBraceToken(this.peek())\n this.advance()\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n const key = this.parseOperand()\n if (key === null) {\n throw new LitsError('Expected key', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (key.t !== AstNodeType.Symbol && key.t !== AstNodeType.String) {\n throw new LitsError('Expected key to be a symbol or a string', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n params.push({\n t: AstNodeType.String,\n v: key.v,\n token: getTokenDebugData(key.token) && key.token,\n p: [],\n n: undefined,\n })\n\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRBraceToken(nextToken)) {\n throw new LitsError('Expected comma or closing brace', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBraceToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n\n private parseArray(): AstNode {\n const firstToken = asLBracketToken(this.peek())\n this.advance()\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRBracketToken(this.peek())) {\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRBracketToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBracketToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n\n private parseFunctionCall(symbol: AstNode): AstNode {\n const isNamedFunction = symbol.t === AstNodeType.Symbol\n this.advance()\n\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRParenToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n if (isNamedFunction) {\n if (specialExpressionKeys.includes(symbol.v)) {\n const name: SpecialExpressionName = symbol.v as Exclude<SpecialExpressionName, 'for' | 'if' | 'unless' | 'cond' | 'switch' | 'let' | 'do' | 'loop' | 'try' | 'doseq'>\n switch (name) {\n case '??':\n case '&&':\n case 'comment':\n case 'defined?':\n case '||':\n case 'recur':\n case 'throw': {\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: name,\n p: params,\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n assertNumberOfParams(builtin.specialExpressions[node.n].paramCount, node)\n return node\n }\n case 'fn':\n case 'def':\n case 'defn':\n throw new Error(`Special expression ${name} is not available in algebraic notation`)\n default:\n throw new Error(`Unknown special expression: ${name satisfies never}`)\n }\n }\n return createNamedNormalExpressionNode(symbol.v, params, symbol.token)\n }\n else {\n return {\n t: AstNodeType.NormalExpression,\n n: undefined,\n p: [symbol, ...params],\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n }\n }\n\n parseLambdaFunction(): AstNode | null {\n const firstToken = this.peek()\n\n if (isLParenToken(firstToken)\n && isA_SymbolToken(this.peekAhead(1))\n && isA_OperatorToken(this.peekAhead(2), '=>')) {\n return null\n }\n\n try {\n const { functionArguments, arity } = this.parseFunctionArguments()\n\n if (!isA_OperatorToken(this.peek(), '=>')) {\n return null\n }\n this.advance()\n\n const body = this.parseExpression()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [{\n as: functionArguments,\n b: [body],\n a: arity,\n }],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n catch {\n return null\n }\n }\n\n parseFunctionArguments(): { functionArguments: FunctionArguments, arity: Arity } {\n const firstToken = this.peek()\n if (isA_SymbolToken(firstToken)) {\n this.advance()\n return {\n functionArguments: {\n m: [firstToken[1]],\n b: [],\n r: undefined,\n } satisfies FunctionArguments,\n arity: 1,\n }\n }\n\n this.advance()\n let rest = false\n const args: string[] = []\n let restArg: string | undefined\n while (!this.isAtEnd() && !isRParenToken(this.peek()) && !isA_SymbolToken(this.peek(), 'let')) {\n if (isA_OperatorToken(this.peek(), '...')) {\n if (rest) {\n throw new LitsError('Multiple spread operators in lambda function', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n rest = true\n }\n const symbolToken = this.peek()\n if (!isA_SymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (rest) {\n restArg = symbolToken[1]\n }\n else {\n args.push(symbolToken[1])\n }\n this.advance()\n\n if (!isA_OperatorToken(this.peek(), ',') && !isRParenToken(this.peek()) && !isA_SymbolToken(this.peek(), 'let')) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n\n const arity: Arity = restArg !== undefined ? { min: args.length } : args.length\n\n // let bindings, to be able to pass on values in the context down to the body\n // This is needed since lits is dynamically scoped\n // E.g.\n // x => y => x + y // would not work, x is not available in the second lambda\n // x => (y, let x = x) => x + y // would work, x is available in the second lambda\n const bindingNodess: BindingNode[] = []\n let token = this.peek()\n while (isA_SymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n bindingNodess.push(letNode.bs[0]!)\n token = this.peek()\n }\n\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n const functionArguments: FunctionArguments = {\n m: args,\n r: restArg,\n b: bindingNodess,\n }\n\n this.advance()\n\n return {\n functionArguments,\n arity,\n }\n }\n\n private parseShorthandLamdaFunction(): FnNode {\n const firstToken = this.peek()\n this.advance()\n const startPos = this.parseState.position\n const exprNode = this.parseExpression()\n const endPos = this.parseState.position - 1\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1\n for (let pos = startPos; pos <= endPos; pos += 1) {\n const tkn = this.tokenStream.tokens[pos]!\n if (isA_SymbolToken(tkn)) {\n const match = placeholderRegexp.exec(tkn[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use $ or $1', getTokenDebugData(firstToken)?.sourceCodeInfo)\n\n percent1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n }\n }\n\n const mandatoryArguments: string[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && percent1 === 'NAKED')\n mandatoryArguments.push('$')\n else\n mandatoryArguments.push(`$${i}`)\n }\n\n const args: FunctionArguments = {\n b: [],\n m: mandatoryArguments,\n }\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [\n {\n as: args,\n b: [exprNode],\n a: args.m.length,\n },\n ],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n }\n\n private parseLet(token: A_SymbolToken, optionalSemicolon = false): LetNode {\n this.advance()\n\n const letSymbol = parseSymbol(this.tokenStream, this.parseState)\n\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n\n const value = this.parseExpression()\n\n if (!optionalSemicolon) {\n assertA_OperatorToken(this.peek(), ';')\n }\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [],\n bs: [{\n t: AstNodeType.Binding,\n n: letSymbol.v,\n v: value,\n p: [],\n token: getTokenDebugData(token) && token,\n }],\n token: getTokenDebugData(letSymbol.token) && letSymbol.token,\n }\n }\n\n private parseDo(token: A_SymbolToken): DoNode {\n this.advance()\n const expressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: expressions,\n token: getTokenDebugData(token) && token,\n }\n }\n\n private parseLoop(token: A_SymbolToken): LoopNode {\n this.advance()\n\n assertLParenToken(this.peek())\n this.advance()\n\n const bindingNodes: BindingNode[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n const value = this.parseExpression()\n bindingNodes.push({\n t: AstNodeType.Binding,\n n: symbol.v,\n v: value,\n p: [],\n token: getTokenDebugData(symbol.token) && symbol.token,\n } satisfies BindingNode)\n\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n if (bindingNodes.length === 0) {\n throw new LitsError('Expected binding', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n assertRParenToken(this.peek())\n this.advance()\n\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n params.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindingNodes,\n token: getTokenDebugData(token) && token,\n }\n }\n\n private parseTry(token: A_SymbolToken): TryNode {\n this.advance()\n const tryExpressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_SymbolToken(this.peek(), 'catch')) {\n tryExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n const tryExpression = tryExpressions.length === 1\n ? tryExpressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: tryExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n\n assertA_SymbolToken(this.peek(), 'catch')\n this.advance()\n\n let errorSymbol: SymbolNode | undefined\n if (isLParenToken(this.peek())) {\n this.advance()\n errorSymbol = parseSymbol(this.tokenStream, this.parseState)\n assertRParenToken(this.peek())\n this.advance()\n }\n\n const catchExpressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n catchExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const catchExpression = catchExpressions.length === 1\n ? catchExpressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: catchExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [tryExpression],\n ce: catchExpression,\n e: errorSymbol,\n token: getTokenDebugData(token) && token,\n }\n }\n\n private parseForOrDoseq(token: A_SymbolToken): ForNode | DoSeqNode {\n const isDoseq = token[1] === 'doseq'\n this.advance()\n assertLParenToken(this.peek())\n this.advance()\n const forLoopBindings: LoopBindingNode[] = [\n this.parseForLoopBinding(),\n ]\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n forLoopBindings.push(this.parseForLoopBinding())\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n assertRParenToken(this.peek())\n this.advance()\n\n const expression = this.parseExpression()\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: isDoseq ? 'doseq' : 'for',\n p: [expression],\n token: getTokenDebugData(token) && token,\n l: forLoopBindings,\n }\n }\n\n private parseForLoopBinding(): LoopBindingNode {\n const bindingNode = this.parseBinding()\n\n if (isRParenToken(this.peek()) || isA_OperatorToken(this.peek(), ',')) {\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n return {\n b: bindingNode,\n m: [],\n }\n }\n\n const modifiers: Array<'&let' | '&when' | '&while'> = []\n let token = this.peek()\n\n if (!isA_SymbolToken(token, 'let')\n && !isA_ReservedSymbolToken(token, 'when')\n && !isA_ReservedSymbolToken(token, 'while')\n ) {\n throw new LitsError('Expected symbol let, when or while', getTokenDebugData(token)?.sourceCodeInfo)\n }\n\n let letBindings: BindingNode[] | undefined\n if (token[1] === 'let') {\n modifiers.push('&let')\n letBindings = []\n while (isA_SymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n letBindings.push(letNode.bs[0]!)\n token = this.peek()\n }\n }\n\n token = this.peek()\n let whenNode: AstNode | undefined\n let whileNode: AstNode | undefined\n while (\n isA_ReservedSymbolToken(token, 'when')\n || isA_ReservedSymbolToken(token, 'while')\n ) {\n this.advance()\n\n if (token[1] === 'when') {\n modifiers.push('&when')\n whenNode = this.parseExpression()\n }\n else {\n modifiers.push('&while')\n whileNode = this.parseExpression()\n }\n token = this.peek()\n }\n\n if (isA_OperatorToken(token, ',')) {\n this.advance()\n }\n\n return {\n b: bindingNode,\n m: modifiers,\n l: letBindings,\n wn: whenNode,\n we: whileNode,\n }\n }\n\n private parseBinding(): BindingNode {\n const firstToken = asA_SymbolToken(this.peek())\n const name = firstToken[1]\n this.advance()\n\n const ofSymbol = asA_SymbolToken(this.peek())\n if (ofSymbol[1] !== 'of') {\n throw new LitsError('Expected \"of\"', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n\n const value = this.parseExpression()\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name,\n v: value,\n p: [],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n }\n\n parseIfOrUnless(token: A_SymbolToken): IfNode | UnlessNode {\n const isUnless = token[1] === 'unless'\n this.advance()\n const condition = this.parseExpression()\n assertA_ReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const thenExpressions: AstNode[] = []\n while (\n !this.isAtEnd()\n && !isA_ReservedSymbolToken(this.peek(), 'else')\n && !isA_ReservedSymbolToken(this.peek(), 'end')\n ) {\n thenExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n const thenExpression = thenExpressions.length === 1\n ? thenExpressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: thenExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n\n let elseExpression: AstNode | undefined\n if (isA_ReservedSymbolToken(this.peek(), 'else')) {\n this.advance()\n const elseExpressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n elseExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n elseExpression = elseExpressions.length === 1\n ? elseExpressions[0]\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: elseExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const params = [condition, thenExpression]\n if (elseExpression) {\n params.push(elseExpression)\n }\n\n return {\n t: AstNodeType.SpecialExpression,\n n: isUnless ? 'unless' : 'if',\n p: params,\n token: getTokenDebugData(token) && token,\n }\n }\n\n parseCond(token: A_SymbolToken): CondNode {\n this.advance()\n const params: AstNode[] = []\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n assertA_ReservedSymbolToken(this.peek(), 'case')\n this.advance()\n params.push(this.parseExpression())\n assertA_ReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: AstNode[] = []\n while (\n !this.isAtEnd()\n && !isA_ReservedSymbolToken(this.peek(), 'case')\n && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n params.push(\n expressions.length === 1\n ? expressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: expressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode,\n )\n if (isA_ReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertA_ReservedSymbolToken(this.peek(), 'case')\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'cond',\n p: params,\n token: getTokenDebugData(token) && token,\n }\n }\n\n parseSwitch(token: A_SymbolToken): SwitchNode {\n this.advance()\n const params: AstNode[] = [this.parseExpression()]\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n assertA_ReservedSymbolToken(this.peek(), 'case')\n this.advance()\n params.push(this.parseExpression())\n assertA_ReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: AstNode[] = []\n while (\n !this.isAtEnd()\n && !isA_ReservedSymbolToken(this.peek(), 'case')\n && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n params.push(\n expressions.length === 1\n ? expressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: expressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode,\n )\n if (isA_ReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertA_ReservedSymbolToken(this.peek(), 'case')\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'switch',\n p: params,\n token: getTokenDebugData(token) && token,\n }\n }\n\n parseFunction(token: A_ReservedSymbolToken<'function'>): LetNode {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n const { functionArguments, arity } = this.parseFunctionArguments()\n\n const body: AstNode[] = []\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n assertA_OperatorToken(this.peek(), ';')\n\n const fnNode: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [{\n as: functionArguments,\n b: body,\n a: arity,\n }],\n token: getTokenDebugData(token) && token,\n }\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [],\n bs: [{\n t: AstNodeType.Binding,\n n: symbol.v,\n v: fnNode,\n p: [],\n token: getTokenDebugData(symbol.token) && symbol.token,\n }],\n token: getTokenDebugData(token) && token,\n } satisfies LetNode\n }\n\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private isAtExpressionEnd(): boolean {\n if (this.isAtEnd()) {\n return true\n }\n const token = this.peek()\n if (isA_OperatorToken(token)) {\n return [';', ','].includes(token[1])\n }\n if (isA_SymbolToken(token)) {\n return ['catch'].includes(token[1])\n }\n if (isA_ReservedSymbolToken(token)) {\n return ['else', 'when', 'while', 'then', 'end', 'case'].includes(token[1])\n }\n return false\n }\n\n private parseExport(token: A_ReservedSymbolToken<'export'>): DefNode | DefnNode {\n this.advance()\n if (isA_SymbolToken(this.peek(), 'let')) {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n\n const value = this.parseExpression()\n\n assertA_OperatorToken(this.peek(), ';')\n return {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: [symbol, value],\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n }\n else if (isA_ReservedSymbolToken(this.peek(), 'function')) {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n\n const { functionArguments, arity } = this.parseFunctionArguments()\n\n const body: AstNode[] = []\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: symbol,\n p: [],\n o: [{\n as: functionArguments,\n b: body,\n a: arity,\n }],\n token: getTokenDebugData(token) && token,\n }\n }\n else {\n throw new LitsError('Expected let or function', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n }\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport type { FnNode } from '../builtin/specialExpressions/functions'\nimport type { FunctionArguments } from '../builtin/utils'\nimport { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { asLParenToken, assertLBracketToken, assertRParenToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { PolishTokenType } from '../tokenizer/polish/polishTokens'\nimport { asP_CommentToken, asP_StringShorthandToken, asP_SymbolToken, isP_FnShorthandToken, isP_ModifierToken, isP_SymbolToken } from '../tokenizer/polish/polishTokens'\nimport { asToken } from '../tokenizer/tokens'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { asNonUndefined, assertNumberOfParams } from '../typeGuards'\nimport { assertSymbolNode, isExpressionNode } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { parseNumber, parseRegexpShorthand, parseReservedSymbol, parseString, parseSymbol } from './commonTokenParsers'\nimport type {\n AstNode,\n BindingNode,\n CommentNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n ParseArgument,\n ParseExpression,\n ParseState,\n StringNode,\n} from './interface'\n\nfunction parseStringShorthand(tokenStream: TokenStream, parseState: ParseState): StringNode {\n const tkn = asP_StringShorthandToken(tokenStream.tokens[parseState.position++])\n const value = tkn[1].substring(1)\n\n return {\n t: AstNodeType.String,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nfunction parseComment(tokenStream: TokenStream, parseState: ParseState): CommentNode {\n const tkn = asP_CommentToken(tokenStream.tokens[parseState.position++])\n return {\n t: AstNodeType.Comment,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nfunction parseTokensUntilClosingBracket(tokenStream: TokenStream, parseState: ParseState): AstNode[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const astNodes: AstNode[] = []\n while (!isRParenToken(tkn) && !isRBracketToken(tkn)) {\n astNodes.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n return astNodes\n}\n\nconst parseExpression: ParseExpression = (tokenStream, parseState) => {\n const tkn = asToken(tokenStream.tokens[parseState.position + 1])\n if (isP_SymbolToken(tkn) && builtin.specialExpressions[tkn[1] as SpecialExpressionName])\n return parseSpecialExpression(tokenStream, parseState)\n\n return parseNormalExpression(tokenStream, parseState)\n}\n\nfunction parseArrayLitteral(tokenStream: TokenStream, parseState: ParseState): AstNode {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const params: AstNode[] = []\n while (!isRBracketToken(tkn)) {\n params.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n\n parseState.position += 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n}\n\nfunction parseObjectLitteral(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const params: AstNode[] = []\n while (!isRBraceToken(tkn)) {\n params.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n\n parseState.position += 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ even: true }, node)\n\n return node\n}\n\nconst placeholderRegexp = /^%([1-9]\\d?)?$/\nfunction parseFnShorthand(tokenStream: TokenStream, parseState: ParseState): FnNode {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n const startPos = parseState.position + 1\n const exprNode = parseExpression(tokenStream, parseState)\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1\n for (let pos = startPos; pos < parseState.position - 1; pos += 1) {\n const tkn = asToken(tokenStream.tokens[pos])\n if (isP_SymbolToken(tkn)) {\n const match = placeholderRegexp.exec(tkn[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use % or %1', getTokenDebugData(firstToken)?.sourceCodeInfo)\n\n percent1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n }\n if (isP_FnShorthandToken(tkn))\n throw new LitsError('Nested shortcut functions are not allowed', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n\n const mandatoryArguments: string[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && percent1 === 'NAKED')\n mandatoryArguments.push('%')\n else\n mandatoryArguments.push(`%${i}`)\n }\n\n const args: FunctionArguments = {\n b: [],\n m: mandatoryArguments,\n }\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [\n {\n as: args,\n b: [exprNode],\n a: args.m.length,\n },\n ],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n}\n\nconst parseArgument: ParseArgument = (tokenStream, parseState) => {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n\n if (isP_SymbolToken(tkn)) {\n return {\n t: AstNodeType.Argument,\n n: tkn[1],\n p: [],\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else if (isP_ModifierToken(tkn)) {\n return {\n t: AstNodeType.Modifier,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else {\n throw new LitsError(`Expected name or modifier token, got ${valueToString(tkn)}.`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n}\n\nfunction parseBindings(tokenStream: TokenStream, parseState: ParseState): BindingNode[] {\n assertLBracketToken(tokenStream.tokens[parseState.position++])\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const bindings: BindingNode[] = []\n while (!isRBracketToken(tkn)) {\n bindings.push(parseBinding(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n\n return bindings\n}\n\nfunction parseBinding(tokenStream: TokenStream, parseState: ParseState): BindingNode {\n const firstToken = asP_SymbolToken(tokenStream.tokens[parseState.position])\n const name = parseSymbol(tokenStream, parseState)\n\n const value = parseState.parseToken(tokenStream, parseState)\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name.v,\n v: value,\n p: [],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n}\n\nfunction parseNormalExpression(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNode {\n const startBracketToken = tokenStream.hasDebugData ? asLParenToken(tokenStream.tokens[parseState.position]) : undefined\n parseState.position += 1\n const fnNode = parseState.parseToken(tokenStream, parseState)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n if (isExpressionNode(fnNode)) {\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n p: [fnNode, ...params],\n n: undefined,\n token: startBracketToken,\n }\n\n return node\n }\n\n assertSymbolNode(fnNode, getTokenDebugData(fnNode.token)?.sourceCodeInfo)\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: fnNode.v,\n p: params,\n token: startBracketToken,\n }\n\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression) {\n assertNumberOfParams(builtinExpression.paramCount, node)\n }\n\n return node\n}\n\nfunction parseSpecialExpression(tokenStream: TokenStream, parseState: ParseState): SpecialExpressionNode {\n const firstToken = asLParenToken(tokenStream.tokens[parseState.position++])\n\n const nameToken = asP_SymbolToken(tokenStream.tokens[parseState.position++])\n const expressionName = nameToken[1] as SpecialExpressionName\n\n const { polishParse: parse, paramCount } = asNonUndefined(builtin.specialExpressions[expressionName], getTokenDebugData(nameToken)?.sourceCodeInfo)\n\n const node = parse(tokenStream, parseState, firstToken, {\n parseExpression,\n parseTokensUntilClosingBracket,\n parseToken: parseState.parseToken,\n parseBinding,\n parseBindings,\n parseArgument,\n })\n\n assertNumberOfParams(paramCount, node)\n\n return node\n}\n\nexport function parsePolishToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n const tkn = asToken(tokenStream.tokens[parseState.position])\n\n const tokenType = tkn[0] as PolishTokenType\n switch (tokenType) {\n case 'String':\n return parseString(tokenStream, parseState)\n case 'P_Number':\n return parseNumber(tokenStream, parseState)\n case 'P_StringShorthand':\n return parseStringShorthand(tokenStream, parseState)\n case 'P_Symbol':\n return parseSymbol(tokenStream, parseState)\n case 'P_ReservedSymbol':\n return parseReservedSymbol(tokenStream, parseState)\n case 'LParen':\n return parseExpression(tokenStream, parseState)\n case 'LBracket':\n return parseArrayLitteral(tokenStream, parseState)\n case 'LBrace':\n return parseObjectLitteral(tokenStream, parseState)\n case 'RegexpShorthand':\n return parseRegexpShorthand(tokenStream, parseState)\n case 'P_FnShorthand':\n return parseFnShorthand(tokenStream, parseState)\n case 'P_Comment':\n return parseComment(tokenStream, parseState)\n case 'P_CollectionAccessor':\n case 'P_Modifier':\n case 'RParen':\n case 'RBracket':\n case 'RBrace':\n case 'P_Whitespace':\n break\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unrecognized token: ${tokenType satisfies never} ${tkn[1]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n throw new LitsError(`Unrecognized token: ${tokenType}${tkn[1] ? ` ${tkn[1]}` : ''}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n}\n","import { isA_CommentToken, isA_MultiLineCommentToken, isA_WhitespaceToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { isP_CommentToken, isP_WhitespaceToken } from '../tokenizer/polish/polishTokens'\nimport { AlgebraicParser } from './AlgebraicParser'\nimport type { Ast, AstNode, ParseState } from './interface'\nimport { parsePolishToken } from './PolishTokenParsers'\n\nexport function parse(tokenStream: TokenStream): Ast {\n tokenStream = removeUnnecessaryTokens(tokenStream)\n const algebraic = tokenStream.algebraic\n\n const ast: Ast = {\n b: [],\n hasDebugData: tokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n parseToken,\n }\n\n if (algebraic) {\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n ast.b = algebraicParser.parse()\n }\n else {\n while (parseState.position < tokenStream.tokens.length) {\n ast.b.push(parseToken(tokenStream, parseState))\n }\n }\n\n return ast\n}\n\nfunction removeUnnecessaryTokens(tokenStream: TokenStream): TokenStream {\n const tokens = tokenStream.tokens.filter((token) => {\n if (\n isP_CommentToken(token)\n || isA_CommentToken(token)\n || isA_MultiLineCommentToken(token)\n || isA_WhitespaceToken(token)\n || isP_WhitespaceToken(token)) {\n return false\n }\n return true\n })\n\n return { ...tokenStream, tokens }\n}\n\nfunction parseToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n return parsePolishToken(tokenStream, parseState)\n}\n","export const polishIdentifierCharacterClass = '[\\\\w@%^?=!$<>+*/:&\\|~-]'\nexport const polishIdentifierFirstCharacterClass = '[a-zA-Z_@%^?=!$<>+*/&\\|~-]'\nexport const algebraicIdentifierCharacterClass = '[\\\\w$:!?]'\nexport const algebraicIdentifierFirstCharacterClass = '[a-zA-Z_$]'\n","import { LitsError } from '../../errors'\nimport type { TokenDescriptor, Tokenizer } from '../interface'\nimport type { SimpleToken } from '../tokens'\nimport type { LBraceToken, LBracketToken, LParenToken, RBraceToken, RBracketToken, RParenToken, RegexpShorthandToken, StringToken } from './commonTokens'\n\nexport const NO_MATCH: TokenDescriptor<never> = [0]\n\nexport function isNoMatch(tokenDescriptor: TokenDescriptor<any>): tokenDescriptor is TokenDescriptor<never> {\n return tokenDescriptor[0] === 0\n}\n\nconst tokenizeLParen: Tokenizer<LParenToken> = (input, position) =>\n tokenizeSimpleToken('LParen', '(', input, position)\nconst tokenizeRParen: Tokenizer<RParenToken> = (input, position) =>\n tokenizeSimpleToken('RParen', ')', input, position)\nconst tokenizeLBracket: Tokenizer<LBracketToken> = (input, position) =>\n tokenizeSimpleToken('LBracket', '[', input, position)\nconst tokenizeRBracket: Tokenizer<RBracketToken> = (input, position) =>\n tokenizeSimpleToken('RBracket', ']', input, position)\nconst tokenizeLBrace: Tokenizer<LBraceToken> = (input, position) =>\n tokenizeSimpleToken('LBrace', '{', input, position)\nconst tokenizeRBrace: Tokenizer<RBraceToken> = (input, position) =>\n tokenizeSimpleToken('RBrace', '}', input, position)\n\nexport const tokenizeString: Tokenizer<StringToken> = (input, position) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = '\"'\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\"' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\"' // closing quote\n return [length + 1, ['String', value]]\n}\n\nexport const tokenizeRegexpShorthand: Tokenizer<RegexpShorthandToken> = (input, position) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n let options = ''\n while (input[position] === 'g' || input[position] === 'i') {\n if (options.includes(input[position]!)) {\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, undefined)\n }\n options += input[position]!\n length += 1\n position += 1\n }\n\n return [length, ['RegexpShorthand', `#${token[1]}${options}`]]\n}\n\nexport function tokenizeSimpleToken<T extends SimpleToken>(\n type: T[0],\n value: string,\n input: string,\n position: number,\n): TokenDescriptor<T> {\n if (value === input.slice(position, position + value.length))\n return [value.length, [type] as T]\n else\n return NO_MATCH\n}\n\nexport const commonTokenizers = [\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n tokenizeRegexpShorthand,\n] as const\n","import type { Any } from '../../interface'\n\nconst validAlgebraicReservedNamesRecord = {\n true: { value: true, forbidden: false },\n false: { value: false, forbidden: false },\n nil: { value: null, forbidden: false },\n null: { value: null, forbidden: false },\n then: { value: null, forbidden: false },\n else: { value: null, forbidden: false },\n end: { value: null, forbidden: false },\n case: { value: null, forbidden: false },\n when: { value: null, forbidden: false },\n while: { value: null, forbidden: false },\n function: { value: null, forbidden: false },\n export: { value: null, forbidden: false },\n} as const satisfies Record<string, { value: Any, forbidden: false }>\n\nconst forbiddenAlgebraicReservedNamesRecord = {\n fn: { value: null, forbidden: true },\n} as const satisfies Record<string, { value: Any, forbidden: true }>\n\nexport const algebraicReservedNamesRecord = {\n ...validAlgebraicReservedNamesRecord,\n ...forbiddenAlgebraicReservedNamesRecord,\n} as const\n\nexport type ValidAlgebraicReservedName = keyof typeof validAlgebraicReservedNamesRecord\nexport type AlgebraicReservedName = keyof typeof algebraicReservedNamesRecord\n","import { LitsError } from '../../errors'\nimport { algebraicIdentifierCharacterClass, algebraicIdentifierFirstCharacterClass } from '../../identifier'\nimport {\n NO_MATCH,\n commonTokenizers,\n} from '../common/commonTokenizers'\nimport type { Tokenizer } from '../interface'\nimport type { AlgebraicReservedName, ValidAlgebraicReservedName } from './algebraicReservedNames'\nimport { algebraicReservedNamesRecord } from './algebraicReservedNames'\nimport type { A_BasePrefixedNumberToken, A_MultiLineCommentToken, A_NumberToken, A_OperatorToken, A_ReservedSymbolToken, A_SingleLineCommentToken, A_SymbolToken, A_WhitespaceToken, AlgebraicToken } from './algebraicTokens'\nimport { isSymbolicOperator } from './algebraicTokens'\n\nconst identifierRegExp = new RegExp(algebraicIdentifierCharacterClass)\nconst identifierFirstCharacterRegExp = new RegExp(algebraicIdentifierFirstCharacterClass)\nconst whitespaceRegExp = /\\s/\n\nexport const tokenizeA_Whitespace: Tokenizer<A_WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['A_Whitespace', value]]\n}\n\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\n\nexport const tokenizeA_Number: Tokenizer<A_NumberToken> = (input, position) => {\n let i: number\n for (i = position; i < input.length; i += 1) {\n const char = input[i] as string\n if (!decimalNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length === 0) {\n return NO_MATCH\n }\n\n return [length, ['A_Number', input.substring(position, i)]]\n}\n\nexport const tokenizeA_BasePrefixedNumber: Tokenizer<A_BasePrefixedNumberToken> = (input, position) => {\n if (input[position] !== '0') {\n return NO_MATCH\n }\n\n const baseChar = input[position + 1]\n\n const type = baseChar === 'b' || baseChar === 'B'\n ? 'binary'\n : baseChar === 'o' || baseChar === 'O'\n ? 'octal'\n : baseChar === 'x' || baseChar === 'X'\n ? 'hex'\n : null\n\n if (type === null) {\n return NO_MATCH\n }\n\n let i: number\n for (i = position + 2; i < input.length; i += 1) {\n const char = input[i] as string\n if (type === 'binary' && !binaryNumberRegExp.test(char)) {\n break\n }\n if (type === 'octal' && !octalNumberRegExp.test(char)) {\n break\n }\n if (type === 'hex' && !hexNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length <= 2) {\n return NO_MATCH\n }\n\n return [length, ['A_BasePrefixedNumber', input.substring(position, i)]]\n}\n\nexport const tokenizeA_Symbol: Tokenizer<A_SymbolToken> = (input, position) => {\n let value = input[position]\n\n if (!value) {\n return NO_MATCH\n }\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['A_Symbol', value]]\n }\n\n if (identifierFirstCharacterRegExp.test(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && identifierRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['A_Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeA_ReservedSymbolToken: Tokenizer<A_ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeA_Symbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = algebraicReservedNamesRecord[symbolName as AlgebraicReservedName]\n if (!info) {\n return NO_MATCH\n }\n if (info.forbidden) {\n throw new LitsError(`${symbolName} is forbidden!`, undefined)\n }\n return [symbolMeta[0], ['A_ReservedSymbol', symbolName as ValidAlgebraicReservedName]]\n}\n\nexport const tokenizeA_Operator: Tokenizer<A_OperatorToken> = (input, position) => {\n const threeChars = input.slice(position, position + 3)\n if (position + 2 < input.length && isSymbolicOperator(threeChars)) {\n return [3, ['A_Operator', threeChars]]\n }\n\n const twoChars = input.slice(position, position + 2)\n if (position + 1 < input.length && isSymbolicOperator(twoChars)) {\n return [2, ['A_Operator', twoChars]]\n }\n\n const oneChar = input[position] ?? ''\n if (isSymbolicOperator(oneChar)) {\n return [1, ['A_Operator', oneChar]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeA_MultiLineComment: Tokenizer<A_MultiLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '*') {\n let length = 2\n let value = '/*'\n while (input[position + length] !== '*' && input[position + length + 1] !== '/' && position + length + 1 < input.length) {\n value += input[position + length]\n length += 1\n }\n if (position + length + 1 >= input.length) {\n throw new LitsError('Comment not closed', undefined)\n }\n value += '*/'\n length += 2\n\n return [length, ['A_MultiLineComment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeA_SingleLineComment: Tokenizer<A_SingleLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '/') {\n let length = 2\n let value = '//'\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['A_SingleLineComment', value]]\n }\n return NO_MATCH\n}\n\n// All tokenizers, order matters!\nexport const algebraicTokenizers = [\n tokenizeA_Whitespace,\n tokenizeA_MultiLineComment,\n tokenizeA_SingleLineComment,\n ...commonTokenizers,\n tokenizeA_BasePrefixedNumber,\n tokenizeA_Number,\n tokenizeA_Operator,\n tokenizeA_ReservedSymbolToken,\n tokenizeA_Symbol,\n] as const satisfies Tokenizer<AlgebraicToken>[]\n","import { LitsError } from '../../errors'\nimport { polishIdentifierCharacterClass, polishIdentifierFirstCharacterClass } from '../../identifier'\nimport {\n NO_MATCH,\n commonTokenizers,\n isNoMatch,\n} from '../common/commonTokenizers'\nimport type { Tokenizer } from '../interface'\nimport { polishReservedNamesRecord } from './polishReservedNames'\nimport type {\n ModifierName,\n P_CollectionAccessorToken,\n P_CommentToken,\n P_FnShorthandToken,\n P_ModifierToken,\n P_NumberToken,\n P_ReservedSymbolToken,\n P_StringShorthandToken,\n P_SymbolToken,\n P_WhitespaceToken,\n PolishToken,\n} from './polishTokens'\nimport { asP_SymbolToken, modifierNames } from './polishTokens'\n\nconst whitespaceRegExp = /\\s|,/\n\nexport const tokenizeP_Comment: Tokenizer<P_CommentToken> = (input, position) => {\n if (input[position] === ';') {\n let length = 0\n let value = ''\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['P_Comment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeP_Whitespace: Tokenizer<P_WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['P_Whitespace', value]]\n}\n\nconst endOfNumberRegExp = /[\\s)\\]},;#`]/\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst firstCharRegExp = /[0-9.-]/\nexport const tokenizeP_Number: Tokenizer<P_NumberToken> = (input, position) => {\n let type: 'decimal' | 'octal' | 'hex' | 'binary' = 'decimal'\n const firstChar = input[position] as string\n if (!firstCharRegExp.test(firstChar))\n return NO_MATCH\n\n let hasDecimals = firstChar === '.'\n\n let i: number\n for (i = position + 1; i < input.length; i += 1) {\n const char = input[i] as string\n if (endOfNumberRegExp.test(char))\n break\n\n if (char === '.') {\n const nextChar = input[i + 1]\n if (typeof nextChar === 'string' && !decimalNumberRegExp.test(nextChar))\n break\n }\n if (i === position + 1 && firstChar === '0') {\n if (char === 'b' || char === 'B') {\n type = 'binary'\n continue\n }\n if (char === 'o' || char === 'O') {\n type = 'octal'\n continue\n }\n if (char === 'x' || char === 'X') {\n type = 'hex'\n continue\n }\n }\n if (type === 'decimal' && hasDecimals) {\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'binary') {\n if (!binaryNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'octal') {\n if (!octalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'hex') {\n if (!hexNumberRegExp.test(char))\n return NO_MATCH\n }\n else {\n if (char === '.') {\n hasDecimals = true\n continue\n }\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n }\n\n const length = i - position\n const value = input.substring(position, i)\n if ((type !== 'decimal' && length <= 2) || value === '.' || value === '-')\n return NO_MATCH\n\n return [length, ['P_Number', value]]\n}\n\nexport const P_symbolRegExp = new RegExp(polishIdentifierCharacterClass)\nexport const P_symbolFirstCharacterRegExp = new RegExp(polishIdentifierFirstCharacterClass)\nexport const tokenizeP_Symbol: Tokenizer<P_SymbolToken> = (input, position) => {\n let value = input[position]\n\n if (!value) {\n return NO_MATCH\n }\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['P_Symbol', value]]\n }\n\n if (P_symbolRegExp.test(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && P_symbolRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['P_Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeP_FnShorthand: Tokenizer<P_FnShorthandToken> = (input, position) => {\n if (input.slice(position, position + 2) !== '#(')\n return NO_MATCH\n\n return [1, ['P_FnShorthand']]\n}\n\nexport const tokenizeP_ReservedSymbol: Tokenizer<P_ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeP_Symbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = polishReservedNamesRecord[symbolName]\n if (!info) {\n return NO_MATCH\n }\n if (info.forbidden) {\n throw new LitsError(`${symbolName} is forbidden!`, undefined)\n }\n return [symbolMeta[0], ['P_ReservedSymbol', symbolName]]\n}\n\nconst tokenizeP_StringShorthand: Tokenizer<P_StringShorthandToken> = (input, position) => {\n if (input[position] !== ':')\n return NO_MATCH\n\n const symbolDescription = tokenizeP_Symbol(input, position + 1)\n if (isNoMatch(symbolDescription)) {\n return symbolDescription\n }\n\n const symbolToken = asP_SymbolToken(symbolDescription[1])\n\n return [symbolDescription[0] + 1, ['P_StringShorthand', `:${symbolToken[1]}`]]\n}\n\nexport const tokenizeP_Modifier: Tokenizer<P_ModifierToken> = (input, position) => {\n for (const modifierName of modifierNames) {\n const length = modifierName.length\n const charAfterModifier = input[position + length]\n if (input.substring(position, position + length) === modifierName && (!charAfterModifier || !P_symbolRegExp.test(charAfterModifier))) {\n const value: ModifierName = modifierName\n return [length, ['P_Modifier', value]]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeP_CollectionAccessor: Tokenizer<P_CollectionAccessorToken> = (input, position) => {\n const char = input[position]\n if (char !== '.' && char !== '#')\n return NO_MATCH\n\n return [1, ['P_CollectionAccessor', char]]\n}\n\n// All tokenizers, order matters!\nexport const polishTokenizers = [\n tokenizeP_Whitespace,\n tokenizeP_Comment,\n ...commonTokenizers,\n tokenizeP_StringShorthand,\n tokenizeP_Number,\n tokenizeP_ReservedSymbol,\n tokenizeP_Modifier,\n tokenizeP_Symbol,\n tokenizeP_FnShorthand,\n tokenizeP_CollectionAccessor,\n] as const satisfies Tokenizer<PolishToken>[]\n","import { LitsError } from '../../errors'\nimport { asNonUndefined } from '../../typeGuards'\nimport { assertNumber, isNumber } from '../../typeGuards/number'\nimport type { SourceCodeInfo, TokenStream } from '../interface'\nimport { addTokenDebugData, getTokenDebugData } from '../utils'\nimport type { P_CollectionAccessorToken, P_StringShorthandToken } from '../polish/polishTokens'\nimport { asP_CollectionAccessorToken, assertP_NumberToken, assertP_SymbolToken, isP_CollectionAccessorToken, isP_FnShorthandToken, isP_SymbolToken } from '../polish/polishTokens'\nimport { isRBraceToken, isRBracketToken, isRParenToken } from '../common/commonTokens'\nimport { asToken } from '../tokens'\nimport type { SugarFunction } from '.'\n\nexport const applyCollectionAccessors: SugarFunction = (tokenStream) => {\n let dotTokenIndex = tokenStream.tokens.findIndex(isP_CollectionAccessorToken)\n while (dotTokenIndex >= 0) {\n applyCollectionAccessor(tokenStream, dotTokenIndex)\n dotTokenIndex = tokenStream.tokens.findIndex(isP_CollectionAccessorToken)\n }\n return tokenStream\n}\n\nfunction applyCollectionAccessor(tokenStream: TokenStream, position: number) {\n const dotTkn = asP_CollectionAccessorToken(tokenStream.tokens[position])\n const debugData = getTokenDebugData(dotTkn)\n const backPosition = getPositionBackwards(tokenStream, position, debugData?.sourceCodeInfo)\n checkForward(tokenStream, position, dotTkn, debugData?.sourceCodeInfo)\n\n tokenStream.tokens.splice(position, 1)\n tokenStream.tokens.splice(backPosition, 0, ['LParen'])\n const nextTkn = asToken(tokenStream.tokens[position + 1])\n if (dotTkn[1] === '.') {\n assertP_SymbolToken(nextTkn)\n const token: P_StringShorthandToken = ['P_StringShorthand', `:${nextTkn[1]}`]\n tokenStream.tokens[position + 1] = token\n\n const nextTkndebugData = getTokenDebugData(nextTkn)\n if (nextTkndebugData) {\n addTokenDebugData(token, nextTkndebugData)\n }\n }\n else {\n assertP_NumberToken(nextTkn)\n assertNumber(Number(nextTkn[1]), debugData?.sourceCodeInfo, { integer: true, nonNegative: true })\n\n tokenStream.tokens[position + 1] = ['P_Number', nextTkn[1]]\n }\n tokenStream.tokens.splice(position + 2, 0, ['RParen'])\n}\n\nfunction getPositionBackwards(tokenStream: TokenStream, position: number, sourceCodeInfo: SourceCodeInfo | undefined) {\n let bracketCount: number | null = null\n if (position <= 0)\n throw new LitsError('Array accessor # must come after a sequence', sourceCodeInfo)\n\n const prevToken = asNonUndefined(tokenStream.tokens[position - 1])\n let openBracket: 'LParen' | 'LBracket' | 'LBrace' | null = null\n let closeBracket: 'RParen' | 'RBracket' | 'RBrace' | null = null\n\n if (isRParenToken(prevToken)) {\n openBracket = 'LParen'\n closeBracket = 'RParen'\n }\n else if (isRBracketToken(prevToken)) {\n openBracket = 'LBracket'\n closeBracket = 'RBracket'\n }\n else if (isRBraceToken(prevToken)) {\n openBracket = 'LBrace'\n closeBracket = 'RBrace'\n }\n\n while (bracketCount !== 0) {\n bracketCount = bracketCount === null ? 0 : bracketCount\n position -= 1\n const tkn = asNonUndefined(tokenStream.tokens[position], sourceCodeInfo)\n if (tkn[0] === openBracket) {\n bracketCount += 1\n }\n else if (tkn[0] === closeBracket) {\n bracketCount -= 1\n }\n }\n if (openBracket === 'LParen' && position > 0) {\n const tokenBeforeBracket = asNonUndefined(tokenStream.tokens[position - 1])\n if (isP_FnShorthandToken(tokenBeforeBracket))\n throw new LitsError('# or . must NOT be preceeded by shorthand lambda function', sourceCodeInfo)\n }\n return position\n}\n\nfunction checkForward(\n tokenStream: TokenStream,\n position: number,\n dotTkn: P_CollectionAccessorToken,\n sourceCodeInfo: SourceCodeInfo | undefined,\n) {\n const tkn = tokenStream.tokens[position + 1]\n\n if (dotTkn[1] === '.' && !isP_SymbolToken(tkn)) {\n throw new LitsError('# as a collection accessor must be followed by an name', sourceCodeInfo)\n }\n\n if (dotTkn[1] === '#' && isNumber(tkn)) {\n throw new LitsError('# as a collection accessor must be followed by an integer', sourceCodeInfo)\n }\n}\n","import type { TokenStream } from '../interface'\nimport { applyCollectionAccessors } from './applyCollectionAccessor'\n\nexport type SugarFunction = (tokenStream: TokenStream) => TokenStream\n\nexport function getSugar(): SugarFunction[] {\n return [applyCollectionAccessors]\n}\n","import { LitsError } from '../errors'\nimport { algebraicTokenizers } from './algebraic/algebraicTokenizers'\nimport type { SourceCodeInfo, TokenDescriptor, TokenStream, TokenizeParams, Tokenizer } from './interface'\nimport { polishTokenizers } from './polish/polishTokenizers'\nimport { getSugar } from './sugar'\nimport type { Token } from './tokens'\nimport type { TokenDebugData } from './utils'\nimport { addTokenDebugData } from './utils'\n\nexport function tokenize(input: string, params: TokenizeParams): TokenStream {\n const debug = !!params.debug\n let position = 0\n const tokenStream: TokenStream = {\n tokens: [],\n filePath: params.filePath,\n hasDebugData: debug,\n algebraic: !!params.algebraic,\n }\n\n while (position < input.length) {\n const tokenizers = params.algebraic ? algebraicTokenizers : polishTokenizers\n const tokenDescriptor = getCurrentToken(input, position, tokenizers)\n\n const debugData: TokenDebugData | undefined = debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n }\n : undefined\n\n if (!tokenDescriptor) {\n throw new LitsError(`Unrecognized character '${input[position]}'.`, debugData?.sourceCodeInfo)\n }\n\n const [count, token] = tokenDescriptor\n\n position += count\n if (token) {\n if (debugData) {\n addTokenDebugData(token, debugData)\n }\n\n tokenStream.tokens.push(token)\n }\n }\n\n applySugar(tokenStream)\n\n return tokenStream\n}\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nfunction getCurrentToken(input: string, position: number, tokenizers: Tokenizer<Token>[]): TokenDescriptor<Token> | null {\n const initialPosition = position\n\n let tryNext = true\n while (tryNext) {\n if (position >= input.length) {\n return [position - initialPosition, undefined]\n }\n tryNext = false\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position)\n position += nbrOfCharacters\n if (nbrOfCharacters === 0) {\n continue\n }\n\n if (!token) {\n tryNext = true\n break\n }\n\n return [position - initialPosition, token]\n }\n }\n return null\n}\n\nfunction applySugar(tokenStream: TokenStream) {\n const sugar = getSugar()\n sugar.forEach(sugarFn => sugarFn(tokenStream))\n}\n","import { isA_SymbolToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { isP_SymbolToken } from '../tokenizer/polish/polishTokens'\n\nexport function transformTokens(tokenStram: TokenStream, transformer: (name: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map(token => isA_SymbolToken(token) || isP_SymbolToken(token)\n ? [token[0], transformer(token[1])]\n : token),\n }\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport { type Token, assertSimpleToken, isValueToken } from '../tokenizer/tokens'\n\nexport function untokenize(tokenStream: TokenStream): string {\n return tokenStream.tokens.reduce((acc: string, token) => {\n return `${acc}${untokenizeToken(token)}`\n }, '')\n}\n\nfunction untokenizeToken(token: Token): string {\n if (isValueToken(token)) {\n return token[1]\n }\n assertSimpleToken(token)\n const tokenType = token[0]\n switch (tokenType) {\n case 'LParen': return '('\n case 'RParen': return ')'\n case 'LBracket': return '['\n case 'RBracket': return ']'\n case 'LBrace': return '{'\n case 'RBrace': return '}'\n case 'P_FnShorthand': return '#'\n\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown token type: ${tokenType satisfies never}`)\n }\n}\n","import type { Ast } from '../parser/interface'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import type { Analysis } from '../analyze'\nimport { analyze } from '../analyze'\nimport { evaluate } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport { parse } from '../parser'\nimport type { Ast, LitsFunction } from '../parser/interface'\nimport { tokenize } from '../tokenizer'\nimport type { TokenStream, TokenizeParams } from '../tokenizer/interface'\nimport { transformTokens } from '../transformer'\nimport { untokenize } from '../untokenizer'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface LitsParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n filePath?: string\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n algebraic?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n private algebraic: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.algebraic = config.algebraic ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: LitsParams = {}): unknown {\n const ast = this.generateAst(program, params)\n return this.evaluate(ast, params)\n }\n\n public context(program: string, params: LitsParams = {}): Context {\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public analyze(program: string, params: LitsParams = {}): Analysis {\n const ast = this.generateAst(program, params)\n\n return analyze(ast, params)\n }\n\n public tokenize(program: string, tokenizeParams: Pick<TokenizeParams, 'filePath'> = {}): TokenStream {\n const debug = this.debug\n const algebraic = this.algebraic\n return tokenize(program, { ...tokenizeParams, debug, algebraic })\n }\n\n public parse(tokenStream: TokenStream): Ast {\n return parse(tokenStream)\n }\n\n public evaluate(ast: Ast, params: LitsParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transform(tokenStream: TokenStream, transformer: (name: string) => string): TokenStream {\n return transformTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: LitsParams = {}): Any {\n const fnName = 'FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59'\n const program = this.generateApplyFunctionCall(fnName, fnParams)\n\n const ast = this.generateAst(program, params)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateApplyFunctionCall(fnName: string, fnParams: unknown[]) {\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(this.algebraic ? ', ' : ' ')\n return this.algebraic ? `${fnName}(${paramsString})` : `(${fnName} ${paramsString})`\n }\n\n private generateAst(program: string, params: LitsParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, {\n filePath: params.filePath,\n })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport { LitsError } from '../errors'\nimport type { Context } from '../evaluator/interface'\nimport { Lits } from '../Lits/Lits'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getCodeMarker } from '../utils/debug/getCodeMarker'\n\ninterface TestChunk {\n name: string\n program: string\n directive: 'SKIP' | null\n}\n\nexport interface RunTestParams {\n testPath: string\n testNamePattern?: RegExp\n}\n\nexport interface TestResult {\n /**\n * Test report\n * http://testanything.org/\n */\n tap: string\n success: boolean\n}\n\nexport function runTest({ testPath: filePath, testNamePattern }: RunTestParams): TestResult {\n const includedFilePaths = getIncludedFilePaths(filePath)\n const testResult: TestResult = {\n tap: 'TAP version 13\\n',\n success: true,\n }\n try {\n const testChunks = getTestChunks(filePath)\n testResult.tap += `1..${testChunks.length}\\n`\n testChunks.forEach((testChunkProgram, index) => {\n const testNumber = index + 1\n if (testNamePattern && !testNamePattern.test(testChunkProgram.name)) {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip - Not matching testNamePattern ${testNamePattern}\\n`\n }\n else if (testChunkProgram.directive === 'SKIP') {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip\\n`\n }\n else {\n try {\n const lits = new Lits({ debug: true })\n const contexts = getContexts(includedFilePaths, lits)\n lits.run(testChunkProgram.program, {\n contexts,\n filePath,\n })\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name}\\n`\n }\n catch (error) {\n testResult.success = false\n testResult.tap += `not ok ${testNumber} ${testChunkProgram.name}${getErrorYaml(error)}`\n }\n }\n })\n }\n catch (error: unknown) {\n testResult.tap += `Bail out! ${getErrorMessage(error)}\\n`\n testResult.success = false\n }\n return testResult\n}\n\nfunction readLitsFile(litsPath: string): string {\n if (!litsPath.endsWith('.lits'))\n throw new Error(`Expected .lits file, got ${litsPath}`)\n\n return fs.readFileSync(litsPath, { encoding: 'utf-8' })\n}\n\nfunction getContexts(includedFilePaths: string[], lits: Lits): Context[] {\n return includedFilePaths.reduce((acc: Context[], filePath) => {\n const fileContent = readLitsFile(filePath)\n acc.push(lits.context(fileContent, { filePath, contexts: acc }))\n return acc\n }, [])\n}\n\nfunction getIncludedFilePaths(absoluteFilePath: string): string[] {\n const result: string[] = []\n getIncludesRecursively(absoluteFilePath, result)\n return result.reduce((acc: string[], entry: string) => {\n if (!acc.includes(entry))\n acc.push(entry)\n\n return acc\n }, [])\n\n function getIncludesRecursively(filePath: string, includedFilePaths: string[]): void {\n const includeFilePaths = readIncludeDirectives(filePath)\n includeFilePaths.forEach((includeFilePath) => {\n getIncludesRecursively(includeFilePath, includedFilePaths)\n includedFilePaths.push(includeFilePath)\n })\n }\n}\n\nfunction readIncludeDirectives(filePath: string): string[] {\n const fileContent = readLitsFile(filePath)\n const dirname = path.dirname(filePath)\n let okToInclude = true\n return fileContent.split('\\n').reduce((acc: string[], line) => {\n const includeMatch = line.match(/^\\s*;+\\s*@include\\s*(\\S+)\\s*$/)\n if (includeMatch) {\n if (!okToInclude)\n throw new Error(`@include must be in the beginning of file: ${filePath}:${line + 1}`)\n\n const relativeFilePath = includeMatch[1] as string\n acc.push(path.resolve(dirname, relativeFilePath))\n }\n if (!line.match(/^\\s*;.*$/))\n okToInclude = false\n\n return acc\n }, [])\n}\n\n// Splitting test file based on @test annotations\nfunction getTestChunks(testPath: string): TestChunk[] {\n const testProgram = readLitsFile(testPath)\n let currentTest: TestChunk | undefined\n let setupCode = ''\n return testProgram.split('\\n').reduce((result: TestChunk[], line, index) => {\n const currentLineNbr = index + 1\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const testNameAnnotationMatch = line.match(/^\\s*;+\\s*@(?:(skip)-)?test\\s*(.*)$/)\n if (testNameAnnotationMatch) {\n const directive = (testNameAnnotationMatch[1] ?? '').toUpperCase()\n const testName = testNameAnnotationMatch[2]\n if (!testName)\n throw new Error(`Missing test name on line ${currentLineNbr}`)\n\n if (result.find(chunk => chunk.name === testName))\n throw new Error(`Duplicate test name ${testName}`)\n\n currentTest = {\n directive: (directive || null) as TestChunk['directive'],\n name: testName,\n // Adding new-lines to make lits debug information report correct rows\n program:\n setupCode + [...Array(currentLineNbr + 2 - setupCode.split('\\n').length).keys()].map(() => '').join('\\n'),\n }\n result.push(currentTest)\n return result\n }\n if (!currentTest)\n setupCode += `${line}\\n`\n else\n currentTest.program += `${line}\\n`\n\n return result\n }, [])\n}\n\nexport function getErrorYaml(error: unknown): string {\n const message = getErrorMessage(error)\n /* v8 ignore next 7 */\n if (!isAbstractLitsError(error)) {\n return `\n ---\n message: ${JSON.stringify(message)}\n ...\n`\n }\n\n const sourceCodeInfo = error.sourceCodeInfo\n /* v8 ignore next 8 */\n if (!sourceCodeInfo || typeof sourceCodeInfo === 'string') {\n return `\n ---\n message: ${JSON.stringify(message)}\n error: ${JSON.stringify(error.name)}\n ...\n`\n }\n\n const formattedMessage = message.includes('\\n')\n ? `|\\n ${message.split(/\\r?\\n/).join('\\n ')}`\n : JSON.stringify(message)\n return `\n ---\n error: ${JSON.stringify(error.name)}\n message: ${formattedMessage}\n location: ${JSON.stringify(getLocation(sourceCodeInfo))}\n code:\n - \"${sourceCodeInfo.code}\"\n - \"${getCodeMarker(sourceCodeInfo)}\"\n ...\n`\n}\n\nfunction getLocation(sourceCodeInfo: SourceCodeInfo): string {\n const terms: string[] = []\n if (sourceCodeInfo.filePath)\n terms.push(sourceCodeInfo.filePath)\n\n if (sourceCodeInfo.position) {\n terms.push(`${sourceCodeInfo.position.line}`)\n terms.push(`${sourceCodeInfo.position.column}`)\n }\n\n return terms.join(':')\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (!isAbstractLitsError(error)) {\n // error should always be an Error (other cases is just for kicks)\n /* v8 ignore next 1 */\n return typeof error === 'string' ? error : error instanceof Error ? error.message : 'Unknown error'\n }\n return error.shortMessage\n}\n\nfunction isAbstractLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n"],"names":["isToken","isLitsFunction","isUnknownRecord","isAstNode","analyze","placeholderRegexp","whitespaceRegExp","decimalNumberRegExp","octalNumberRegExp","hexNumberRegExp","binaryNumberRegExp"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"testFramework.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/constants/constants.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/tokenizer/utils.ts","../src/tokenizer/common/commonTokens.ts","../src/tokenizer/algebraic/algebraicTokens.ts","../src/tokenizer/polish/polishTokens.ts","../src/tokenizer/tokens.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/removeCommentNodes/removeCommentNodesFromSpecialExpression.ts","../src/removeCommentNodes/index.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/commonParser.ts","../src/builtin/specialExpressions/comment.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/switch.ts","../src/builtin/specialExpressions/declared.ts","../src/tokenizer/polish/polishReservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/do.ts","../src/analyze/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/unless.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/analyze/findUnresolvedIdentifiers.ts","../src/analyze/index.ts","../src/tokenizer/minifyTokenStream.ts","../src/parser/commonTokenParsers.ts","../src/parser/AlgebraicParser.ts","../src/parser/PolishTokenParsers.ts","../src/parser/index.ts","../src/identifier.ts","../src/tokenizer/common/commonTokenizers.ts","../src/tokenizer/algebraic/algebraicReservedNames.ts","../src/tokenizer/algebraic/algebraicTokenizers.ts","../src/tokenizer/polish/polishTokenizers.ts","../src/tokenizer/sugar/applyCollectionAccessor.ts","../src/tokenizer/sugar/index.ts","../src/tokenizer/index.ts","../src/transformer/index.ts","../src/untokenizer/index.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../src/testFramework/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/interface'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n const filePathLine = sourceCodeInfo?.filePath ? `\\n${sourceCodeInfo.filePath}` : ''\n const codeLine = sourceCodeInfo?.code ? `\\n${sourceCodeInfo.code}` : ''\n const codeMarker = sourceCodeInfo && codeLine ? `\\n${getCodeMarker(sourceCodeInfo)}` : ''\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(message: string | Error, sourceCodeInfo: SourceCodeInfo | undefined) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${fn}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","export enum AstNodeType {\n Number = 201,\n String = 202,\n NormalExpression = 203,\n SpecialExpression = 204,\n Symbol = 205,\n Modifier = 206,\n ReservedSymbol = 207,\n Binding = 208,\n Argument = 209,\n Partial = 210,\n Comment = 211,\n}\n\nexport const astNodeTypeName = new Map([\n [AstNodeType.Number, 'Number'],\n [AstNodeType.String, 'String'],\n [AstNodeType.NormalExpression, 'NormalExpression'],\n [AstNodeType.SpecialExpression, 'SpecialExpression'],\n [AstNodeType.Symbol, 'Name'],\n [AstNodeType.Modifier, 'Modifier'],\n [AstNodeType.ReservedSymbol, 'ReservedName'],\n [AstNodeType.Binding, 'Binding'],\n [AstNodeType.Argument, 'Argument'],\n [AstNodeType.Partial, 'Partial'],\n])\n\nexport function isAstNodeType(type: unknown): type is AstNodeType {\n return typeof type === 'number' && astNodeTypeName.has(type)\n}\n\nexport enum FunctionType {\n UserDefined = 301,\n Partial = 302,\n Comp = 303,\n Constantly = 304,\n Juxt = 305,\n Complement = 306,\n EveryPred = 307,\n SomePred = 308,\n Fnil = 309,\n Builtin = 310,\n NativeJsFunction = 399,\n}\n\nexport const functionTypeName = new Map([\n [FunctionType.UserDefined, 'UserDefined'],\n [FunctionType.Partial, 'Partial'],\n [FunctionType.Comp, 'Comp'],\n [FunctionType.Constantly, 'Constantly'],\n [FunctionType.Juxt, 'Juxt'],\n [FunctionType.Complement, 'Complement'],\n [FunctionType.EveryPred, 'EveryPred'],\n [FunctionType.SomePred, 'SomePred'],\n [FunctionType.Fnil, 'Fnil'],\n [FunctionType.Builtin, 'Builtin'],\n])\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'number' && functionTypeName.has(type)\n}\n","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo?: SourceCodeInfo): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\nimport type { SourceCodeInfo } from './interface'\nimport type { Token, TokenType } from './tokens'\n\nexport type TokenDebugData = {\n sourceCodeInfo: SourceCodeInfo\n}\n\nfunction isTokenDebugData(tokenDebugData: unknown): tokenDebugData is TokenDebugData {\n return (\n typeof tokenDebugData === 'object'\n && tokenDebugData !== null\n && 'sourceCodeInfo' in tokenDebugData\n )\n}\n\nexport function getTokenDebugData(token?: Token): TokenDebugData | undefined {\n const debugData = token?.at(-1)\n return isTokenDebugData(debugData) ? debugData : undefined\n}\n\nexport function hasTokenDebugData(token?: Token): boolean {\n return isTokenDebugData(token?.at(-1))\n}\n\nexport function addTokenDebugData(token: Token, debugData: TokenDebugData): void {\n if (isTokenDebugData(token.at(-1))) {\n throw new Error(`Token already has debug data: ${token}`)\n }\n ;(token as unknown[]).push(debugData)\n}\n\nexport function throwUnexpectedToken(expected: TokenType, expectedValue: string | undefined, actual?: Token): never {\n if (actual === undefined) {\n throw new LitsError(`Unexpected end of input, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, undefined)\n }\n const actualOutput = `${actual[0]}${actual[1] ? ` '${actual[1]}'` : ''}`\n throw new LitsError(`Unexpected token: ${actualOutput}, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, getSourceCodeInfo(actual))\n}\n","import { type TokenDebugData, throwUnexpectedToken } from '../utils'\nimport type { Token } from '../tokens'\n\nexport const commonSimpleTokenTypes = [\n 'LBrace',\n 'LBracket',\n 'LParen',\n 'RBrace',\n 'RBracket',\n 'RParen',\n] as const\n\nexport const commomValueTokenTypes = [\n 'String',\n 'RegexpShorthand',\n] as const\n\nexport type CommonSimpleTokenType = typeof commonSimpleTokenTypes[number]\nexport type CommonValueTokenType = typeof commomValueTokenTypes[number]\n\ntype GenericCommonSimpleToken<T extends CommonSimpleTokenType> = [T] | [T, TokenDebugData]\ntype GenericCommonValueToken<T extends CommonValueTokenType, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type LParenToken = GenericCommonSimpleToken<'LParen'>\nexport type RParenToken = GenericCommonSimpleToken<'RParen'>\nexport type LBracketToken = GenericCommonSimpleToken<'LBracket'>\nexport type RBracketToken = GenericCommonSimpleToken<'RBracket'>\nexport type LBraceToken = GenericCommonSimpleToken<'LBrace'>\nexport type RBraceToken = GenericCommonSimpleToken<'RBrace'>\n\nexport type StringToken = GenericCommonValueToken<'String'>\nexport type RegexpShorthandToken = GenericCommonValueToken<'RegexpShorthand'>\n\nexport type CommonSimpleToken =\n | LParenToken\n | RParenToken\n | LBracketToken\n | RBracketToken\n | LBraceToken\n | RBraceToken\n\nexport type CommonValueToken =\n | StringToken\n | RegexpShorthandToken\n\nexport function isLParenToken(token?: Token): token is LParenToken {\n return token?.[0] === 'LParen'\n}\nexport function assertLParenToken(token?: Token): asserts token is LParenToken {\n if (!isLParenToken(token)) {\n throwUnexpectedToken('LParen', undefined, token)\n }\n}\nexport function asLParenToken(token?: Token): LParenToken {\n assertLParenToken(token)\n return token\n}\n\nexport function isRParenToken(token?: Token): token is RParenToken {\n return token?.[0] === 'RParen'\n}\nexport function assertRParenToken(token?: Token): asserts token is RParenToken {\n if (!isRParenToken(token)) {\n throwUnexpectedToken('RParen', undefined, token)\n }\n}\nexport function asRParenToken(token?: Token): RParenToken {\n assertRParenToken(token)\n return token\n}\n\nexport function isLBracketToken(token?: Token): token is LBracketToken {\n return token?.[0] === 'LBracket'\n}\nexport function assertLBracketToken(token?: Token): asserts token is LBracketToken {\n if (!isLBracketToken(token)) {\n throwUnexpectedToken('LBracket', undefined, token)\n }\n}\nexport function asLBracketToken(token?: Token): LBracketToken {\n assertLBracketToken(token)\n return token\n}\n\nexport function isRBracketToken(token?: Token): token is RBracketToken {\n return token?.[0] === 'RBracket'\n}\nexport function assertRBracketToken(token?: Token): asserts token is RBracketToken {\n if (!isRBracketToken(token)) {\n throwUnexpectedToken('RBracket', undefined, token)\n }\n}\nexport function asRBracketToken(token?: Token): RBracketToken {\n assertRBracketToken(token)\n return token\n}\n\nexport function isLBraceToken(token?: Token): token is LBraceToken {\n return token?.[0] === 'LBrace'\n}\nexport function assertLBraceToken(token?: Token): asserts token is LBraceToken {\n if (!isLBraceToken(token)) {\n throwUnexpectedToken('LBrace', undefined, token)\n }\n}\nexport function asLBraceToken(token?: Token): LBraceToken {\n assertLBraceToken(token)\n return token\n}\n\nexport function isRBraceToken(token?: Token): token is RBraceToken {\n return token?.[0] === 'RBrace'\n}\nexport function assertRBraceToken(token?: Token): asserts token is RBraceToken {\n if (!isRBraceToken(token)) {\n throwUnexpectedToken('RBrace', undefined, token)\n }\n}\nexport function asRBraceToken(token?: Token): RBraceToken {\n assertRBraceToken(token)\n return token\n}\n\nexport function isStringToken(token?: Token): token is StringToken {\n return token?.[0] === 'String'\n}\nexport function assertStringToken(token?: Token): asserts token is StringToken {\n if (!isStringToken(token)) {\n throwUnexpectedToken('String', undefined, token)\n }\n}\nexport function asStringToken(token?: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isRegexpShorthandToken(token?: Token): token is RegexpShorthandToken {\n return token?.[0] === 'RegexpShorthand'\n}\nexport function assertRegexpShorthandToken(token?: Token): asserts token is RegexpShorthandToken {\n if (!isRegexpShorthandToken(token)) {\n throwUnexpectedToken('RegexpShorthand', undefined, token)\n }\n}\nexport function asRegexpShorthandToken(token?: Token): RegexpShorthandToken {\n assertRegexpShorthandToken(token)\n return token\n}\n","import { LitsError } from '../../errors'\nimport type { CommonSimpleToken, CommonValueToken, CommonValueTokenType } from '../common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from '../common/commonTokens'\nimport type { Token } from '../tokens'\nimport { type TokenDebugData, throwUnexpectedToken } from '../utils'\nimport type { ValidAlgebraicReservedName } from './algebraicReservedNames'\n\nexport const algebraicSimpleTokenTypes = [\n ...commonSimpleTokenTypes,\n] as const\n\nexport const algebraicOnlyValueTokenTypes = [\n 'A_Whitespace',\n 'A_Operator',\n 'A_Symbol',\n 'A_ReservedSymbol',\n 'A_SingleLineComment',\n 'A_MultiLineComment',\n 'A_Number',\n 'A_BasePrefixedNumber',\n] as const satisfies `A_${string}`[]\n\nexport const algebraicValueTokenTypes = [\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n] as const\n\nexport const algebraicTokenTypes = [\n ...algebraicSimpleTokenTypes,\n ...algebraicValueTokenTypes,\n] as const\n\nconst symbolicUnaryOperators = [\n '!', // logical NOT\n '~', // bitwise NOT\n '+', // addition\n '-', // subtraction\n] as const\n\nconst symbolicBinaryOperators = [\n '**', // exponentiation\n\n '*', // multiplication\n '/', // division\n '%', // remainder\n\n '+', // addition\n '-', // subtraction\n\n '<<', // left shift\n '>>', // signed right shift\n '>>>', // unsigned right shift\n\n '++', // string concatenation\n\n '<', // less than\n '<=', // less than or equal\n '>', // greater than\n '>=', // greater than or equal\n\n '==', // equal\n '!=', // not equal\n\n '&', // bitwise AND\n '^', // bitwise XOR\n '|', // bitwise OR\n\n '&&', // logical AND\n '||', // logical OR\n '??', // nullish coalescing\n] as const\n\nconst otherSymbolicOperators = [\n '=>', // lambda\n '...', // rest\n '.', // property accessor\n ',', // item separator\n '=', // property assignment\n ';', // statement terminator\n] as const\n\nconst symbolicOperators = [\n ...symbolicUnaryOperators,\n ...symbolicBinaryOperators,\n ...otherSymbolicOperators,\n] as const\n\nconst nonFunctionOperators = [\n '??',\n '&&',\n '||',\n 'comment',\n 'cond',\n 'def',\n 'defined?',\n 'defn',\n 'do',\n 'doseq',\n 'fn',\n 'if',\n 'let',\n 'loop',\n 'recur',\n 'throw',\n 'try',\n 'unless',\n 'while',\n]\n\nconst nonFunctionOperatorSet = new Set(nonFunctionOperators)\nexport function isFunctionOperator(operator: string): boolean {\n return !nonFunctionOperatorSet.has(operator)\n}\n\nexport type SymbolicUnaryOperator = typeof symbolicUnaryOperators[number]\nexport type SymbolicBinaryOperator = typeof symbolicBinaryOperators[number]\nexport type SymbolicOperator = typeof symbolicOperators[number]\n\nconst symbolicUnaryOperatorSet = new Set(symbolicUnaryOperators)\nexport function isSymbolicUnaryOperator(operator: string): operator is SymbolicUnaryOperator {\n return symbolicUnaryOperatorSet.has(operator as SymbolicUnaryOperator)\n}\nexport function assertSymbolicUnaryOperator(operator: string): asserts operator is SymbolicUnaryOperator {\n if (!isSymbolicUnaryOperator(operator)) {\n throw new LitsError(`Expected symbolic unary operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicUnaryOperator(operator: string): SymbolicUnaryOperator {\n assertSymbolicUnaryOperator(operator)\n return operator\n}\n\nconst symbolicBinaryOperatorSet = new Set(symbolicBinaryOperators)\nexport function isSymbolicBinaryOperator(operator: string): operator is SymbolicBinaryOperator {\n return symbolicBinaryOperatorSet.has(operator as SymbolicBinaryOperator)\n}\nexport function assertSymbolicBinaryOperator(operator: string): asserts operator is SymbolicBinaryOperator {\n if (!isSymbolicBinaryOperator(operator)) {\n throw new LitsError(`Expected symbolic binary operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicBinaryOperator(operator: string): SymbolicBinaryOperator {\n assertSymbolicBinaryOperator(operator)\n return operator\n}\n\nconst symbolicOperatorSet = new Set(symbolicOperators)\nexport function isSymbolicOperator(operator: string): operator is SymbolicOperator {\n return symbolicOperatorSet.has(operator as SymbolicOperator)\n}\nexport function assertSymbolicOperator(operator: string): asserts operator is SymbolicOperator {\n if (!isSymbolicOperator(operator)) {\n throw new LitsError(`Expected symbolic operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicOperator(operator: string): SymbolicOperator {\n assertSymbolicOperator(operator)\n return operator\n}\nexport type AlgebraicSimpleTokenType = typeof algebraicSimpleTokenTypes[number]\nexport type AlgebraicValueTokenType = typeof algebraicValueTokenTypes[number]\nexport type AlgebraicTokenType = typeof algebraicTokenTypes[number]\n\ntype GenericAlgebraicValueToken<T extends Exclude<AlgebraicValueTokenType, CommonValueTokenType>, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type A_WhitespaceToken = GenericAlgebraicValueToken<'A_Whitespace'>\nexport type A_NumberToken = GenericAlgebraicValueToken<'A_Number'>\nexport type A_BasePrefixedNumberToken = GenericAlgebraicValueToken<'A_BasePrefixedNumber'>\nexport type A_OperatorToken<T extends SymbolicOperator = SymbolicOperator> = GenericAlgebraicValueToken<'A_Operator', T>\nexport type A_SymbolToken<T extends string = string> = GenericAlgebraicValueToken<'A_Symbol', T>\nexport type A_ReservedSymbolToken<T extends ValidAlgebraicReservedName = ValidAlgebraicReservedName> = GenericAlgebraicValueToken<'A_ReservedSymbol', T>\nexport type A_SingleLineCommentToken = GenericAlgebraicValueToken<'A_SingleLineComment'>\nexport type A_MultiLineCommentToken = GenericAlgebraicValueToken<'A_MultiLineComment'>\n\nexport type AlgebraicOnlyValueToken =\n | A_WhitespaceToken\n | A_NumberToken\n | A_BasePrefixedNumberToken\n | A_OperatorToken\n | A_SymbolToken\n | A_ReservedSymbolToken\n | A_SingleLineCommentToken\n | A_MultiLineCommentToken\n\nexport type AlgebraicToken =\n | AlgebraicOnlyValueToken\n | CommonSimpleToken\n | CommonValueToken\n\nexport function isA_SymbolToken<T extends string>(token: Token | undefined, symbolName?: T): token is A_SymbolToken<T> {\n if (token?.[0] !== 'A_Symbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\n\nexport function assertA_SymbolToken<T extends string>(token: Token | undefined, symbolName?: T): asserts token is A_SymbolToken<T> {\n if (!isA_SymbolToken(token, symbolName)) {\n throwUnexpectedToken('A_Symbol', undefined, token)\n }\n}\nexport function asA_SymbolToken<T extends string>(token: Token | undefined, symbolName?: T): A_SymbolToken<T> {\n assertA_SymbolToken(token, symbolName)\n return token\n}\n\nexport function isA_BinaryOperatorToken(token: Token | undefined): token is A_OperatorToken<SymbolicBinaryOperator> {\n return token?.[0] === 'A_Operator' && isSymbolicBinaryOperator(token[1])\n}\nexport function assertA_BinaryOperatorToken(token: Token | undefined): asserts token is A_OperatorToken<SymbolicBinaryOperator> {\n if (!isA_BinaryOperatorToken(token)) {\n throwUnexpectedToken('A_Operator', undefined, token)\n }\n}\nexport function asA_BinaryOperatorToken(token: Token | undefined): A_OperatorToken<SymbolicBinaryOperator> {\n assertA_BinaryOperatorToken(token)\n return token\n}\n\nexport function isA_ReservedSymbolToken<T extends ValidAlgebraicReservedName>(token: Token | undefined, symbolName?: T): token is A_ReservedSymbolToken<T> {\n if (token?.[0] !== 'A_ReservedSymbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\nexport function assertA_ReservedSymbolToken<T extends ValidAlgebraicReservedName>(token: Token | undefined, symbolName?: T): asserts token is A_ReservedSymbolToken<T> {\n if (!isA_ReservedSymbolToken(token, symbolName)) {\n throwUnexpectedToken('A_ReservedSymbol', symbolName, token)\n }\n}\nexport function asA_ReservedSymbolToken<T extends ValidAlgebraicReservedName>(token: Token | undefined, symbolName?: T): A_ReservedSymbolToken<T> {\n assertA_ReservedSymbolToken(token, symbolName)\n return token\n}\n\nexport function isA_CommentToken(token: Token | undefined): token is A_SingleLineCommentToken {\n return token?.[0] === 'A_SingleLineComment'\n}\nexport function assertA_CommentToken(token: Token | undefined): asserts token is A_SingleLineCommentToken {\n if (!isA_CommentToken(token)) {\n throwUnexpectedToken('A_SingleLineComment', undefined, token)\n }\n}\nexport function asA_CommentToken(token: Token | undefined): A_SingleLineCommentToken {\n assertA_CommentToken(token)\n return token\n}\n\nexport function isA_MultiLineCommentToken(token: Token | undefined): token is A_MultiLineCommentToken {\n return token?.[0] === 'A_MultiLineComment'\n}\nexport function assertA_MultiLineCommentToken(token: Token | undefined): asserts token is A_MultiLineCommentToken {\n if (!isA_MultiLineCommentToken(token)) {\n throwUnexpectedToken('A_MultiLineComment', undefined, token)\n }\n}\nexport function asA_MultiLineCommentToken(token: Token | undefined): A_MultiLineCommentToken {\n assertA_MultiLineCommentToken(token)\n return token\n}\n\nexport function isA_OperatorToken<T extends SymbolicOperator>(token: Token | undefined, operatorName?: T): token is A_OperatorToken<T> {\n if (token?.[0] !== 'A_Operator') {\n return false\n }\n if (operatorName && token[1] !== operatorName) {\n return false\n }\n return true\n}\nexport function assertA_OperatorToken<T extends SymbolicOperator>(token: Token | undefined, operatorName?: T): asserts token is A_OperatorToken<T> {\n if (!isA_OperatorToken(token, operatorName)) {\n if (operatorName) {\n throw new LitsError(`Unexpected token: ${token}, expected operator ${operatorName}`, undefined)\n }\n throwUnexpectedToken('A_Operator', operatorName, token)\n }\n}\nexport function asA_OperatorToken<T extends SymbolicOperator>(token: Token | undefined, operatorName?: T): A_OperatorToken<T> {\n assertA_OperatorToken(token, operatorName)\n return token\n}\n\nexport function isA_WhitespaceToken(token: Token | undefined): token is A_WhitespaceToken {\n return token?.[0] === 'A_Whitespace'\n}\nexport function assertA_WhitespaceToken(token: Token | undefined): asserts token is A_WhitespaceToken {\n if (!isA_WhitespaceToken(token)) {\n throwUnexpectedToken('A_Whitespace', undefined, token)\n }\n}\nexport function asA_WhitespaceToken(token: Token | undefined): A_WhitespaceToken {\n assertA_WhitespaceToken(token)\n return token\n}\n\nexport function isA_NumberToken(token: Token | undefined): token is A_NumberToken {\n return token?.[0] === 'A_Number'\n}\nexport function assertA_NumberToken(token: Token | undefined): asserts token is A_NumberToken {\n if (!isA_NumberToken(token)) {\n throwUnexpectedToken('A_Number', undefined, token)\n }\n}\nexport function asA_NumberToken(token: Token | undefined): A_NumberToken {\n assertA_NumberToken(token)\n return token\n}\n\nexport function isA_BasePrefixedNumberToken(token: Token | undefined): token is A_BasePrefixedNumberToken {\n return token?.[0] === 'A_BasePrefixedNumber'\n}\nexport function assertA_BasePrefixedNumberToken(token: Token | undefined): asserts token is A_BasePrefixedNumberToken {\n if (!isA_BasePrefixedNumberToken(token)) {\n throwUnexpectedToken('A_BasePrefixedNumber', undefined, token)\n }\n}\nexport function asA_BasePrefixedNumberToken(token: Token | undefined): A_BasePrefixedNumberToken {\n assertA_BasePrefixedNumberToken(token)\n return token\n}\n","import type { CommonSimpleToken, CommonSimpleTokenType, CommonValueToken, CommonValueTokenType } from '../common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from '../common/commonTokens'\nimport type { Token } from '../tokens'\nimport { type TokenDebugData, throwUnexpectedToken } from '../utils'\n\nexport const modifierNames = ['&rest', '&let', '&when', '&while'] as const\nexport type ModifierName = typeof modifierNames[number]\n\nexport const polishOnlySimpleTokenTypes = [\n 'P_FnShorthand',\n] as const satisfies `P_${string}`[]\n\nexport const polishSimpleTokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n] as const\n\nexport const polishOnlyValueTokenTypes = [\n 'P_Modifier',\n 'P_StringShorthand',\n 'P_Symbol',\n 'P_ReservedSymbol',\n 'P_CollectionAccessor',\n 'P_Comment',\n 'P_Whitespace',\n 'P_Number',\n] as const satisfies `P_${string}`[]\n\nexport const polishValueTokenTypes = [\n ...commomValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\nexport const polishTokenTypes = [\n ...polishSimpleTokenTypes,\n ...polishValueTokenTypes,\n] as const\n\nexport type PolishSimpleTokenType = typeof polishSimpleTokenTypes[number]\nexport type PolishValueTokenType = typeof polishValueTokenTypes[number]\nexport type PolishTokenType = typeof polishTokenTypes[number]\n\ntype GenericPolishSimpleToken<T extends Exclude<PolishSimpleTokenType, CommonSimpleTokenType>> = [T] | [T, TokenDebugData]\ntype GenericPolishValueToken<T extends Exclude<PolishValueTokenType, CommonValueTokenType>, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type P_FnShorthandToken = GenericPolishSimpleToken<'P_FnShorthand'>\nexport type P_ModifierToken = GenericPolishValueToken<'P_Modifier', ModifierName>\nexport type P_StringShorthandToken = GenericPolishValueToken<'P_StringShorthand'>\nexport type P_SymbolToken = GenericPolishValueToken<'P_Symbol'>\nexport type P_ReservedSymbolToken = GenericPolishValueToken<'P_ReservedSymbol'>\nexport type P_CollectionAccessorToken = GenericPolishValueToken<'P_CollectionAccessor', '.' | '#'>\nexport type P_CommentToken = GenericPolishValueToken<'P_Comment'>\nexport type P_WhitespaceToken = GenericPolishValueToken<'P_Whitespace'>\nexport type P_NumberToken = GenericPolishValueToken<'P_Number'>\n\nexport type PolishOnlySimpleToken =\n | P_FnShorthandToken\n\nexport type PolishOnlyValueToken =\n | P_ModifierToken\n | P_StringShorthandToken\n | P_SymbolToken\n | P_ReservedSymbolToken\n | P_CollectionAccessorToken\n | P_CommentToken\n | P_WhitespaceToken\n | P_NumberToken\n\nexport type PolishToken =\n | PolishOnlySimpleToken\n | PolishOnlyValueToken\n | CommonSimpleToken\n | CommonValueToken\n\nexport function isP_StringShorthandToken(token?: Token): token is P_StringShorthandToken {\n return token?.[0] === 'P_StringShorthand'\n}\nexport function assertP_StringShorthandToken(token?: Token): asserts token is P_StringShorthandToken {\n if (!isP_StringShorthandToken(token)) {\n throwUnexpectedToken('P_StringShorthand', undefined, token)\n }\n}\nexport function asP_StringShorthandToken(token?: Token): P_StringShorthandToken {\n assertP_StringShorthandToken(token)\n return token\n}\n\nexport function isP_SymbolToken(token?: Token): token is P_SymbolToken {\n return token?.[0] === 'P_Symbol'\n}\nexport function assertP_SymbolToken(token?: Token): asserts token is P_SymbolToken {\n if (!isP_SymbolToken(token)) {\n throwUnexpectedToken('P_Symbol', undefined, token)\n }\n}\nexport function asP_SymbolToken(token?: Token): P_SymbolToken {\n assertP_SymbolToken(token)\n return token\n}\n\nexport function isP_ReservedSymbolToken(token?: Token): token is P_ReservedSymbolToken {\n return token?.[0] === 'P_ReservedSymbol'\n}\nexport function assertP_ReservedSymbolToken(token?: Token): asserts token is P_ReservedSymbolToken {\n if (!isP_ReservedSymbolToken(token)) {\n throwUnexpectedToken('P_ReservedSymbol', undefined, token)\n }\n}\nexport function asP_ReservedSymbolToken(token?: Token): P_ReservedSymbolToken {\n assertP_ReservedSymbolToken(token)\n return token\n}\n\nexport function isP_ModifierToken(token?: Token): token is P_ModifierToken {\n return token?.[0] === 'P_Modifier'\n}\nexport function assertP_ModifierToken(token?: Token): asserts token is P_ModifierToken {\n if (!isP_ModifierToken(token)) {\n throwUnexpectedToken('P_Modifier', undefined, token)\n }\n}\nexport function asP_ModifierToken(token?: Token): P_ModifierToken {\n assertP_ModifierToken(token)\n return token\n}\n\nexport function isP_FnShorthandToken(token?: Token): token is P_FnShorthandToken {\n return token?.[0] === 'P_FnShorthand'\n}\nexport function assertP_FnShorthandToken(token?: Token): asserts token is P_FnShorthandToken {\n if (!isP_FnShorthandToken(token)) {\n throwUnexpectedToken('P_FnShorthand', undefined, token)\n }\n}\nexport function asP_FnShorthandToken(token?: Token): P_FnShorthandToken {\n assertP_FnShorthandToken(token)\n return token\n}\n\nexport function isP_CollectionAccessorToken(token?: Token): token is P_CollectionAccessorToken {\n return token?.[0] === 'P_CollectionAccessor'\n}\nexport function assertP_CollectionAccessorToken(token?: Token): asserts token is P_CollectionAccessorToken {\n if (!isP_CollectionAccessorToken(token)) {\n throwUnexpectedToken('P_CollectionAccessor', undefined, token)\n }\n}\nexport function asP_CollectionAccessorToken(token?: Token): P_CollectionAccessorToken {\n assertP_CollectionAccessorToken(token)\n return token\n}\n\nexport function isP_CommentToken(token?: Token): token is P_CommentToken {\n return token?.[0] === 'P_Comment'\n}\nexport function assertP_CommentToken(token?: Token): asserts token is P_CommentToken {\n if (!isP_CommentToken(token)) {\n throwUnexpectedToken('P_Comment', undefined, token)\n }\n}\nexport function asP_CommentToken(token?: Token): P_CommentToken {\n assertP_CommentToken(token)\n return token\n}\n\nexport function isP_WhitespaceToken(token?: Token): token is P_WhitespaceToken {\n return token?.[0] === 'P_Whitespace'\n}\nexport function assertP_WhitespaceToken(token?: Token): asserts token is P_WhitespaceToken {\n if (!isP_WhitespaceToken(token)) {\n throwUnexpectedToken('P_Whitespace', undefined, token)\n }\n}\nexport function asP_WhitespaceToken(token?: Token): P_WhitespaceToken {\n assertP_WhitespaceToken(token)\n return token\n}\n\nexport function isP_NumberToken(token?: Token): token is P_NumberToken {\n return token?.[0] === 'P_Number'\n}\nexport function assertP_NumberToken(token?: Token): asserts token is P_NumberToken {\n if (!isP_NumberToken(token)) {\n throwUnexpectedToken('P_Number', undefined, token)\n }\n}\nexport function asP_NumberToken(token?: Token): P_NumberToken {\n assertP_NumberToken(token)\n return token\n}\n","import { LitsError } from '../errors'\nimport type { CommonSimpleToken, CommonValueToken } from './common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from './common/commonTokens'\nimport type { AlgebraicOnlyValueToken, AlgebraicSimpleTokenType, AlgebraicValueTokenType } from './algebraic/algebraicTokens'\nimport { algebraicOnlyValueTokenTypes } from './algebraic/algebraicTokens'\nimport type { PolishOnlySimpleToken, PolishOnlyValueToken, PolishSimpleTokenType, PolishValueTokenType } from './polish/polishTokens'\nimport { polishOnlySimpleTokenTypes, polishOnlyValueTokenTypes } from './polish/polishTokens'\n\nexport const simpleTokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n] as const\n\nexport const valueTokenTypes = [\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\nexport const tokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\ntype SimpleTokenType = AlgebraicSimpleTokenType | PolishSimpleTokenType\ntype ValueTokenType = AlgebraicValueTokenType | PolishValueTokenType\n\nexport type TokenType = typeof tokenTypes[number]\n\nexport type SimpleToken =\n | CommonSimpleToken\n | PolishOnlySimpleToken\n\nexport type ValueToken =\n | CommonValueToken\n | AlgebraicOnlyValueToken\n | PolishOnlyValueToken\n\nexport type Token =\n | SimpleToken\n | ValueToken\n\nexport function isTokenType(type: string): type is TokenType {\n return typeof type === 'string' && tokenTypes.includes(type as TokenType)\n}\n\nexport function isToken(token?: Token): token is Token {\n return !!token\n}\nexport function assertToken(token?: Token): asserts token is Token {\n if (!isToken(token)) {\n throw new LitsError(`Expected token, got ${token}`, undefined)\n }\n}\nexport function asToken(token?: Token): Token {\n assertToken(token)\n return token\n}\n\nexport function isSimpleToken(token?: Token): token is SimpleToken {\n return isToken(token) && simpleTokenTypes.includes(token[0] as SimpleTokenType)\n}\n\nexport function assertSimpleToken(token?: Token): asserts token is SimpleToken {\n if (!isSimpleToken(token)) {\n throw new LitsError(`Expected simple token, got ${token}`, undefined)\n }\n}\n\nexport function asSimpleToken(token?: Token): SimpleToken {\n assertSimpleToken(token)\n return token\n}\n\nexport function isValueToken(token?: Token): token is ValueToken {\n return isToken(token) && valueTokenTypes.includes(token[0] as ValueTokenType)\n}\n\nexport function assertValueToken(token?: Token): asserts token is ValueToken {\n if (!isValueToken(token)) {\n throw new LitsError(`Expected value token, got ${token}`, undefined)\n }\n}\n\nexport function asValueToken(token?: Token): ValueToken {\n assertValueToken(token)\n return token\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { astNodeTypeName, isAstNodeType, isFunctionType } from '../../constants/constants'\nimport type { AstNode, LitsFunction } from '../../parser/interface'\nimport { type Token, isTokenType } from '../../tokenizer/tokens'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (!isUnknownRecord(func))\n return false\n\n return !!func[FUNCTION_SYMBOL] && isFunctionType(func.t)\n}\n\nfunction isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isToken(value: unknown): value is Token {\n return Array.isArray(value) && value.length >= 1 && value.length <= 3 && typeof value[0] === 'string' && isTokenType(value[0])\n}\n\nfunction isAstNode(value: unknown): value is AstNode {\n return isUnknownRecord(value) && isAstNodeType(value.t)\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isToken(value))\n return `${value[0]}-token${value[1] ? `\"${value[1]}\"` : ''}`\n\n if (isAstNode(value))\n return `${astNodeTypeName.get(value.t)}-node`\n\n if (value === null)\n return 'nil'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n '<<': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n paramCount: 2,\n },\n '>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n paramCount: 2,\n },\n '>>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >>> count\n },\n paramCount: 2,\n },\n '~': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n paramCount: 1,\n },\n '&': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '&!': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '|': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '^': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit_flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n paramCount: 2,\n },\n 'bit_set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n paramCount: 2,\n },\n 'bit_clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n paramCount: 2,\n },\n 'bit_test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n paramCount: 2,\n },\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { AstNodeType, isAstNodeType } from '../constants/constants'\nimport type {\n AstNode,\n ExpressionNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n SymbolNode,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isAstNode(value: unknown): value is AstNode {\n if (value === null || typeof value !== 'object')\n return false\n\n if (!isAstNodeType((value as AstNode).t))\n return false\n\n return true\n}\nexport function asAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): AstNode {\n assertAstNode(value, sourceCodeInfo)\n return value\n}\nexport function assertAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is AstNode {\n if (!isAstNode(value))\n throw getAssertionError('AstNode', value, sourceCodeInfo)\n}\n\nexport function isSymbolNode(value: unknown): value is SymbolNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.Symbol\n}\nexport function asSymbolNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(value, sourceCodeInfo)\n return value\n}\nexport function assertSymbolNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is SymbolNode {\n if (!isSymbolNode(value))\n throw getAssertionError('SymbolNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNode(value: unknown): value is NormalExpressionNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression\n}\nexport function asNormalExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNode(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNode {\n if (!isNormalExpressionNode(value))\n throw getAssertionError('NormalExpressionNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(value: unknown): value is NormalExpressionNodeWithName {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression && typeof value.n === 'string'\n}\nexport function asNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(value))\n throw getAssertionError('NormalExpressionNodeWithName', value, sourceCodeInfo)\n}\n\nexport function isExpressionNode(value: unknown): value is ExpressionNode {\n if (!isAstNode(value))\n return false\n\n return (\n value.t === AstNodeType.NormalExpression\n || value.t === AstNodeType.SpecialExpression\n || value.t === AstNodeType.Number\n || value.t === AstNodeType.String\n )\n}\nexport function asExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is ExpressionNode {\n if (!isExpressionNode(value))\n throw getAssertionError('ExpressionNode', value, sourceCodeInfo)\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../builtin/specialExpressions/declared'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../builtin/specialExpressions/loops'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { RemoveOptions } from '.'\n\nconst specialExpressionCommentRemovers = {\n '&&': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'comment': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'cond': (node: CondNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'switch': (node: SwitchNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defined?': (node: DeclaredNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defn': (_node: DefnNode, _removeOptions: RemoveOptions) => {},\n 'def': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'do': (node: DoNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'doseq': (_node: DoSeqNode, _removeOptions: RemoveOptions) => {},\n 'fn': (_node: FnNode, _removeOptions: RemoveOptions) => {},\n 'for': (_node: ForNode, _removeOptions: RemoveOptions) => {},\n 'if': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'unless': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'let': (node: LetNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n node.bs.forEach((bindingNode) => {\n removeOptions.recursivelyRemoveCommentNodes(bindingNode.v)\n })\n },\n 'loop': (_node: LoopNode, _removeOptions: RemoveOptions) => {},\n '||': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n '??': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'recur': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'throw': (node: ThrowNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'try': (_node: TryNode, _removeOptions: RemoveOptions) => {},\n} satisfies Record<SpecialExpressionName, (astNode: any, removeOptions: RemoveOptions) => void>\n\nexport function removeCommentNodesFromSpecialExpression(\n node: SpecialExpressionNode,\n removeOptions: RemoveOptions,\n) {\n const uncommenter = specialExpressionCommentRemovers[node.n as '&&']\n return uncommenter?.(node as AndNode, removeOptions)\n}\n","import { AstNodeType } from '../constants/constants'\nimport type { Ast, AstNode } from '../parser/interface'\nimport { isNormalExpressionNode } from '../typeGuards/astNode'\nimport { removeCommentNodesFromSpecialExpression } from './removeCommentNodesFromSpecialExpression'\n\nconst removeOptions = {\n recursivelyRemoveCommentNodes,\n removeCommenNodesFromArray,\n} as const\n\nexport type RemoveOptions = typeof removeOptions\n\nexport function removeCommenNodes(ast: Ast): void {\n removeCommenNodesFromArray(ast.b)\n ast.b.forEach(recursivelyRemoveCommentNodes)\n}\n\nfunction recursivelyRemoveCommentNodes(astNode: AstNode) {\n if (isNormalExpressionNode(astNode)) {\n removeCommenNodesFromArray(astNode.p)\n astNode.p.forEach(recursivelyRemoveCommentNodes)\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n removeCommentNodesFromSpecialExpression(astNode, removeOptions)\n }\n}\n\nfunction removeCommenNodesFromArray(astNodes: AstNode[]): void {\n let i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n while (i >= 0) {\n astNodes.splice(i, 1)\n i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n }\n}\n\nexport function withoutCommentNodes(astNodes: AstNode[]) {\n return astNodes.filter(n => n.t !== AstNodeType.Comment)\n}\n","import type { Count } from '../builtin/interface'\nimport { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { GenericNode } from '../parser/interface'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertNumberOfParams(count: Count, node: GenericNode): void {\n assertCount({\n count,\n length: withoutCommentNodes(node.p).length,\n name: node.n ?? 'expression',\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n })\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nfunction assertCount({ count, length, name, sourceCodeInfo }: { name: string | undefined, count: Count, length: number, sourceCodeInfo?: SourceCodeInfo }): void {\n if (typeof count === 'number') {\n if (length !== count) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n else {\n const { min, max, even, odd } = count\n if (even) {\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an even number, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n\n if (odd) {\n if (length % 2 !== 1) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an odd number, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n\n if (typeof min === 'number' && length < min) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at least ${min}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n\n if (typeof max === 'number' && length > max) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { BuiltinFunction, LitsFunction, NativeJsFunction, UserDefinedFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.t === FunctionType.UserDefined\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.t === FunctionType.NativeJsFunction\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is BuiltinFunction {\n return isUnknownRecord(value) && value.t === FunctionType.Builtin\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Arr, Coll, Obj } from '../interface'\nimport type { NativeJsFunction, RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { FunctionType } from '../constants/constants'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\ntype Type = 'null' | 'boolean' | 'number' | 'string' | 'object' | 'array' | 'regexp' | 'unknown'\n\nconst sortOrderByType: Record<Type, number> = {\n boolean: 0,\n number: 1,\n string: 2,\n array: 3,\n object: 4,\n regexp: 5,\n unknown: 6,\n null: 7,\n}\n\nfunction getType(value: unknown): Type {\n if (value === null)\n return 'null'\n else if (typeof value === 'boolean')\n return 'boolean'\n else if (typeof value === 'number')\n return 'number'\n else if (typeof value === 'string')\n return 'string'\n else if (Array.isArray(value))\n return 'array'\n else if (isObj(value))\n return 'object'\n else if (isRegularExpression(value))\n return 'regexp'\n else\n return 'unknown'\n}\n\nexport function compare(a: unknown, b: unknown): number {\n const aType = getType(a)\n const bType = getType(b)\n if (aType !== bType)\n return Math.sign(sortOrderByType[aType] - sortOrderByType[bType])\n\n switch (aType) {\n case 'null':\n return 0\n case 'boolean':\n if (a === b)\n return 0\n\n return a === false ? -1 : 1\n case 'number':\n return Math.sign((a as number) - (b as number))\n case 'string': {\n const aString = a as string\n const bString = b as string\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'array': {\n const aArray = a as Arr\n const bArray = b as Arr\n if (aArray.length < bArray.length)\n return -1\n else if (aArray.length > bArray.length)\n return 1\n\n for (let i = 0; i < aArray.length; i += 1) {\n const innerComp = compare(aArray[i], bArray[i])\n if (innerComp !== 0)\n return innerComp\n }\n return 0\n }\n case 'object': {\n const aObj = a as Obj\n const bObj = b as Obj\n return Math.sign(Object.keys(aObj).length - Object.keys(bObj).length)\n }\n case 'regexp': {\n const aString = (a as RegularExpression).s\n const bString = (b as RegularExpression).s\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'unknown':\n return 0\n }\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n f: {\n fn,\n },\n n: name,\n t: FunctionType.NativeJsFunction,\n }\n}\n\nexport function arrayToPairs<T>(arr: T[]): T[][] {\n const pairs: T[][] = []\n for (let i = 0; i < arr.length; i += 2)\n pairs.push([arr[i]!, arr[i + 1]!])\n\n return pairs\n}\n","import type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { LitsFunction } from '../../..'\nimport type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { cloneColl, collHasKey, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asColl, assertAny, assertColl, assertObj, assertSeq, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString } from '../../../typeGuards/string'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'get_in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // nil behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n paramCount: { min: 2, max: 3 },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n paramCount: 1,\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isSeq(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n assertNumber(key, sourceCodeInfo, { integer: true })\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n },\n paramCount: 2,\n },\n 'has?': {\n evaluate: ([coll, value], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.includes(value)\n\n if (typeof coll === 'string') {\n if (typeof value === 'string') {\n return coll.includes(value)\n }\n else if (typeof value === 'number') {\n return coll.includes(`${value}`)\n }\n return false\n }\n\n return Object.values(coll).includes(value)\n },\n paramCount: 2,\n },\n 'has_some?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null || seq === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (coll.includes(value))\n return true\n }\n return false\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (isString(value, { char: true }) ? coll.split('').includes(value) : false)\n return true\n }\n return false\n }\n for (const value of seq) {\n if (Object.values(coll).includes(value))\n return true\n }\n return false\n },\n paramCount: 2,\n },\n 'has_every?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (seq === null)\n return true\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (!coll.includes(value))\n return false\n }\n return true\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (!isString(value, { char: true }) || !coll.split('').includes(value))\n return false\n }\n return true\n }\n for (const value of seq) {\n if (!Object.values(coll).includes(value))\n return false\n }\n return true\n },\n paramCount: 2,\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n paramCount: 3,\n },\n 'assoc_in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n paramCount: 3,\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n paramCount: { min: 3 },\n },\n 'update_in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n paramCount: { min: 3 },\n },\n 'concat': {\n evaluate: (params, sourceCodeInfo): Any => {\n assertColl(params[0], sourceCodeInfo)\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isString(params[0])) {\n return params.reduce((result: string, s) => {\n assertString(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n paramCount: { min: 1 },\n },\n 'not_empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n paramCount: 1,\n },\n 'every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertColl(coll, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not_any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not_every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n array: {\n evaluate: (params): Arr => params,\n paramCount: {},\n },\n\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n paramCount: { min: 1, max: 3 },\n },\n\n repeat: {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n paramCount: 2,\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n paramCount: 1,\n },\n mapcat: {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n paramCount: 2,\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { collHasKey, compare, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n paramCount: { min: 2, max: 3 },\n },\n 'filter': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n paramCount: 1,\n },\n 'map': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }) => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n return seq.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return seq\n .split('')\n .map((elem) => {\n const newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo, { char: true })\n return newVal\n })\n .join('')\n }\n },\n paramCount: 2,\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index_of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last_index_of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (seq.length === 1)\n return [toAny(seq[0])]\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(seq[0])]\n seq.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(seq[0]))\n return resultArray\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return seq.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(seq[0]))\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce_right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'nthrest': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substring(integerCount)\n },\n paramCount: 2,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'nthnext': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (seq.length <= count)\n return null\n\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substring(integerCount)\n },\n paramCount: 2,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n\n if (params.length === 1)\n return seq\n\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n paramCount: { min: 1, max: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort_by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertAny(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take_last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take_while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop_last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop_while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return Array.from(new Set(input))\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove_at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n\n const intIndex = Math.ceil(index)\n if (intIndex < 0 || intIndex >= input.length)\n return input\n\n if (Array.isArray(input)) {\n const copy = [...input]\n copy.splice(index, 1)\n return copy\n }\n return `${input.substring(0, index)}${input.substring(index + 1)}`\n },\n paramCount: 2,\n },\n 'split_at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { finite: true })\n const intPos = toNonNegativeInteger(pos)\n assertSeq(seq, sourceCodeInfo)\n return [seq.slice(0, intPos), seq.slice(intPos)]\n },\n paramCount: 2,\n },\n\n 'split_with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group_by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition_all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition_by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends_with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return str.at(-1) === search\n },\n paramCount: 2,\n },\n 'starts_with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.startsWith(search)\n }\n\n return str[0] === search\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.split('')\n\n return seq\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n paramCount: {},\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n 'sqrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n paramCount: 1,\n },\n\n 'cbrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n paramCount: 1,\n },\n\n '**': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n paramCount: 1,\n },\n\n 'max_safe_integer': {\n evaluate: (): number => {\n return Number.MAX_SAFE_INTEGER\n },\n paramCount: 0,\n },\n\n 'min_safe_integer': {\n evaluate: (): number => {\n return Number.MIN_SAFE_INTEGER\n },\n paramCount: 0,\n },\n\n 'max_value': {\n evaluate: (): number => {\n return Number.MAX_VALUE\n },\n paramCount: 0,\n },\n\n 'min_value': {\n evaluate: (): number => {\n return Number.MIN_VALUE\n },\n paramCount: 0,\n },\n\n 'epsilon': {\n evaluate: (): number => {\n return Number.EPSILON\n },\n paramCount: 0,\n },\n\n 'positive_infinity': {\n evaluate: (): number => {\n return Number.POSITIVE_INFINITY\n },\n paramCount: 0,\n },\n\n 'negative_infinity': {\n evaluate: (): number => {\n return Number.NEGATIVE_INFINITY\n },\n paramCount: 0,\n },\n\n 'nan': {\n evaluate: (): number => {\n return Number.NaN\n },\n paramCount: 0,\n },\n\n 'e': {\n evaluate: (): number => {\n return Math.E\n },\n paramCount: 0,\n },\n\n 'pi': {\n evaluate: (): number => {\n return Math.PI\n },\n paramCount: 0,\n },\n\n 'exp': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.exp(value)\n },\n paramCount: 1,\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n paramCount: 1,\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n paramCount: 1,\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '!=': {\n evaluate: (params): boolean => {\n for (let i = 0; i < params.length - 1; i += 1) {\n for (let j = i + 1; j < params.length; j += 1) {\n if (params[i] === params[j])\n return false\n }\n }\n\n return true\n },\n paramCount: { min: 1 },\n },\n '==': {\n evaluate: ([first, ...rest]): boolean => {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n },\n paramCount: { min: 1 },\n },\n 'equal?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n return deepEqual(asAny(a, sourceCodeInfo), asAny(b, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) <= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) >= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '>=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) < 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) > 0)\n return false\n\n currentValue = param\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch>iso_date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso_date>epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b]): number => {\n return compare(a, b)\n },\n paramCount: 2,\n },\n 'json_parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json_stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== second)\n throw new AssertionError(`Expected ${first} to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first === second)\n throw new AssertionError(`Expected ${first} not to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected\\n${JSON.stringify(first, null, 2)}\\nto deep equal\\n${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_not_equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be nil.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert_throws_error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert_not_throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n object: {\n evaluate: (params, sourceCodeInfo): Obj => {\n const result: Obj = {}\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value\n }\n return result\n },\n paramCount: { even: true },\n },\n\n keys: {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n vals: {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n entries: {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n find: {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n dissoc: {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n merge: {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n merge_with: {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n zipmap: {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n select_keys: {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'nil?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not_empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n}\n","import type { RegularExpression } from '../../../parser/interface'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n regexp: {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n match: {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n replace: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n replace_all: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'subs': {\n evaluate: ([first, second, third], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo, { integer: true, nonNegative: true })\n\n if (third === undefined)\n return (first).substring(second)\n\n assertNumber(third, sourceCodeInfo, { gte: second })\n return (first).substring(second, third)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'string_repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from_char_code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to_char_code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower_case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper_case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim_left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim_right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n '++': {\n evaluate: (params, sourceCodeInfo): string => {\n if (params.length === 0) {\n return ''\n }\n const first = params[0]\n if (first !== null) {\n assertStringOrNumber(first, sourceCodeInfo)\n }\n if (params.length === 1) {\n return first === null ? '' : `${first}`\n }\n\n return params.slice(1).reduce((acc: string, str) => {\n if (str !== null) {\n assertStringOrNumber(str, sourceCodeInfo)\n }\n if (str === null) {\n return acc\n }\n return `${acc}${str}`\n }, first === null ? '' : `${first}`)\n },\n paramCount: {},\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertString(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split_lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad_left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad_right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode_base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode_base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode_uri_component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode_uri_component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import { FunctionType } from '../../../constants/constants'\nimport type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/interface'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n apply: {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n identity: {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n partial: {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Partial,\n f: toAny(fn),\n p: params,\n }\n },\n paramCount: { min: 1 },\n },\n\n comp: {\n evaluate: (fns, sourceCodeInfo): CompFunction => {\n if (fns.length > 1) {\n const last = fns[fns.length - 1]\n if (Array.isArray(last))\n // eslint-disable-next-line ts/no-unsafe-assignment\n fns = [...fns.slice(0, -1), ...last]\n }\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Comp,\n f: fns,\n }\n },\n paramCount: {},\n },\n\n constantly: {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Constantly,\n v: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n juxt: {\n evaluate: (fns, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Juxt,\n f: fns,\n }\n },\n paramCount: { min: 1 },\n },\n\n complement: {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Complement,\n f: toAny(fn),\n }\n },\n paramCount: 1,\n },\n\n every_pred: {\n evaluate: (fns, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.EveryPred,\n f: fns,\n }\n },\n paramCount: { min: 1 },\n },\n\n some_pred: {\n evaluate: (fns, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.SomePred,\n f: fns,\n }\n },\n paramCount: { min: 1 },\n },\n\n fnil: {\n evaluate: ([fn, ...params], sourceCodeInfo): FNilFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Fnil,\n f: toAny(fn),\n p: params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","import type { BuiltinNormalExpressions } from '../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface AndNode extends CommonSpecialExpressionNode<'&&'> {}\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: AndNode = {\n t: AstNodeType.SpecialExpression,\n n: '&&',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = true\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { CommonSpecialExpressionName, GenericCommonSpecialExpressionNode } from '..'\nimport { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport function getCommonPolishSpecialExpressionParser<T extends CommonSpecialExpressionName>(name: T): BuiltinSpecialExpression<Any, GenericCommonSpecialExpressionNode<T>>['polishParse'] {\n return (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n return {\n t: AstNodeType.SpecialExpression,\n n: name,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n } as unknown as GenericCommonSpecialExpressionNode<T>\n }\n}\n","import type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface CommentExpressionNode extends CommonSpecialExpressionNode<'comment'> {}\n\nexport const commentSpecialExpression: BuiltinSpecialExpression<null, CommentExpressionNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('comment'),\n paramCount: {},\n evaluate: () => null,\n findUnresolvedIdentifiers: () => new Set(),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { arrayToPairs } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface CondNode extends CommonSpecialExpressionNode<'cond'> {}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('cond'),\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const [test, form] of arrayToPairs(node.p)) {\n const value = evaluateAstNode(test!, contextStack)\n if (!value)\n continue\n\n return evaluateAstNode(form!, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { arrayToPairs } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface SwitchNode extends CommonSpecialExpressionNode<'switch'> {}\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('switch'),\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const switchValue = evaluateAstNode(node.p[0]!, contextStack)\n for (const [test, form] of arrayToPairs(node.p.slice(1))) {\n const value = evaluateAstNode(test!, contextStack)\n if (value === switchValue) {\n return evaluateAstNode(form!, contextStack)\n }\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface DeclaredNode extends CommonSpecialExpressionNode<'defined?'> {}\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('defined?'),\n paramCount: 1,\n evaluate: (node, contextStack) => {\n const lookUpResult = contextStack.lookUp(node.p[0] as SymbolNode)\n return lookUpResult !== null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\n\nexport const polishReservedNamesRecord: Record<string, { value: Any, forbidden?: true }> = {\n true: { value: true },\n false: { value: false },\n nil: { value: null },\n null: { value: null },\n} as const\n\nexport type PolishReservedName = keyof typeof polishReservedNamesRecord\n\nexport const polishReservedNames: PolishReservedName[] = Object.keys(polishReservedNamesRecord)\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode, BindingNode } from '../parser/interface'\nimport { polishReservedNamesRecord } from '../tokenizer/polish/polishReservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport type { Builtin } from './interface'\nimport type { SpecialExpressionName } from '.'\n\nexport type Arity = number | { min: number }\n\nexport interface FunctionOverload {\n as: FunctionArguments\n a: Arity\n b: AstNode[]\n}\n\nexport interface FunctionArguments {\n m: string[]\n r?: string\n b: BindingNode[]\n}\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n if (builtin.specialExpressions[name as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-member-access\n if ((polishReservedNamesRecord as any)[name])\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asAstNode, asSymbolNode, assertSymbolNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefNode extends CommonSpecialExpressionNode<'def'> {}\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefNode = {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertSymbolNode(node.p[0], getTokenDebugData(node.token)?.sourceCodeInfo)\n\n return node\n },\n paramCount: 2,\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = (node.p[0] as SymbolNode).v\n\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n\n contextStack.exportValue(name, evaluateAstNode(node.p[1]!, contextStack))\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const subNode = asAstNode(node.p[1])\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = asSymbolNode(node.p[0]).v\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.exportValue(name, true)\n return result\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface DoNode extends CommonSpecialExpressionNode<'do'> {}\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('do'),\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n return findUnresolvedIdentifiers(node.p, contextStack.create({}), builtin)\n },\n}\n","import type { UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport function joinAnalyzeResults(...results: UnresolvedIdentifiers[]): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n for (const identifier of results)\n identifier.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addAnalyzeResults(target: UnresolvedIdentifiers, source: UnresolvedIdentifiers): void {\n source.forEach(symbol => target.add(symbol))\n}\n\nexport function combinate<T>(arrays: T[][]): T[][] {\n return arrays.reduce((acc: T[][], curr) => {\n return acc.flatMap(a => curr.map(c => [...a, c]))\n }, [[]])\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { addAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, FunctionType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type {\n AstNode,\n BindingNode,\n CommonSpecialExpressionNode,\n EvaluatedFunctionOverload,\n LitsFunction,\n ParseState,\n SymbolNode,\n} from '../../parser/interface'\nimport { asLBracketToken, assertRParenToken, isLBracketToken, isLParenToken, isRBracketToken, isRParenToken } from '../../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertSymbolNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport type { Arity, FunctionArguments, FunctionOverload } from '../utils'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefnNode extends CommonSpecialExpressionNode<'defn'> {\n f: SymbolNode\n o: FunctionOverload[]\n}\n\nexport interface FnNode extends CommonSpecialExpressionNode<'fn'> {\n p: AstNode[]\n o: FunctionOverload[]\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseToken } = parsers\n const functionName = parseToken(tokenStream, parseState)\n assertSymbolNode(functionName, getTokenDebugData(functionName.token)?.sourceCodeInfo)\n\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: functionName,\n p: [],\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = node.f.v\n\n assertNameNotDefined(name, contextStack, builtin, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.exportValue(name, litsFunction)\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n contextStack.exportValue(node.f.v, true)\n const newContext: Context = { [node.f.v]: { value: true } }\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: undefined,\n o: evaluatedFunctionOverloades,\n }\n\n return litsFunction\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) =>\n addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nfunction evaluateFunctionOverloades(\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): EvaluatedFunctionOverload[] {\n const evaluatedFunctionOverloades: EvaluatedFunctionOverload[] = []\n for (const functionOverload of (node as DefnNode | FnNode).o) {\n const functionContext: Context = {}\n for (const binding of functionOverload.as.b) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, contextStack)\n functionContext[binding.n] = { value: bindingValue }\n }\n\n const evaluatedFunctionOverload: EvaluatedFunctionOverload = {\n as: {\n mandatoryArguments: functionOverload.as.m,\n restArgument: functionOverload.as.r,\n },\n a: functionOverload.a,\n b: functionOverload.b,\n f: functionContext,\n }\n\n evaluatedFunctionOverloades.push(evaluatedFunctionOverload)\n }\n return evaluatedFunctionOverloades\n}\n\nfunction addOverloadsUnresolvedIdentifiers(\n overloads: FunctionOverload[],\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n functionNameContext?: Context,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n for (const overload of overloads) {\n const newContext: Context = {}\n overload.as.b.forEach((binding) => {\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n addAnalyzeResults(result, bindingResult)\n newContext[binding.n] = { value: true }\n })\n overload.as.m.forEach((arg) => {\n newContext[arg] = { value: true }\n })\n if (typeof overload.as.r === 'string')\n newContext[overload.as.r] = { value: true }\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = findUnresolvedIdentifiers(overload.b, newContextStack, builtin)\n addAnalyzeResults(result, overloadResult)\n }\n return result\n}\n\nfunction arityOk(overloadedFunctions: FunctionOverload[], arity: Arity) {\n if (typeof arity === 'number') {\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a !== arity\n\n return fun.a.min > arity\n })\n }\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a < arity.min\n\n return false\n })\n}\n\nfunction parseFunctionBody(\n tokenStream: TokenStream,\n parseState: ParseState,\n { parseToken }: ParserHelpers,\n): AstNode[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const body: AstNode[] = []\n while (!isRParenToken(tkn)) {\n body.push(parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n if (body.length === 0)\n throw new LitsError('Missing body in function', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n return body\n}\n\nfunction parseFunctionOverloades(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): FunctionOverload[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n if (isLParenToken(tkn)) {\n const functionOverloades: FunctionOverload[] = []\n while (!isRParenToken(tkn)) {\n parseState.position++\n tkn = asLBracketToken(tokenStream.tokens[parseState.position])\n const functionArguments = parseFunctionArguments(tokenStream, parseState, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n\n if (!arityOk(functionOverloades, arity))\n throw new LitsError('All overloaded functions must have different arity', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n const functionBody = parseFunctionBody(tokenStream, parseState, parsers)\n functionOverloades.push({\n as: functionArguments,\n b: functionBody,\n a: arity,\n })\n\n tkn = asToken(tokenStream.tokens[++parseState.position])\n if (!isRParenToken(tkn) && !isLParenToken(tkn))\n throw new LitsError(`Expected ( or ) token, got ${valueToString(tkn)}.`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n\n return functionOverloades\n }\n else if (isLBracketToken(tkn)) {\n const functionArguments = parseFunctionArguments(tokenStream, parseState, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n const functionBody = parseFunctionBody(tokenStream, parseState, parsers)\n return [\n {\n as: functionArguments,\n b: functionBody,\n a: arity,\n },\n ]\n }\n else {\n throw new LitsError(`Expected [ or ( token, got ${valueToString(tkn)}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n}\n\nfunction parseFunctionArguments(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): FunctionArguments {\n const { parseArgument, parseBindings } = parsers\n\n let bindings: BindingNode[] = []\n let restArgument: string | undefined\n const mandatoryArguments: string[] = []\n let state: 'mandatory' | 'rest' | 'let' = 'mandatory'\n let tkn = asToken(tokenStream.tokens[++parseState.position])\n\n // let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRBracketToken(tkn)) {\n if (state === 'let') {\n bindings = parseBindings(tokenStream, parseState)\n break\n }\n else {\n const node = parseArgument(tokenStream, parseState)\n tkn = asToken(tokenStream.tokens[parseState.position])\n\n if (node.t === AstNodeType.Modifier) {\n switch (node.v) {\n case '&rest':\n if (state === 'rest')\n throw new LitsError('& can only appear once', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n state = 'rest'\n break\n case '&let':\n if (state === 'rest' && !restArgument)\n throw new LitsError('No rest argument was specified', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n state = 'let'\n break\n default:\n throw new LitsError(`Illegal modifier: ${node.v}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n }\n else {\n switch (state) {\n case 'mandatory':\n mandatoryArguments.push(node.n)\n break\n case 'rest':\n if (restArgument !== undefined)\n throw new LitsError('Can only specify one rest argument', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n restArgument = node.n\n break\n }\n }\n }\n }\n parseState.position += 1\n\n if (state === 'rest' && restArgument === undefined)\n throw new LitsError('Missing rest argument name', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n const args: FunctionArguments = {\n m: mandatoryArguments,\n r: restArgument,\n b: bindings,\n }\n\n return args\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface IfNode extends CommonSpecialExpressionNode<'if'> {}\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('if'),\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface UnlessNode extends CommonSpecialExpressionNode<'unless'> {}\n\nexport const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('unless'),\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (!evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LetNode extends CommonSpecialExpressionNode<'let'> {\n bs: BindingNode[]\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n // const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [],\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n paramCount: 0,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const binding of node.bs) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, contextStack)\n contextStack.addValue(binding.n, bindingValue)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n const bindingResults = node.bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = findUnresolvedIdentifiers([valueNode], contextStack, builtin)\n contextStack.addValue(bindingNode.n, { value: true })\n return bindingsResult\n })\n\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(...bindingResults, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny } from '../../typeGuards/lits'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LoopNode extends CommonSpecialExpressionNode<'loop'> {\n bs: BindingNode[]\n}\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket, parseBindings }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: LoopNode = {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const bindingContext: Context = node.bs.reduce((result: Context, binding) => {\n result[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n for (;;) {\n let result: Any = null\n try {\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== node.bs.length) {\n throw new LitsError(\n `recur expected ${node.bs.length} parameters, got ${valueToString(params.length)}`,\n sourceCodeInfo,\n )\n }\n ;node.bs.forEach((binding, index) => {\n asNonUndefined(bindingContext[binding.n], sourceCodeInfo).value = asAny(params[index], sourceCodeInfo)\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n\n const bindingValueNodes = node.bs.map(binding => binding.v)\n const bindingsResult = findUnresolvedIdentifiers(bindingValueNodes, contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingsResult, paramsResult)\n },\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode, ParseState } from '../../parser/interface'\nimport { assertLBracketToken, assertRParenToken, isRBracketToken } from '../../tokenizer/common/commonTokens'\nimport type { SourceCodeInfo, TokenStream } from '../../tokenizer/interface'\nimport { isP_ModifierToken } from '../../tokenizer/polish/polishTokens'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\n\nexport interface ForNode extends CommonSpecialExpressionNode<'for'> {\n l: LoopBindingNode[]\n}\n\nexport interface DoSeqNode extends CommonSpecialExpressionNode<'doseq'> {\n l: LoopBindingNode[]\n}\n\ntype LoopNode = ForNode | DoSeqNode\n\nexport interface LoopBindingNode {\n b: BindingNode // Binding\n m: Array<'&let' | '&when' | '&while'> // Modifiers\n l?: BindingNode[] // Let-Bindings\n wn?: AstNode // When Node\n we?: AstNode // While Node\n}\n\nfunction parseLoopBinding(\n tokenStream: TokenStream,\n parseState: ParseState,\n { parseBinding, parseBindings, parseToken }: ParserHelpers,\n): LoopBindingNode {\n const bindingNode = parseBinding(tokenStream, parseState)\n\n const loopBinding: LoopBindingNode = {\n b: bindingNode,\n m: [],\n }\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (isP_ModifierToken(tkn)) {\n const modifier = tkn[1]\n switch (modifier) {\n case '&let':\n if (loopBinding.l) {\n throw new LitsError('Only one &let modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.l = parseBindings(tokenStream, parseState)\n loopBinding.m.push('&let')\n break\n case '&when':\n if (loopBinding.wn) {\n throw new LitsError('Only one &when modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.wn = parseToken(tokenStream, parseState)\n loopBinding.m.push('&when')\n break\n case '&while':\n if (loopBinding.we) {\n throw new LitsError('Only one &while modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.we = parseToken(tokenStream, parseState)\n loopBinding.m.push('&while')\n break\n case '&rest':\n throw new LitsError(`Illegal modifier: ${modifier}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n default:\n throw new LitsError(`Illegal modifier: ${modifier satisfies never}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n return loopBinding\n}\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n for (const binding of bindings) {\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n }\n}\n\nfunction parseLoopBindings(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): LoopBindingNode[] {\n assertLBracketToken(tokenStream.tokens[parseState.position++])\n\n const loopBindings: LoopBindingNode[] = []\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRBracketToken(tkn)) {\n loopBindings.push(parseLoopBinding(tokenStream, parseState, parsers))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n return loopBindings\n}\nfunction evaluateLoop(\n returnResult: boolean,\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n) {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const { l: loopBindings, p: params } = node as LoopNode\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const {\n b: binding,\n l: letBindings,\n wn: whenNode,\n we: whileNode,\n m: modifiers,\n } = asNonUndefined(loopBindings[bindingIndex], sourceCodeInfo)\n const coll = asColl(evaluateAstNode(binding.v, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = {\n value: asAny(seq[index], sourceCodeInfo),\n }\n for (const modifier of modifiers) {\n switch (modifier) {\n case '&let':\n addToContext(\n asNonUndefined(letBindings, sourceCodeInfo),\n context,\n newContextStack,\n evaluateAstNode,\n sourceCodeInfo,\n )\n break\n case '&when':\n if (!evaluateAstNode(asAstNode(whenNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n break\n case '&while':\n if (!evaluateAstNode(asAstNode(whileNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n break\n }\n }\n }\n if (!skip) {\n const value = evaluateAstNode(params[0]!, newContextStack)\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n return returnResult ? result : null\n}\n\nfunction analyze(\n node: LoopNode,\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const newContext: Context = {}\n const { l: loopBindings } = node\n loopBindings.forEach((loopBinding) => {\n const { b: binding, l: letBindings, wn: whenNode, we: whileNode } = loopBinding\n findUnresolvedIdentifiers([binding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[binding.n] = { value: true }\n if (letBindings) {\n letBindings.forEach((letBinding) => {\n findUnresolvedIdentifiers([letBinding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[letBinding.n] = { value: true }\n })\n }\n if (whenNode) {\n findUnresolvedIdentifiers([whenNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n findUnresolvedIdentifiers([whileNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n const loopBindings = parseLoopBindings(tokenStream, parseState, parsers)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: ForNode = {\n n: 'for',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateAstNode),\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n const loopBindings = parseLoopBindings(tokenStream, parseState, parsers)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DoSeqNode = {\n n: 'doseq',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateAstNode)\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface OrNode extends CommonSpecialExpressionNode<'||'> {}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('||'),\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = false\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { isSymbolNode } from '../../typeGuards/astNode'\nimport { assertAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface QqNode extends CommonSpecialExpressionNode<'??'> {}\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('??'),\n paramCount: { min: 1, max: 2 },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [firstNode, secondNode] = node.p\n\n if (isSymbolNode(firstNode)) {\n if (contextStack.lookUp(firstNode) === null)\n return secondNode ? evaluateAstNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, getTokenDebugData(node.token)?.sourceCodeInfo)\n const firstResult = evaluateAstNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateAstNode(secondNode, contextStack) : null)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport { RecurSignal } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface RecurNode extends CommonSpecialExpressionNode<'recur'> {}\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: RecurNode = {\n t: AstNodeType.SpecialExpression,\n n: 'recur',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: {},\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n throw new RecurSignal(params)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { UserDefinedError } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface ThrowNode extends CommonSpecialExpressionNode<'throw'> {}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('throw'),\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const message = asString(evaluateAstNode(node.p[0]!, contextStack), getTokenDebugData(node.token)?.sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, getTokenDebugData(node.token)?.sourceCodeInfo)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertLParenToken, assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertSymbolNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport { getSourceCodeInfo } from '../../utils/debug/getSourceCodeInfo'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TryNode extends CommonSpecialExpressionNode<'try'> {\n e: SymbolNode | undefined\n ce: AstNode\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseToken }) => {\n const tryExpression = parseToken(tokenStream, parseState)\n\n assertLParenToken(tokenStream.tokens[parseState.position++])\n\n const catchNode = parseToken(tokenStream, parseState)\n assertSymbolNode(catchNode, getTokenDebugData(catchNode.token)?.sourceCodeInfo)\n if (catchNode.v !== 'catch') {\n throw new LitsError(\n `Expected 'catch', got '${catchNode.v}'.`,\n getSourceCodeInfo(catchNode, getTokenDebugData(catchNode.token)?.sourceCodeInfo),\n )\n }\n\n const error = parseToken(tokenStream, parseState)\n assertSymbolNode(error, getTokenDebugData(error.token)?.sourceCodeInfo)\n\n const catchExpression = parseToken(tokenStream, parseState)\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: TryNode = {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [tryExpression],\n ce: catchExpression,\n e: error,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n try {\n return evaluateAstNode(tryExpressions[0]!, contextStack)\n }\n catch (error) {\n const newContext: Context = errorNode\n ? {\n [errorNode.v]: { value: asAny(error, getTokenDebugData(node.token)?.sourceCodeInfo) },\n }\n : {}\n return evaluateAstNode(catchExpression, contextStack.create(newContext))\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n const tryResult = findUnresolvedIdentifiers(tryExpressions, contextStack, builtin)\n const newContext: Context = errorNode\n ? {\n [errorNode.v]: { value: true },\n }\n : {}\n const catchResult = findUnresolvedIdentifiers([catchExpression], contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import type { Builtin } from './interface'\nimport { normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { commentSpecialExpression } from './specialExpressions/comment'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { switchSpecialExpression } from './specialExpressions/switch'\nimport { declaredSpecialExpression } from './specialExpressions/declared'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { unlessSpecialExpression } from './specialExpressions/unless'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { trySpecialExpression } from './specialExpressions/try'\n\nconst specialExpressions = {\n '&&': andSpecialExpression,\n 'comment': commentSpecialExpression,\n 'cond': condSpecialExpression,\n 'switch': switchSpecialExpression,\n 'def': defSpecialExpression,\n 'defn': defnSpecialExpression,\n 'do': doSpecialExpression,\n 'doseq': doseqSpecialExpression,\n 'for': forSpecialExpression,\n 'fn': fnSpecialExpression,\n 'if': ifSpecialExpression,\n 'unless': unlessSpecialExpression,\n 'let': letSpecialExpression,\n 'loop': loopSpecialExpression,\n '||': orSpecialExpression,\n 'recur': recurSpecialExpression,\n 'throw': throwSpecialExpression,\n 'try': trySpecialExpression,\n 'defined?': declaredSpecialExpression,\n '??': qqSpecialExpression,\n} as const\n\nexport type SpecialExpressionName = keyof typeof specialExpressions\nexport type CommonSpecialExpressionName = keyof Pick<\n typeof specialExpressions,\n | '??'\n | '&&'\n | 'comment'\n | 'cond'\n | 'switch'\n | 'defined?'\n | 'do'\n | 'if'\n | 'unless'\n | '||'\n | 'throw'\n>\n\nexport type BuiltinSpecialExpressions = typeof specialExpressions\nexport type BuiltinSpecialExpression = typeof specialExpressions[SpecialExpressionName]\nexport type BuiltinCommonSpecialExpression = typeof specialExpressions[CommonSpecialExpressionName]\nexport type GenericCommonSpecialExpressionNode<T extends CommonSpecialExpressionName> = ReturnType<typeof specialExpressions[T]['polishParse']>\nexport type SpecialExpressionNode = ReturnType<typeof specialExpressions[SpecialExpressionName]['polishParse']>\n\nObject.keys(specialExpressions).forEach((key) => {\n /* v8 ignore next 2 */\n if (normalExpressions[key])\n throw new Error(`Expression ${key} is defined as both a normal expression and a special expression`)\n})\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressions)\n","import type { Any, Arr } from '../interface'\nimport type { AstNode, BuiltinFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateAstNode = (node: AstNode, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | BuiltinFunction | 'specialExpression' | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import type { BuiltinFunction, ExtraData, NativeJsFunction, SymbolNode } from '../parser/interface'\nimport type { SpecialExpressionName } from '../builtin'\nimport { builtin, normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { toAny } from '../utils'\nimport type { Any } from '../interface'\nimport { UndefinedSymbolError } from '../errors'\nimport type { LazyValue, LitsParams } from '../Lits/Lits'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { asNonUndefined } from '../typeGuards'\nimport { isBuiltinFunction } from '../typeGuards/litsFunction'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { isContextEntry } from './interface'\nimport type { Context, LookUpResult } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.globalContext = asNonUndefined(contexts[0])\n this.contexts = contexts\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context, extraData?: ExtraData): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStackImpl({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: extraData ? { ...this.lazyValues, ...extraData } : this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public exportValue(name: string, value: Any) {\n if (this.globalContext[name]) {\n throw new Error(`Cannot redefine exported value \"${name}\"`)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow special expression \"${name}\"`)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow builtin function \"${name}\"`)\n }\n this.addValue(name, value)\n this.globalContext[name] = { value }\n }\n\n public addValue(name: string, value: Any) {\n const currentContext = this.contexts[0]\n if (!currentContext) {\n throw new Error('No context to add value to')\n }\n if (currentContext[name]) {\n throw new Error(`Cannot redefine value \"${name}\"`)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow special expression \"${name}\"`)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow builtin function \"${name}\"`)\n }\n currentContext[name] = { value: toAny(value) }\n }\n\n public clone(): ContextStack {\n // eslint-disable-next-line ts/no-unsafe-argument\n return new ContextStackImpl(JSON.parse(JSON.stringify({\n contexts: this.contexts,\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })))\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: SymbolNode): LookUpResult {\n const value = node.v\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n if (builtin.normalExpressions[value]) {\n const builtinFunction: BuiltinFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Builtin,\n n: value,\n }\n return builtinFunction\n }\n\n if (builtin.specialExpressions[value as SpecialExpressionName])\n return 'specialExpression'\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateName(node: SymbolNode): Any {\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n else if (isBuiltinFunction(lookUpResult))\n return lookUpResult\n\n throw new UndefinedSymbolError(node.v, getTokenDebugData(node.token)?.sourceCodeInfo)\n }\n}\n\nexport function createContextStack(params: LitsParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n t: FunctionType.NativeJsFunction,\n f: jsFunction,\n n: name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack.create({})\n}\n","import { normalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n BuiltinFunction,\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunctionOverload,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n PartialFunction,\n SomePredFunction,\n UserDefinedFunction,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { FunctionType } from '../constants/constants'\nimport { asString } from '../typeGuards/string'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport type { Context, EvaluateAstNode, ExecuteFunction } from './interface'\nimport type { ContextStack } from './ContextStack'\n\ntype FunctionExecutors = Record<\n LitsFunctionType,\n (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateAstNode: EvaluateAstNode, executeFunction: ExecuteFunction },\n ) => Any\n>\n\nfunction findOverloadFunction(\n overloads: EvaluatedFunctionOverload[],\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n): EvaluatedFunctionOverload {\n const overloadFunction = overloads.find((overload) => {\n const arity = overload.a\n if (typeof arity === 'number')\n return arity === nbrOfParams\n else\n return arity.min <= nbrOfParams\n })\n if (!overloadFunction)\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n\n return overloadFunction\n}\n\nexport const functionExecutors: FunctionExecutors = {\n [FunctionType.NativeJsFunction]: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.f.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n [FunctionType.UserDefined]: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateAstNode }) => {\n for (;;) {\n const overloadFunction = findOverloadFunction(fn.o, params.length, sourceCodeInfo)\n const args = overloadFunction.as\n const nbrOfMandatoryArgs: number = args.mandatoryArguments.length\n\n const newContext: Context = { ...overloadFunction.f }\n\n const length = Math.max(params.length, args.mandatoryArguments.length)\n const rest: Arr = []\n for (let i = 0; i < length; i += 1) {\n if (i < nbrOfMandatoryArgs) {\n const param = toAny(params[i])\n const key = asString(args.mandatoryArguments[i], sourceCodeInfo)\n newContext[key] = { value: param }\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n if (args.restArgument)\n newContext[args.restArgument] = { value: rest }\n\n try {\n let result: Any = null\n const newContextStack = contextStack.create(newContext, fn.x)\n for (const node of overloadFunction.b)\n result = evaluateAstNode(node, newContextStack)\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n [FunctionType.Partial]: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.f, [...fn.p, ...params], contextStack, sourceCodeInfo)\n },\n [FunctionType.Comp]: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(toAny(fun), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n [FunctionType.Constantly]: (fn: ConstantlyFunction) => {\n return fn.v\n },\n [FunctionType.Juxt]: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.f.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n [FunctionType.Complement]: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.f, params, contextStack, sourceCodeInfo)\n },\n [FunctionType.EveryPred]: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n [FunctionType.SomePred]: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n [FunctionType.Fnil]: (fn: FNilFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fniledParams = params.map((param, index) => (param === null ? toAny(fn.p[index]) : param))\n return executeFunction(toAny(fn.f), fniledParams, contextStack, sourceCodeInfo)\n },\n [FunctionType.Builtin]: (fn: BuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(normalExpressions[fn.n], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n}\n","import type {\n Ast,\n AstNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ReservedSymbolNode,\n StringNode,\n} from '../parser/interface'\nimport type { SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport { polishReservedNamesRecord } from '../tokenizer/polish/polishReservedNames'\nimport { toAny } from '../utils'\nimport type { Any, Arr, Obj } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { isNormalExpressionNodeWithName } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { asNonUndefined } from '../typeGuards'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { assertString } from '../typeGuards/string'\nimport { removeCommenNodes } from '../removeCommentNodes'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n const safeAstNode = ast.hasDebugData ? JSON.parse(JSON.stringify(ast)) as Ast : ast\n if (safeAstNode.hasDebugData) {\n removeCommenNodes(safeAstNode)\n }\n for (const node of safeAstNode.b) {\n result = evaluateAstNode(node, contextStack)\n }\n\n return result\n}\n\nexport function evaluateAstNode(node: AstNode, contextStack: ContextStack): Any {\n switch (node.t) {\n case AstNodeType.Number:\n return evaluateNumber(node)\n case AstNodeType.String:\n return evaluateString(node)\n case AstNodeType.Symbol:\n return contextStack.evaluateName(node)\n case AstNodeType.ReservedSymbol:\n return evaluateReservedName(node)\n case AstNodeType.NormalExpression:\n return evaluateNormalExpression(node, contextStack)\n case AstNodeType.SpecialExpression:\n return evaluateSpecialExpression(node, contextStack)\n default:\n throw new LitsError(`${node.t}-node cannot be evaluated`, getTokenDebugData(node.token)?.sourceCodeInfo)\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node.v\n}\n\nfunction evaluateString(node: StringNode): string {\n return node.v\n}\n\nfunction evaluateReservedName(node: ReservedSymbolNode): Any {\n return asNonUndefined(polishReservedNamesRecord[node.v], getTokenDebugData(node.token)?.sourceCodeInfo).value\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n if (isNormalExpressionNodeWithName(node)) {\n const value = contextStack.getValue(node.n)\n if (value !== undefined)\n return executeFunction(asAny(value), params, contextStack, sourceCodeInfo)\n\n return evaluateBuiltinNormalExpression(node, params, contextStack)\n }\n else {\n const fn = params[0]!\n return executeFunction(fn, params.slice(1), contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.t](fn, params, sourceCodeInfo, contextStack, { evaluateAstNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn))\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n\n throw new NotAFunctionError(fn, sourceCodeInfo)\n}\n\nfunction evaluateBuiltinNormalExpression(\n node: NormalExpressionNodeWithName,\n params: Arr,\n contextStack: ContextStack,\n): Any {\n const normalExpression = builtin.normalExpressions[node.n]\n if (!normalExpression)\n throw new UndefinedSymbolError(node.n, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n return normalExpression.evaluate(params, getTokenDebugData(node.token)?.sourceCodeInfo, contextStack, { executeFunction })\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpression = asNonUndefined(builtin.specialExpressions[node.n], getTokenDebugData(node.token)?.sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpression.evaluate(node as any, contextStack, { evaluateAstNode, builtin })\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Builtin } from '../builtin/interface'\nimport { AstNodeType } from '../constants/constants'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode } from '../parser/interface'\nimport { asNonUndefined } from '../typeGuards'\nimport { evaluateAstNode } from '../evaluator'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport const findUnresolvedIdentifiers: FindUnresolvedIdentifiers = (ast, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(ast)\n ? ast\n : [{\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: ast.b,\n token: undefined,\n } satisfies DoNode]\n\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n\n for (const subNode of astNodes) {\n findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n .forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n\n return unresolvedIdentifiers\n}\n\nfunction findUnresolvedIdentifiersInAstNode(astNode: AstNode, contextStack: ContextStack, builtin: Builtin): UnresolvedIdentifiers {\n const emptySet = new Set<UnresolvedIdentifier>()\n switch (astNode.t) {\n case AstNodeType.Symbol: {\n const lookUpResult = contextStack.lookUp(astNode)\n if (lookUpResult === null)\n return new Set([{ symbol: astNode.v, token: astNode.token }])\n\n return emptySet\n }\n case AstNodeType.String:\n case AstNodeType.Number:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedSymbol:\n case AstNodeType.Comment:\n return emptySet\n case AstNodeType.NormalExpression: {\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n const { n: name, token: debug } = astNode\n if (typeof name === 'string') {\n const lookUpResult = contextStack.lookUp({ t: AstNodeType.Symbol, v: name, token: debug, p: [], n: undefined })\n if (lookUpResult === null)\n unresolvedIdentifiers.add({ symbol: name, token: astNode.token })\n }\n for (const subNode of astNode.p) {\n const innerUnresolvedIdentifiers = findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n innerUnresolvedIdentifiers.forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n return unresolvedIdentifiers\n }\n case AstNodeType.SpecialExpression: {\n const specialExpression = asNonUndefined(builtin.specialExpressions[astNode.n], getTokenDebugData(astNode.token)?.sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-argument\n const unresolvedIdentifiers = specialExpression.findUnresolvedIdentifiers(astNode as any, contextStack, {\n findUnresolvedIdentifiers,\n builtin,\n evaluateAstNode,\n })\n return unresolvedIdentifiers\n }\n }\n}\n","import type { LitsParams } from '../Lits/Lits'\nimport { builtin } from '../builtin'\nimport type { Builtin } from '../builtin/interface'\nimport { type ContextStack, createContextStack } from '../evaluator/ContextStack'\nimport type { Ast, AstNode } from '../parser/interface'\nimport type { Token } from '../tokenizer/tokens'\nimport { findUnresolvedIdentifiers } from './findUnresolvedIdentifiers'\n\nexport interface UnresolvedIdentifier {\n symbol: string\n token: Token | undefined\n}\n\n// A set of unresolved identifiers\nexport type UnresolvedIdentifiers = Set<UnresolvedIdentifier>\n\n// The result of analyzing an AST\nexport interface Analysis {\n unresolvedIdentifiers: UnresolvedIdentifiers\n}\n\n// A function that finds unresolved identifiers in an AST node or array of AST nodes\nexport type FindUnresolvedIdentifiers = (ast: Ast | AstNode[], contextStack: ContextStack, builtin: Builtin) => UnresolvedIdentifiers\n\nexport function analyze(ast: Ast, params: LitsParams): Analysis {\n return {\n unresolvedIdentifiers: findUnresolvedIdentifiers(ast, createContextStack(params), builtin),\n }\n}\n","import { isA_CommentToken, isA_MultiLineCommentToken, isA_WhitespaceToken } from './algebraic/algebraicTokens'\nimport type { TokenStream } from './interface'\nimport { isP_CommentToken, isP_WhitespaceToken } from './polish/polishTokens'\n\nexport function minifyTokenStream(tokenStream: TokenStream): TokenStream {\n const tokens = tokenStream.tokens.filter((token) => {\n if (\n isP_CommentToken(token)\n || isA_CommentToken(token)\n || isA_MultiLineCommentToken(token)\n || isA_WhitespaceToken(token)\n || isP_WhitespaceToken(token)) {\n return false\n }\n return true\n })\n\n return { ...tokenStream, tokens }\n}\n","import { LitsError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { asRegexpShorthandToken, asStringToken } from '../tokenizer/common/commonTokens'\nimport { isA_BasePrefixedNumberToken, isA_NumberToken, isA_OperatorToken, isA_ReservedSymbolToken, isA_SymbolToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { isP_NumberToken, isP_ReservedSymbolToken, isP_SymbolToken } from '../tokenizer/polish/polishTokens'\nimport { asToken } from '../tokenizer/tokens'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type {\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ParseState,\n ReservedSymbolNode,\n StringNode,\n SymbolNode,\n} from './interface'\n\nexport function parseSymbol(tokenStream: TokenStream, parseState: ParseState): SymbolNode {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n if (!isA_SymbolToken(tkn) && !isP_SymbolToken(tkn)) {\n throw new LitsError(`Expected symbol token, got ${tkn[0]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n if (tkn[1][0] !== '\\'') {\n return {\n t: AstNodeType.Symbol,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else {\n const value = tkn[1].substring(1, tkn[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\')|\\\\(.)/g,\n (\n _,\n backslash: string,\n singleQuote: string,\n normalChar: string,\n ) => {\n if (backslash) {\n return '\\\\'\n }\n if (singleQuote) {\n return '\\''\n }\n return `\\\\${normalChar}`\n },\n )\n return {\n t: AstNodeType.Symbol,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n}\n\nexport function parseReservedSymbol(tokenStream: TokenStream, parseState: ParseState): ReservedSymbolNode {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n\n if (!isA_ReservedSymbolToken(tkn) && !isP_ReservedSymbolToken(tkn)) {\n throw new LitsError(`Expected symbol token, got ${tkn[0]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n return {\n t: AstNodeType.ReservedSymbol,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseNumber(tokenStream: TokenStream, parseState: ParseState): NumberNode {\n const tkn = tokenStream.tokens[parseState.position++]\n if (isA_NumberToken(tkn)) {\n let numberString = tkn[1]\n const periodToken = tokenStream.tokens[parseState.position]\n const decimalToken = tokenStream.tokens[parseState.position + 1]\n if (isA_OperatorToken(periodToken, '.') && isA_NumberToken(decimalToken)) {\n numberString += `.${decimalToken[1]}`\n parseState.position += 2\n }\n return {\n t: AstNodeType.Number,\n v: Number(numberString),\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n\n if (!isP_NumberToken(tkn) && !isA_BasePrefixedNumberToken(tkn)) {\n throw new LitsError(`Expected number token, got ${tkn}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n\n const value = tkn[1]\n const negative = value[0] === '-'\n const numberString = negative ? value.substring(1) : value\n return {\n t: AstNodeType.Number,\n v: negative ? -Number(numberString) : Number(numberString),\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseString(tokenStream: TokenStream, parseState: ParseState): StringNode {\n const tkn = asStringToken(tokenStream.tokens[parseState.position++])\n const value = tkn[1].substring(1, tkn[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\\")|(\\\\n)|(\\\\t)|(\\\\r)|(\\\\b)|(\\\\f)|\\\\(.)/g,\n (\n _,\n backslash: string,\n doubleQuote: string,\n newline: string,\n tab: string,\n carriageReturn: string,\n backspace: string,\n formFeed: string,\n normalChar: string,\n ) => {\n // If it's a double escape (\\\\x), return \\x\n if (backslash) {\n return '\\\\'\n }\n // If it's a special character (\\n, \\t, \\r, \\b, \\f), return the special character\n else if (newline) {\n return '\\n'\n }\n else if (tab) {\n return '\\t'\n }\n else if (carriageReturn) {\n return '\\r'\n }\n else if (backspace) {\n return '\\b'\n }\n else if (formFeed) {\n return '\\f'\n }\n else if (doubleQuote) {\n return '\"'\n }\n return normalChar\n },\n )\n\n return {\n t: AstNodeType.String,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseRegexpShorthand(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const tkn = asRegexpShorthandToken(tokenStream.tokens[parseState.position++])\n\n const endStringPosition = tkn[1].lastIndexOf('\"')\n const regexpString = tkn[1].substring(2, endStringPosition)\n const optionsString = tkn[1].substring(endStringPosition + 1)\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: regexpString,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n\n const optionsNode: StringNode = {\n t: AstNodeType.String,\n v: optionsString,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'regexp',\n p: [stringNode, optionsNode],\n token: getTokenDebugData(tkn) && tkn,\n }\n\n return node\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin, specialExpressionKeys } from '../builtin'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DefNode } from '../builtin/specialExpressions/def'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { IfNode } from '../builtin/specialExpressions/if'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { UnlessNode } from '../builtin/specialExpressions/unless'\nimport type { Arity, FunctionArguments } from '../builtin/utils'\nimport { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { A_OperatorToken, A_ReservedSymbolToken, A_SymbolToken, AlgebraicTokenType, SymbolicBinaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asA_SymbolToken, assertA_OperatorToken, assertA_ReservedSymbolToken, assertA_SymbolToken, isA_BinaryOperatorToken, isA_OperatorToken, isA_ReservedSymbolToken, isA_SymbolToken, isFunctionOperator, isSymbolicUnaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asLBraceToken, asLBracketToken, assertLParenToken, assertRBraceToken, assertRBracketToken, assertRParenToken, isLBraceToken, isLBracketToken, isLParenToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { Token } from '../tokenizer/tokens'\nimport { getTokenDebugData, hasTokenDebugData } from '../tokenizer/utils'\nimport { assertNumberOfParams } from '../typeGuards'\nimport { asSymbolNode } from '../typeGuards/astNode'\nimport { parseNumber, parseRegexpShorthand, parseReservedSymbol, parseString, parseSymbol } from './commonTokenParsers'\nimport type { AstNode, BindingNode, NormalExpressionNodeWithName, ParseState, StringNode, SymbolNode } from './interface'\n\nconst exponentiationPrecedence = 10\nconst binaryFunctionalOperatorPrecedence = 1\nconst placeholderRegexp = /^\\$([1-9]\\d?)?$/\n\nfunction getPrecedence(operatorSign: SymbolicBinaryOperator): number {\n switch (operatorSign) {\n case '**': // exponentiation\n return exponentiationPrecedence\n\n case '*': // multiplication\n case '/': // division\n case '%': // remainder\n return 9\n\n case '+': // addition\n case '-': // subtraction\n return 8\n\n case '<<': // left shift\n case '>>': // signed right shift\n case '>>>': // unsigned right shift\n return 7\n\n case '++': // string concatenation\n return 6\n\n case '<': // less than\n case '<=': // less than or equal\n case '>': // greater than\n case '>=': // greater than or equal\n return 5\n\n case '==': // equal\n case '!=': // not equal\n return 4\n\n case '&': // bitwise AND\n case '^': // bitwise XOR\n case '|': // bitwise OR\n return 3\n\n case '&&': // logical AND\n case '||': // logical OR\n case '??': // nullish coalescing\n return 2\n\n // leave room for binaryFunctionalOperatorPrecedence = 1\n default:\n throw new Error(`Unknown binary operator: ${operatorSign satisfies never}`)\n }\n}\n\nfunction createNamedNormalExpressionNode(name: string, params: AstNode[], token: Token | undefined): NormalExpressionNodeWithName {\n const node: NormalExpressionNodeWithName = {\n t: AstNodeType.NormalExpression,\n n: name,\n p: params,\n token: getTokenDebugData(token) && token,\n }\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression) {\n assertNumberOfParams(builtinExpression.paramCount, node)\n }\n\n return node\n}\n\nfunction fromSymbolToStringNode(symbol: SymbolNode): StringNode {\n return {\n t: AstNodeType.String,\n v: symbol.v,\n token: getTokenDebugData(symbol.token) && symbol.token,\n p: [],\n n: undefined,\n }\n}\n\nfunction createAccessorNode(left: AstNode, right: AstNode, token: Token | undefined): AstNode {\n // Unnamed normal expression\n return {\n t: AstNodeType.NormalExpression,\n p: [left, right],\n n: undefined,\n token: getTokenDebugData(token) && token,\n }\n}\n\nfunction fromUnaryAlgebraicToAstNode(operator: A_OperatorToken, operand: AstNode): AstNode {\n const token: Token | undefined = hasTokenDebugData(operator) ? operand.token : undefined\n\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '+':\n case '-':\n case '!':\n case '~':\n return createNamedNormalExpressionNode(operatorName, [operand], token)\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown operator: ${operatorName}`)\n }\n}\n\nfunction fromBinaryOperatorToAstNode(operator: A_OperatorToken, left: AstNode, right: AstNode, token: Token | undefined): AstNode {\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '.':\n return createAccessorNode(left, fromSymbolToStringNode(asSymbolNode(right, getTokenDebugData(token)?.sourceCodeInfo)), token)\n case '**': // exponentiation\n case '*':\n case '/':\n case '%':\n case '+':\n case '-':\n case '<<':\n case '>>':\n case '>>>':\n case '++':\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n case '!=':\n case '&':\n case '^':\n case '|':\n return createNamedNormalExpressionNode(operatorName, [left, right], token)\n case '&&':\n case '||':\n case '??':\n return {\n t: AstNodeType.SpecialExpression,\n n: operatorName,\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n /* v8 ignore next 8 */\n case ';':\n case '!':\n case '~':\n case '=':\n case ',':\n case '=>':\n case '...':\n throw new LitsError(`Unknown binary operator: ${operatorName}`, getTokenDebugData(token)?.sourceCodeInfo)\n\n default:\n throw new LitsError(`Unknown binary operator: ${operatorName satisfies never}`, getTokenDebugData(token)?.sourceCodeInfo)\n }\n}\n\nexport class AlgebraicParser {\n constructor(\n private readonly tokenStream: TokenStream,\n private parseState: ParseState,\n ) {}\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(count: number): Token | undefined {\n return this.tokenStream.tokens[this.parseState.position + count]\n }\n\n private advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): AstNode[] {\n const nodes: AstNode[] = []\n while (!this.isAtEnd()) {\n nodes.push(this.parseExpression(0, true))\n if (!isA_OperatorToken(this.peek(), ';')) {\n break\n }\n this.advance()\n }\n return nodes\n }\n\n private parseExpression(precedence = 0, moduleScope = false): AstNode {\n const firstToken = this.peek()\n\n let left: AstNode\n\n if (isA_SymbolToken(firstToken)) {\n switch (firstToken[1]) {\n case 'let':\n return this.parseLet(firstToken)\n case 'if':\n case 'unless':\n left = this.parseIfOrUnless(firstToken)\n break\n case 'cond':\n left = this.parseCond(firstToken)\n break\n case 'switch':\n left = this.parseSwitch(firstToken)\n break\n case 'for':\n case 'doseq':\n left = this.parseForOrDoseq(firstToken)\n break\n case 'do':\n left = this.parseDo(firstToken)\n break\n case 'loop':\n left = this.parseLoop(firstToken)\n break\n case 'try':\n left = this.parseTry(firstToken)\n break\n }\n }\n else if (isA_ReservedSymbolToken(firstToken, 'function')) {\n return this.parseFunction(firstToken)\n }\n else if (isA_ReservedSymbolToken(firstToken, 'export')) {\n if (!moduleScope) {\n throw new LitsError('export is only allowed in module scope', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n return this.parseExport(firstToken)\n }\n\n left ||= this.parseOperand()\n let operator = this.peek()\n\n while (!this.isAtExpressionEnd()) {\n if (isA_BinaryOperatorToken(operator)) {\n const name = operator[1]\n const newPrecedece = getPrecedence(name)\n if (\n newPrecedece <= precedence\n // ** (exponentiation) is right associative\n && !(newPrecedece === exponentiationPrecedence && precedence === exponentiationPrecedence)) {\n break\n }\n this.advance()\n const right = this.parseExpression(newPrecedece)\n const token: Token | undefined = hasTokenDebugData(operator) ? operator : undefined\n left = fromBinaryOperatorToAstNode(operator, left, right, token)\n }\n else if (isA_SymbolToken(operator)) {\n if (!isFunctionOperator(operator[1])) {\n break\n }\n const newPrecedece = binaryFunctionalOperatorPrecedence\n if (newPrecedece <= precedence) {\n break\n }\n this.advance()\n const right = this.parseExpression(newPrecedece)\n const token: Token | undefined = hasTokenDebugData(operator) ? operator : undefined\n\n left = createNamedNormalExpressionNode(operator[1], [left, right], token)\n }\n else {\n break\n }\n\n operator = this.peek()\n }\n\n if (!left) {\n throw new LitsError('Expected operand', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n return left\n }\n\n private parseOperand(): AstNode {\n let operand = this.parseOperandPart()\n let token = this.peek()\n while (isA_OperatorToken(token, '.') || isLBracketToken(token) || isLParenToken(token)) {\n if (token[1] === '.') {\n this.advance()\n const symbolToken = this.peek()\n if (!isA_SymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: symbolToken[1],\n token: getTokenDebugData(symbolToken) && symbolToken,\n p: [],\n n: undefined,\n }\n operand = createAccessorNode(operand, stringNode, token)\n this.advance()\n token = this.peek()\n }\n else if (isLBracketToken(token)) {\n this.advance()\n const expression = this.parseExpression()\n if (!isRBracketToken(this.peek())) {\n throw new LitsError('Expected closing bracket', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n operand = createAccessorNode(operand, expression, token)\n this.advance()\n token = this.peek()\n }\n else if (isLParenToken(token)) {\n operand = this.parseFunctionCall(operand)\n token = this.peek()\n }\n }\n return operand\n }\n\n private parseOperandPart(): AstNode {\n const token = this.peek()\n\n // Parentheses\n if (isLParenToken(token)) {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n this.advance()\n const expression = this.parseExpression()\n if (!isRParenToken(this.peek())) {\n throw new Error('Expected closing parenthesis')\n }\n this.advance()\n return expression\n }\n\n // Unary operators\n else if (isA_OperatorToken(token)) {\n const operatorName = token[1]\n if (isSymbolicUnaryOperator(operatorName)) {\n this.advance()\n const operand = this.parseOperand()\n if (operand === null) {\n throw new LitsError('Expected operand', getTokenDebugData(token)?.sourceCodeInfo)\n }\n return fromUnaryAlgebraicToAstNode(token, operand)\n }\n\n if (operatorName === '=>') {\n return this.parseShorthandLamdaFunction()\n }\n else {\n throw new Error(`Unknown unary operator: ${operatorName}`)\n }\n }\n\n // Object litteral, e.g. {a=1, b=2}\n if (isLBraceToken(token)) {\n return this.parseObject()\n }\n\n // Array litteral, e.g. [1, 2]\n if (isLBracketToken(token)) {\n return this.parseArray()\n }\n\n const tokenType = token[0] as Exclude<\n AlgebraicTokenType,\n | 'A_Operator' // Handled above\n | 'LParen' // Handled above\n | 'LBrace' // Handled above\n | 'LBracket' // Handled above\n\n | 'RParen' // Illegal token\n | 'RBrace' // Illegal token\n | 'RBracket' // Illegal token\n\n | 'A_MultiLineComment' // Should have been removed\n | 'A_SingleLineComment' // Should have been removed\n | 'A_Whitespace' // Should have been removed\n >\n switch (tokenType) {\n case 'A_Number':\n case 'A_BasePrefixedNumber':\n return parseNumber(this.tokenStream, this.parseState)\n case 'String':\n return parseString(this.tokenStream, this.parseState)\n case 'A_Symbol': {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n return parseSymbol(this.tokenStream, this.parseState)\n }\n case 'A_ReservedSymbol':\n return parseReservedSymbol(this.tokenStream, this.parseState)\n case 'RegexpShorthand':\n return parseRegexpShorthand(this.tokenStream, this.parseState)\n\n default:\n throw new LitsError(`Unknown token type: ${tokenType}`, getTokenDebugData(token)?.sourceCodeInfo)\n }\n }\n\n private parseObject(): AstNode {\n const firstToken = asLBraceToken(this.peek())\n this.advance()\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n const key = this.parseOperand()\n if (key === null) {\n throw new LitsError('Expected key', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (key.t !== AstNodeType.Symbol && key.t !== AstNodeType.String) {\n throw new LitsError('Expected key to be a symbol or a string', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n params.push({\n t: AstNodeType.String,\n v: key.v,\n token: getTokenDebugData(key.token) && key.token,\n p: [],\n n: undefined,\n })\n\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRBraceToken(nextToken)) {\n throw new LitsError('Expected comma or closing brace', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBraceToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n\n private parseArray(): AstNode {\n const firstToken = asLBracketToken(this.peek())\n this.advance()\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRBracketToken(this.peek())) {\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRBracketToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBracketToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n\n private parseFunctionCall(symbol: AstNode): AstNode {\n const isNamedFunction = symbol.t === AstNodeType.Symbol\n this.advance()\n\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRParenToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n if (isNamedFunction) {\n if (specialExpressionKeys.includes(symbol.v)) {\n const name: SpecialExpressionName = symbol.v as Exclude<SpecialExpressionName, 'for' | 'if' | 'unless' | 'cond' | 'switch' | 'let' | 'do' | 'loop' | 'try' | 'doseq'>\n switch (name) {\n case '??':\n case '&&':\n case 'comment':\n case 'defined?':\n case '||':\n case 'recur':\n case 'throw': {\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: name,\n p: params,\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n assertNumberOfParams(builtin.specialExpressions[node.n].paramCount, node)\n return node\n }\n case 'fn':\n case 'def':\n case 'defn':\n throw new Error(`Special expression ${name} is not available in algebraic notation`)\n default:\n throw new Error(`Unknown special expression: ${name satisfies never}`)\n }\n }\n return createNamedNormalExpressionNode(symbol.v, params, symbol.token)\n }\n else {\n return {\n t: AstNodeType.NormalExpression,\n n: undefined,\n p: [symbol, ...params],\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n }\n }\n\n parseLambdaFunction(): AstNode | null {\n const firstToken = this.peek()\n\n if (isLParenToken(firstToken)\n && isA_SymbolToken(this.peekAhead(1))\n && isA_OperatorToken(this.peekAhead(2), '=>')) {\n return null\n }\n\n try {\n const { functionArguments, arity } = this.parseFunctionArguments()\n\n if (!isA_OperatorToken(this.peek(), '=>')) {\n return null\n }\n this.advance()\n\n const body = this.parseExpression()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [{\n as: functionArguments,\n b: [body],\n a: arity,\n }],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n catch {\n return null\n }\n }\n\n parseFunctionArguments(): { functionArguments: FunctionArguments, arity: Arity } {\n const firstToken = this.peek()\n if (isA_SymbolToken(firstToken)) {\n this.advance()\n return {\n functionArguments: {\n m: [firstToken[1]],\n b: [],\n r: undefined,\n } satisfies FunctionArguments,\n arity: 1,\n }\n }\n\n this.advance()\n let rest = false\n const args: string[] = []\n let restArg: string | undefined\n while (!this.isAtEnd() && !isRParenToken(this.peek()) && !isA_SymbolToken(this.peek(), 'let')) {\n if (isA_OperatorToken(this.peek(), '...')) {\n if (rest) {\n throw new LitsError('Multiple spread operators in lambda function', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n rest = true\n }\n const symbolToken = this.peek()\n if (!isA_SymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (rest) {\n restArg = symbolToken[1]\n }\n else {\n args.push(symbolToken[1])\n }\n this.advance()\n\n if (!isA_OperatorToken(this.peek(), ',') && !isRParenToken(this.peek()) && !isA_SymbolToken(this.peek(), 'let')) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n\n const arity: Arity = restArg !== undefined ? { min: args.length } : args.length\n\n // let bindings, to be able to pass on values in the context down to the body\n // This is needed since lits is dynamically scoped\n // E.g.\n // x => y => x + y // would not work, x is not available in the second lambda\n // x => (y, let x = x) => x + y // would work, x is available in the second lambda\n const bindingNodess: BindingNode[] = []\n let token = this.peek()\n while (isA_SymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n bindingNodess.push(letNode.bs[0]!)\n token = this.peek()\n }\n\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n const functionArguments: FunctionArguments = {\n m: args,\n r: restArg,\n b: bindingNodess,\n }\n\n this.advance()\n\n return {\n functionArguments,\n arity,\n }\n }\n\n private parseShorthandLamdaFunction(): FnNode {\n const firstToken = this.peek()\n this.advance()\n const startPos = this.parseState.position\n const exprNode = this.parseExpression()\n const endPos = this.parseState.position - 1\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1\n for (let pos = startPos; pos <= endPos; pos += 1) {\n const tkn = this.tokenStream.tokens[pos]!\n if (isA_SymbolToken(tkn)) {\n const match = placeholderRegexp.exec(tkn[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use $ or $1', getTokenDebugData(firstToken)?.sourceCodeInfo)\n\n percent1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n }\n }\n\n const mandatoryArguments: string[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && percent1 === 'NAKED')\n mandatoryArguments.push('$')\n else\n mandatoryArguments.push(`$${i}`)\n }\n\n const args: FunctionArguments = {\n b: [],\n m: mandatoryArguments,\n }\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [\n {\n as: args,\n b: [exprNode],\n a: args.m.length,\n },\n ],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n }\n\n private parseLet(token: A_SymbolToken, optionalSemicolon = false): LetNode {\n this.advance()\n\n const letSymbol = parseSymbol(this.tokenStream, this.parseState)\n\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n\n const value = this.parseExpression()\n\n if (!optionalSemicolon) {\n assertA_OperatorToken(this.peek(), ';')\n }\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [],\n bs: [{\n t: AstNodeType.Binding,\n n: letSymbol.v,\n v: value,\n p: [],\n token: getTokenDebugData(token) && token,\n }],\n token: getTokenDebugData(letSymbol.token) && letSymbol.token,\n }\n }\n\n private parseDo(token: A_SymbolToken): DoNode {\n this.advance()\n const expressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: expressions,\n token: getTokenDebugData(token) && token,\n }\n }\n\n private parseLoop(token: A_SymbolToken): LoopNode {\n this.advance()\n\n assertLParenToken(this.peek())\n this.advance()\n\n const bindingNodes: BindingNode[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n const value = this.parseExpression()\n bindingNodes.push({\n t: AstNodeType.Binding,\n n: symbol.v,\n v: value,\n p: [],\n token: getTokenDebugData(symbol.token) && symbol.token,\n } satisfies BindingNode)\n\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n if (bindingNodes.length === 0) {\n throw new LitsError('Expected binding', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n assertRParenToken(this.peek())\n this.advance()\n\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n params.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindingNodes,\n token: getTokenDebugData(token) && token,\n }\n }\n\n private parseTry(token: A_SymbolToken): TryNode {\n this.advance()\n const tryExpressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_SymbolToken(this.peek(), 'catch')) {\n tryExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n const tryExpression = tryExpressions.length === 1\n ? tryExpressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: tryExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n\n assertA_SymbolToken(this.peek(), 'catch')\n this.advance()\n\n let errorSymbol: SymbolNode | undefined\n if (isLParenToken(this.peek())) {\n this.advance()\n errorSymbol = parseSymbol(this.tokenStream, this.parseState)\n assertRParenToken(this.peek())\n this.advance()\n }\n\n const catchExpressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n catchExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const catchExpression = catchExpressions.length === 1\n ? catchExpressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: catchExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [tryExpression],\n ce: catchExpression,\n e: errorSymbol,\n token: getTokenDebugData(token) && token,\n }\n }\n\n private parseForOrDoseq(token: A_SymbolToken): ForNode | DoSeqNode {\n const isDoseq = token[1] === 'doseq'\n this.advance()\n assertLParenToken(this.peek())\n this.advance()\n const forLoopBindings: LoopBindingNode[] = [\n this.parseForLoopBinding(),\n ]\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n forLoopBindings.push(this.parseForLoopBinding())\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n assertRParenToken(this.peek())\n this.advance()\n\n const expression = this.parseExpression()\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: isDoseq ? 'doseq' : 'for',\n p: [expression],\n token: getTokenDebugData(token) && token,\n l: forLoopBindings,\n }\n }\n\n private parseForLoopBinding(): LoopBindingNode {\n const bindingNode = this.parseBinding()\n\n if (isRParenToken(this.peek()) || isA_OperatorToken(this.peek(), ',')) {\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n return {\n b: bindingNode,\n m: [],\n }\n }\n\n const modifiers: Array<'&let' | '&when' | '&while'> = []\n let token = this.peek()\n\n if (!isA_SymbolToken(token, 'let')\n && !isA_ReservedSymbolToken(token, 'when')\n && !isA_ReservedSymbolToken(token, 'while')\n ) {\n throw new LitsError('Expected symbol let, when or while', getTokenDebugData(token)?.sourceCodeInfo)\n }\n\n let letBindings: BindingNode[] | undefined\n if (token[1] === 'let') {\n modifiers.push('&let')\n letBindings = []\n while (isA_SymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n letBindings.push(letNode.bs[0]!)\n token = this.peek()\n }\n }\n\n token = this.peek()\n let whenNode: AstNode | undefined\n let whileNode: AstNode | undefined\n while (\n isA_ReservedSymbolToken(token, 'when')\n || isA_ReservedSymbolToken(token, 'while')\n ) {\n this.advance()\n\n if (token[1] === 'when') {\n modifiers.push('&when')\n whenNode = this.parseExpression()\n }\n else {\n modifiers.push('&while')\n whileNode = this.parseExpression()\n }\n token = this.peek()\n }\n\n if (isA_OperatorToken(token, ',')) {\n this.advance()\n }\n\n return {\n b: bindingNode,\n m: modifiers,\n l: letBindings,\n wn: whenNode,\n we: whileNode,\n }\n }\n\n private parseBinding(): BindingNode {\n const firstToken = asA_SymbolToken(this.peek())\n const name = firstToken[1]\n this.advance()\n\n const ofSymbol = asA_SymbolToken(this.peek())\n if (ofSymbol[1] !== 'of') {\n throw new LitsError('Expected \"of\"', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n\n const value = this.parseExpression()\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name,\n v: value,\n p: [],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n }\n\n parseIfOrUnless(token: A_SymbolToken): IfNode | UnlessNode {\n const isUnless = token[1] === 'unless'\n this.advance()\n const condition = this.parseExpression()\n assertA_ReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const thenExpressions: AstNode[] = []\n while (\n !this.isAtEnd()\n && !isA_ReservedSymbolToken(this.peek(), 'else')\n && !isA_ReservedSymbolToken(this.peek(), 'end')\n ) {\n thenExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n const thenExpression = thenExpressions.length === 1\n ? thenExpressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: thenExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n\n let elseExpression: AstNode | undefined\n if (isA_ReservedSymbolToken(this.peek(), 'else')) {\n this.advance()\n const elseExpressions: AstNode[] = []\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n elseExpressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n elseExpression = elseExpressions.length === 1\n ? elseExpressions[0]\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: elseExpressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const params = [condition, thenExpression]\n if (elseExpression) {\n params.push(elseExpression)\n }\n\n return {\n t: AstNodeType.SpecialExpression,\n n: isUnless ? 'unless' : 'if',\n p: params,\n token: getTokenDebugData(token) && token,\n }\n }\n\n parseCond(token: A_SymbolToken): CondNode {\n this.advance()\n const params: AstNode[] = []\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n assertA_ReservedSymbolToken(this.peek(), 'case')\n this.advance()\n params.push(this.parseExpression())\n assertA_ReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: AstNode[] = []\n while (\n !this.isAtEnd()\n && !isA_ReservedSymbolToken(this.peek(), 'case')\n && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n params.push(\n expressions.length === 1\n ? expressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: expressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode,\n )\n if (isA_ReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertA_ReservedSymbolToken(this.peek(), 'case')\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'cond',\n p: params,\n token: getTokenDebugData(token) && token,\n }\n }\n\n parseSwitch(token: A_SymbolToken): SwitchNode {\n this.advance()\n const params: AstNode[] = [this.parseExpression()]\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n assertA_ReservedSymbolToken(this.peek(), 'case')\n this.advance()\n params.push(this.parseExpression())\n assertA_ReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: AstNode[] = []\n while (\n !this.isAtEnd()\n && !isA_ReservedSymbolToken(this.peek(), 'case')\n && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n\n params.push(\n expressions.length === 1\n ? expressions[0]!\n : {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: expressions,\n token: getTokenDebugData(token) && token,\n } satisfies DoNode,\n )\n if (isA_ReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertA_ReservedSymbolToken(this.peek(), 'case')\n }\n\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'switch',\n p: params,\n token: getTokenDebugData(token) && token,\n }\n }\n\n parseFunction(token: A_ReservedSymbolToken<'function'>): LetNode {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n const { functionArguments, arity } = this.parseFunctionArguments()\n\n const body: AstNode[] = []\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n assertA_OperatorToken(this.peek(), ';')\n\n const fnNode: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [{\n as: functionArguments,\n b: body,\n a: arity,\n }],\n token: getTokenDebugData(token) && token,\n }\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [],\n bs: [{\n t: AstNodeType.Binding,\n n: symbol.v,\n v: fnNode,\n p: [],\n token: getTokenDebugData(symbol.token) && symbol.token,\n }],\n token: getTokenDebugData(token) && token,\n } satisfies LetNode\n }\n\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private isAtExpressionEnd(): boolean {\n if (this.isAtEnd()) {\n return true\n }\n const token = this.peek()\n if (isA_OperatorToken(token)) {\n return [';', ','].includes(token[1])\n }\n if (isA_SymbolToken(token)) {\n return ['catch'].includes(token[1])\n }\n if (isA_ReservedSymbolToken(token)) {\n return ['else', 'when', 'while', 'then', 'end', 'case'].includes(token[1])\n }\n return false\n }\n\n private parseExport(token: A_ReservedSymbolToken<'export'>): DefNode | DefnNode {\n this.advance()\n if (isA_SymbolToken(this.peek(), 'let')) {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n\n const value = this.parseExpression()\n\n assertA_OperatorToken(this.peek(), ';')\n return {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: [symbol, value],\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n }\n else if (isA_ReservedSymbolToken(this.peek(), 'function')) {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n\n const { functionArguments, arity } = this.parseFunctionArguments()\n\n const body: AstNode[] = []\n\n while (!this.isAtEnd() && !isA_ReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n assertA_ReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: symbol,\n p: [],\n o: [{\n as: functionArguments,\n b: body,\n a: arity,\n }],\n token: getTokenDebugData(token) && token,\n }\n }\n else {\n throw new LitsError('Expected let or function', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n }\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport type { FnNode } from '../builtin/specialExpressions/functions'\nimport type { FunctionArguments } from '../builtin/utils'\nimport { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { asLParenToken, assertLBracketToken, assertRParenToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { PolishTokenType } from '../tokenizer/polish/polishTokens'\nimport { asP_CommentToken, asP_StringShorthandToken, asP_SymbolToken, isP_FnShorthandToken, isP_ModifierToken, isP_SymbolToken } from '../tokenizer/polish/polishTokens'\nimport { asToken } from '../tokenizer/tokens'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { asNonUndefined, assertNumberOfParams } from '../typeGuards'\nimport { assertSymbolNode, isExpressionNode } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { parseNumber, parseRegexpShorthand, parseReservedSymbol, parseString, parseSymbol } from './commonTokenParsers'\nimport type {\n AstNode,\n BindingNode,\n CommentNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n ParseArgument,\n ParseExpression,\n ParseState,\n StringNode,\n} from './interface'\n\nfunction parseStringShorthand(tokenStream: TokenStream, parseState: ParseState): StringNode {\n const tkn = asP_StringShorthandToken(tokenStream.tokens[parseState.position++])\n const value = tkn[1].substring(1)\n\n return {\n t: AstNodeType.String,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nfunction parseComment(tokenStream: TokenStream, parseState: ParseState): CommentNode {\n const tkn = asP_CommentToken(tokenStream.tokens[parseState.position++])\n return {\n t: AstNodeType.Comment,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nfunction parseTokensUntilClosingBracket(tokenStream: TokenStream, parseState: ParseState): AstNode[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const astNodes: AstNode[] = []\n while (!isRParenToken(tkn) && !isRBracketToken(tkn)) {\n astNodes.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n return astNodes\n}\n\nconst parseExpression: ParseExpression = (tokenStream, parseState) => {\n const tkn = asToken(tokenStream.tokens[parseState.position + 1])\n if (isP_SymbolToken(tkn) && builtin.specialExpressions[tkn[1] as SpecialExpressionName])\n return parseSpecialExpression(tokenStream, parseState)\n\n return parseNormalExpression(tokenStream, parseState)\n}\n\nfunction parseArrayLitteral(tokenStream: TokenStream, parseState: ParseState): AstNode {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const params: AstNode[] = []\n while (!isRBracketToken(tkn)) {\n params.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n\n parseState.position += 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n}\n\nfunction parseObjectLitteral(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const params: AstNode[] = []\n while (!isRBraceToken(tkn)) {\n params.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n\n parseState.position += 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ even: true }, node)\n\n return node\n}\n\nconst placeholderRegexp = /^%([1-9]\\d?)?$/\nfunction parseFnShorthand(tokenStream: TokenStream, parseState: ParseState): FnNode {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n const startPos = parseState.position + 1\n const exprNode = parseExpression(tokenStream, parseState)\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1\n for (let pos = startPos; pos < parseState.position - 1; pos += 1) {\n const tkn = asToken(tokenStream.tokens[pos])\n if (isP_SymbolToken(tkn)) {\n const match = placeholderRegexp.exec(tkn[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use % or %1', getTokenDebugData(firstToken)?.sourceCodeInfo)\n\n percent1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n }\n if (isP_FnShorthandToken(tkn))\n throw new LitsError('Nested shortcut functions are not allowed', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n\n const mandatoryArguments: string[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && percent1 === 'NAKED')\n mandatoryArguments.push('%')\n else\n mandatoryArguments.push(`%${i}`)\n }\n\n const args: FunctionArguments = {\n b: [],\n m: mandatoryArguments,\n }\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [\n {\n as: args,\n b: [exprNode],\n a: args.m.length,\n },\n ],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n}\n\nconst parseArgument: ParseArgument = (tokenStream, parseState) => {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n\n if (isP_SymbolToken(tkn)) {\n return {\n t: AstNodeType.Argument,\n n: tkn[1],\n p: [],\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else if (isP_ModifierToken(tkn)) {\n return {\n t: AstNodeType.Modifier,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else {\n throw new LitsError(`Expected name or modifier token, got ${valueToString(tkn)}.`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n}\n\nfunction parseBindings(tokenStream: TokenStream, parseState: ParseState): BindingNode[] {\n assertLBracketToken(tokenStream.tokens[parseState.position++])\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const bindings: BindingNode[] = []\n while (!isRBracketToken(tkn)) {\n bindings.push(parseBinding(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n\n return bindings\n}\n\nfunction parseBinding(tokenStream: TokenStream, parseState: ParseState): BindingNode {\n const firstToken = asP_SymbolToken(tokenStream.tokens[parseState.position])\n const name = parseSymbol(tokenStream, parseState)\n\n const value = parseState.parseToken(tokenStream, parseState)\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name.v,\n v: value,\n p: [],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n}\n\nfunction parseNormalExpression(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNode {\n const startBracketToken = tokenStream.hasDebugData ? asLParenToken(tokenStream.tokens[parseState.position]) : undefined\n parseState.position += 1\n const fnNode = parseState.parseToken(tokenStream, parseState)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n if (isExpressionNode(fnNode)) {\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n p: [fnNode, ...params],\n n: undefined,\n token: startBracketToken,\n }\n\n return node\n }\n\n assertSymbolNode(fnNode, getTokenDebugData(fnNode.token)?.sourceCodeInfo)\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: fnNode.v,\n p: params,\n token: startBracketToken,\n }\n\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression) {\n assertNumberOfParams(builtinExpression.paramCount, node)\n }\n\n return node\n}\n\nfunction parseSpecialExpression(tokenStream: TokenStream, parseState: ParseState): SpecialExpressionNode {\n const firstToken = asLParenToken(tokenStream.tokens[parseState.position++])\n\n const nameToken = asP_SymbolToken(tokenStream.tokens[parseState.position++])\n const expressionName = nameToken[1] as SpecialExpressionName\n\n const { polishParse: parse, paramCount } = asNonUndefined(builtin.specialExpressions[expressionName], getTokenDebugData(nameToken)?.sourceCodeInfo)\n\n const node = parse(tokenStream, parseState, firstToken, {\n parseExpression,\n parseTokensUntilClosingBracket,\n parseToken: parseState.parseToken,\n parseBinding,\n parseBindings,\n parseArgument,\n })\n\n assertNumberOfParams(paramCount, node)\n\n return node\n}\n\nexport function parsePolishToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n const tkn = asToken(tokenStream.tokens[parseState.position])\n\n const tokenType = tkn[0] as PolishTokenType\n switch (tokenType) {\n case 'String':\n return parseString(tokenStream, parseState)\n case 'P_Number':\n return parseNumber(tokenStream, parseState)\n case 'P_StringShorthand':\n return parseStringShorthand(tokenStream, parseState)\n case 'P_Symbol':\n return parseSymbol(tokenStream, parseState)\n case 'P_ReservedSymbol':\n return parseReservedSymbol(tokenStream, parseState)\n case 'LParen':\n return parseExpression(tokenStream, parseState)\n case 'LBracket':\n return parseArrayLitteral(tokenStream, parseState)\n case 'LBrace':\n return parseObjectLitteral(tokenStream, parseState)\n case 'RegexpShorthand':\n return parseRegexpShorthand(tokenStream, parseState)\n case 'P_FnShorthand':\n return parseFnShorthand(tokenStream, parseState)\n case 'P_Comment':\n return parseComment(tokenStream, parseState)\n case 'P_CollectionAccessor':\n case 'P_Modifier':\n case 'RParen':\n case 'RBracket':\n case 'RBrace':\n case 'P_Whitespace':\n break\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unrecognized token: ${tokenType satisfies never} ${tkn[1]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n throw new LitsError(`Unrecognized token: ${tokenType}${tkn[1] ? ` ${tkn[1]}` : ''}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport { minifyTokenStream } from '../tokenizer/minifyTokenStream'\nimport { AlgebraicParser } from './AlgebraicParser'\nimport type { Ast, AstNode, ParseState } from './interface'\nimport { parsePolishToken } from './PolishTokenParsers'\n\nexport function parse(tokenStream: TokenStream): Ast {\n tokenStream = minifyTokenStream(tokenStream)\n const algebraic = tokenStream.algebraic\n\n const ast: Ast = {\n b: [],\n hasDebugData: tokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n parseToken,\n }\n\n if (algebraic) {\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n ast.b = algebraicParser.parse()\n }\n else {\n while (parseState.position < tokenStream.tokens.length) {\n ast.b.push(parseToken(tokenStream, parseState))\n }\n }\n\n return ast\n}\n\nfunction parseToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n return parsePolishToken(tokenStream, parseState)\n}\n","export const polishIdentifierCharacterClass = '[\\\\w@%^?=!$<>+*/:&\\|~-]'\nexport const polishIdentifierFirstCharacterClass = '[a-zA-Z_@%^?=!$<>+*/&\\|~-]'\nexport const algebraicIdentifierCharacterClass = '[\\\\w$:!?]'\nexport const algebraicIdentifierFirstCharacterClass = '[a-zA-Z_$]'\n","import { LitsError } from '../../errors'\nimport type { TokenDescriptor, Tokenizer } from '../interface'\nimport type { SimpleToken } from '../tokens'\nimport type { LBraceToken, LBracketToken, LParenToken, RBraceToken, RBracketToken, RParenToken, RegexpShorthandToken, StringToken } from './commonTokens'\n\nexport const NO_MATCH: TokenDescriptor<never> = [0]\n\nexport function isNoMatch(tokenDescriptor: TokenDescriptor<any>): tokenDescriptor is TokenDescriptor<never> {\n return tokenDescriptor[0] === 0\n}\n\nconst tokenizeLParen: Tokenizer<LParenToken> = (input, position) =>\n tokenizeSimpleToken('LParen', '(', input, position)\nconst tokenizeRParen: Tokenizer<RParenToken> = (input, position) =>\n tokenizeSimpleToken('RParen', ')', input, position)\nconst tokenizeLBracket: Tokenizer<LBracketToken> = (input, position) =>\n tokenizeSimpleToken('LBracket', '[', input, position)\nconst tokenizeRBracket: Tokenizer<RBracketToken> = (input, position) =>\n tokenizeSimpleToken('RBracket', ']', input, position)\nconst tokenizeLBrace: Tokenizer<LBraceToken> = (input, position) =>\n tokenizeSimpleToken('LBrace', '{', input, position)\nconst tokenizeRBrace: Tokenizer<RBraceToken> = (input, position) =>\n tokenizeSimpleToken('RBrace', '}', input, position)\n\nexport const tokenizeString: Tokenizer<StringToken> = (input, position) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = '\"'\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\"' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\"' // closing quote\n return [length + 1, ['String', value]]\n}\n\nexport const tokenizeRegexpShorthand: Tokenizer<RegexpShorthandToken> = (input, position) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n let options = ''\n while (input[position] === 'g' || input[position] === 'i') {\n if (options.includes(input[position]!)) {\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, undefined)\n }\n options += input[position]!\n length += 1\n position += 1\n }\n\n return [length, ['RegexpShorthand', `#${token[1]}${options}`]]\n}\n\nexport function tokenizeSimpleToken<T extends SimpleToken>(\n type: T[0],\n value: string,\n input: string,\n position: number,\n): TokenDescriptor<T> {\n if (value === input.slice(position, position + value.length))\n return [value.length, [type] as T]\n else\n return NO_MATCH\n}\n\nexport const commonTokenizers = [\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n tokenizeRegexpShorthand,\n] as const\n","import type { Any } from '../../interface'\n\nconst validAlgebraicReservedNamesRecord = {\n true: { value: true, forbidden: false },\n false: { value: false, forbidden: false },\n nil: { value: null, forbidden: false },\n null: { value: null, forbidden: false },\n then: { value: null, forbidden: false },\n else: { value: null, forbidden: false },\n end: { value: null, forbidden: false },\n case: { value: null, forbidden: false },\n when: { value: null, forbidden: false },\n while: { value: null, forbidden: false },\n function: { value: null, forbidden: false },\n export: { value: null, forbidden: false },\n} as const satisfies Record<string, { value: Any, forbidden: false }>\n\nconst forbiddenAlgebraicReservedNamesRecord = {\n fn: { value: null, forbidden: true },\n} as const satisfies Record<string, { value: Any, forbidden: true }>\n\nexport const algebraicReservedNamesRecord = {\n ...validAlgebraicReservedNamesRecord,\n ...forbiddenAlgebraicReservedNamesRecord,\n} as const\n\nexport type ValidAlgebraicReservedName = keyof typeof validAlgebraicReservedNamesRecord\nexport type AlgebraicReservedName = keyof typeof algebraicReservedNamesRecord\n","import { LitsError } from '../../errors'\nimport { algebraicIdentifierCharacterClass, algebraicIdentifierFirstCharacterClass } from '../../identifier'\nimport {\n NO_MATCH,\n commonTokenizers,\n} from '../common/commonTokenizers'\nimport type { Tokenizer } from '../interface'\nimport type { AlgebraicReservedName, ValidAlgebraicReservedName } from './algebraicReservedNames'\nimport { algebraicReservedNamesRecord } from './algebraicReservedNames'\nimport type { A_BasePrefixedNumberToken, A_MultiLineCommentToken, A_NumberToken, A_OperatorToken, A_ReservedSymbolToken, A_SingleLineCommentToken, A_SymbolToken, A_WhitespaceToken, AlgebraicToken } from './algebraicTokens'\nimport { isSymbolicOperator } from './algebraicTokens'\n\nconst identifierRegExp = new RegExp(algebraicIdentifierCharacterClass)\nconst identifierFirstCharacterRegExp = new RegExp(algebraicIdentifierFirstCharacterClass)\nconst whitespaceRegExp = /\\s/\n\nexport const tokenizeA_Whitespace: Tokenizer<A_WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['A_Whitespace', value]]\n}\n\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\n\nexport const tokenizeA_Number: Tokenizer<A_NumberToken> = (input, position) => {\n let i: number\n for (i = position; i < input.length; i += 1) {\n const char = input[i] as string\n if (!decimalNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length === 0) {\n return NO_MATCH\n }\n\n return [length, ['A_Number', input.substring(position, i)]]\n}\n\nexport const tokenizeA_BasePrefixedNumber: Tokenizer<A_BasePrefixedNumberToken> = (input, position) => {\n if (input[position] !== '0') {\n return NO_MATCH\n }\n\n const baseChar = input[position + 1]\n\n const type = baseChar === 'b' || baseChar === 'B'\n ? 'binary'\n : baseChar === 'o' || baseChar === 'O'\n ? 'octal'\n : baseChar === 'x' || baseChar === 'X'\n ? 'hex'\n : null\n\n if (type === null) {\n return NO_MATCH\n }\n\n let i: number\n for (i = position + 2; i < input.length; i += 1) {\n const char = input[i] as string\n if (type === 'binary' && !binaryNumberRegExp.test(char)) {\n break\n }\n if (type === 'octal' && !octalNumberRegExp.test(char)) {\n break\n }\n if (type === 'hex' && !hexNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length <= 2) {\n return NO_MATCH\n }\n\n return [length, ['A_BasePrefixedNumber', input.substring(position, i)]]\n}\n\nexport const tokenizeA_Symbol: Tokenizer<A_SymbolToken> = (input, position) => {\n let value = input[position]\n\n if (!value) {\n return NO_MATCH\n }\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['A_Symbol', value]]\n }\n\n if (identifierFirstCharacterRegExp.test(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && identifierRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['A_Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeA_ReservedSymbolToken: Tokenizer<A_ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeA_Symbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = algebraicReservedNamesRecord[symbolName as AlgebraicReservedName]\n if (!info) {\n return NO_MATCH\n }\n if (info.forbidden) {\n throw new LitsError(`${symbolName} is forbidden!`, undefined)\n }\n return [symbolMeta[0], ['A_ReservedSymbol', symbolName as ValidAlgebraicReservedName]]\n}\n\nexport const tokenizeA_Operator: Tokenizer<A_OperatorToken> = (input, position) => {\n const threeChars = input.slice(position, position + 3)\n if (position + 2 < input.length && isSymbolicOperator(threeChars)) {\n return [3, ['A_Operator', threeChars]]\n }\n\n const twoChars = input.slice(position, position + 2)\n if (position + 1 < input.length && isSymbolicOperator(twoChars)) {\n return [2, ['A_Operator', twoChars]]\n }\n\n const oneChar = input[position] ?? ''\n if (isSymbolicOperator(oneChar)) {\n return [1, ['A_Operator', oneChar]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeA_MultiLineComment: Tokenizer<A_MultiLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '*') {\n let length = 2\n let value = '/*'\n while (input[position + length] !== '*' && input[position + length + 1] !== '/' && position + length + 1 < input.length) {\n value += input[position + length]\n length += 1\n }\n if (position + length + 1 >= input.length) {\n throw new LitsError('Comment not closed', undefined)\n }\n value += '*/'\n length += 2\n\n return [length, ['A_MultiLineComment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeA_SingleLineComment: Tokenizer<A_SingleLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '/') {\n let length = 2\n let value = '//'\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['A_SingleLineComment', value]]\n }\n return NO_MATCH\n}\n\n// All tokenizers, order matters!\nexport const algebraicTokenizers = [\n tokenizeA_Whitespace,\n tokenizeA_MultiLineComment,\n tokenizeA_SingleLineComment,\n ...commonTokenizers,\n tokenizeA_BasePrefixedNumber,\n tokenizeA_Number,\n tokenizeA_Operator,\n tokenizeA_ReservedSymbolToken,\n tokenizeA_Symbol,\n] as const satisfies Tokenizer<AlgebraicToken>[]\n","import { LitsError } from '../../errors'\nimport { polishIdentifierCharacterClass, polishIdentifierFirstCharacterClass } from '../../identifier'\nimport {\n NO_MATCH,\n commonTokenizers,\n isNoMatch,\n} from '../common/commonTokenizers'\nimport type { Tokenizer } from '../interface'\nimport { polishReservedNamesRecord } from './polishReservedNames'\nimport type {\n ModifierName,\n P_CollectionAccessorToken,\n P_CommentToken,\n P_FnShorthandToken,\n P_ModifierToken,\n P_NumberToken,\n P_ReservedSymbolToken,\n P_StringShorthandToken,\n P_SymbolToken,\n P_WhitespaceToken,\n PolishToken,\n} from './polishTokens'\nimport { asP_SymbolToken, modifierNames } from './polishTokens'\n\nconst whitespaceRegExp = /\\s|,/\n\nexport const tokenizeP_Comment: Tokenizer<P_CommentToken> = (input, position) => {\n if (input[position] === ';') {\n let length = 0\n let value = ''\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['P_Comment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeP_Whitespace: Tokenizer<P_WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['P_Whitespace', value]]\n}\n\nconst endOfNumberRegExp = /[\\s)\\]},;#`]/\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst firstCharRegExp = /[0-9.-]/\nexport const tokenizeP_Number: Tokenizer<P_NumberToken> = (input, position) => {\n let type: 'decimal' | 'octal' | 'hex' | 'binary' = 'decimal'\n const firstChar = input[position] as string\n if (!firstCharRegExp.test(firstChar))\n return NO_MATCH\n\n let hasDecimals = firstChar === '.'\n\n let i: number\n for (i = position + 1; i < input.length; i += 1) {\n const char = input[i] as string\n if (endOfNumberRegExp.test(char))\n break\n\n if (char === '.') {\n const nextChar = input[i + 1]\n if (typeof nextChar === 'string' && !decimalNumberRegExp.test(nextChar))\n break\n }\n if (i === position + 1 && firstChar === '0') {\n if (char === 'b' || char === 'B') {\n type = 'binary'\n continue\n }\n if (char === 'o' || char === 'O') {\n type = 'octal'\n continue\n }\n if (char === 'x' || char === 'X') {\n type = 'hex'\n continue\n }\n }\n if (type === 'decimal' && hasDecimals) {\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'binary') {\n if (!binaryNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'octal') {\n if (!octalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'hex') {\n if (!hexNumberRegExp.test(char))\n return NO_MATCH\n }\n else {\n if (char === '.') {\n hasDecimals = true\n continue\n }\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n }\n\n const length = i - position\n const value = input.substring(position, i)\n if ((type !== 'decimal' && length <= 2) || value === '.' || value === '-')\n return NO_MATCH\n\n return [length, ['P_Number', value]]\n}\n\nexport const P_symbolRegExp = new RegExp(polishIdentifierCharacterClass)\nexport const P_symbolFirstCharacterRegExp = new RegExp(polishIdentifierFirstCharacterClass)\nexport const tokenizeP_Symbol: Tokenizer<P_SymbolToken> = (input, position) => {\n let value = input[position]\n\n if (!value) {\n return NO_MATCH\n }\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['P_Symbol', value]]\n }\n\n if (P_symbolRegExp.test(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && P_symbolRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['P_Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeP_FnShorthand: Tokenizer<P_FnShorthandToken> = (input, position) => {\n if (input.slice(position, position + 2) !== '#(')\n return NO_MATCH\n\n return [1, ['P_FnShorthand']]\n}\n\nexport const tokenizeP_ReservedSymbol: Tokenizer<P_ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeP_Symbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = polishReservedNamesRecord[symbolName]\n if (!info) {\n return NO_MATCH\n }\n if (info.forbidden) {\n throw new LitsError(`${symbolName} is forbidden!`, undefined)\n }\n return [symbolMeta[0], ['P_ReservedSymbol', symbolName]]\n}\n\nconst tokenizeP_StringShorthand: Tokenizer<P_StringShorthandToken> = (input, position) => {\n if (input[position] !== ':')\n return NO_MATCH\n\n const symbolDescription = tokenizeP_Symbol(input, position + 1)\n if (isNoMatch(symbolDescription)) {\n return symbolDescription\n }\n\n const symbolToken = asP_SymbolToken(symbolDescription[1])\n\n return [symbolDescription[0] + 1, ['P_StringShorthand', `:${symbolToken[1]}`]]\n}\n\nexport const tokenizeP_Modifier: Tokenizer<P_ModifierToken> = (input, position) => {\n for (const modifierName of modifierNames) {\n const length = modifierName.length\n const charAfterModifier = input[position + length]\n if (input.substring(position, position + length) === modifierName && (!charAfterModifier || !P_symbolRegExp.test(charAfterModifier))) {\n const value: ModifierName = modifierName\n return [length, ['P_Modifier', value]]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeP_CollectionAccessor: Tokenizer<P_CollectionAccessorToken> = (input, position) => {\n const char = input[position]\n if (char !== '.' && char !== '#')\n return NO_MATCH\n\n return [1, ['P_CollectionAccessor', char]]\n}\n\n// All tokenizers, order matters!\nexport const polishTokenizers = [\n tokenizeP_Whitespace,\n tokenizeP_Comment,\n ...commonTokenizers,\n tokenizeP_StringShorthand,\n tokenizeP_Number,\n tokenizeP_ReservedSymbol,\n tokenizeP_Modifier,\n tokenizeP_Symbol,\n tokenizeP_FnShorthand,\n tokenizeP_CollectionAccessor,\n] as const satisfies Tokenizer<PolishToken>[]\n","import { LitsError } from '../../errors'\nimport { asNonUndefined } from '../../typeGuards'\nimport { assertNumber, isNumber } from '../../typeGuards/number'\nimport type { SourceCodeInfo, TokenStream } from '../interface'\nimport { addTokenDebugData, getTokenDebugData } from '../utils'\nimport type { P_CollectionAccessorToken, P_StringShorthandToken } from '../polish/polishTokens'\nimport { asP_CollectionAccessorToken, assertP_NumberToken, assertP_SymbolToken, isP_CollectionAccessorToken, isP_FnShorthandToken, isP_SymbolToken } from '../polish/polishTokens'\nimport { isRBraceToken, isRBracketToken, isRParenToken } from '../common/commonTokens'\nimport { asToken } from '../tokens'\nimport type { SugarFunction } from '.'\n\nexport const applyCollectionAccessors: SugarFunction = (tokenStream) => {\n let dotTokenIndex = tokenStream.tokens.findIndex(isP_CollectionAccessorToken)\n while (dotTokenIndex >= 0) {\n applyCollectionAccessor(tokenStream, dotTokenIndex)\n dotTokenIndex = tokenStream.tokens.findIndex(isP_CollectionAccessorToken)\n }\n return tokenStream\n}\n\nfunction applyCollectionAccessor(tokenStream: TokenStream, position: number) {\n const dotTkn = asP_CollectionAccessorToken(tokenStream.tokens[position])\n const debugData = getTokenDebugData(dotTkn)\n const backPosition = getPositionBackwards(tokenStream, position, debugData?.sourceCodeInfo)\n checkForward(tokenStream, position, dotTkn, debugData?.sourceCodeInfo)\n\n tokenStream.tokens.splice(position, 1)\n tokenStream.tokens.splice(backPosition, 0, ['LParen'])\n const nextTkn = asToken(tokenStream.tokens[position + 1])\n if (dotTkn[1] === '.') {\n assertP_SymbolToken(nextTkn)\n const token: P_StringShorthandToken = ['P_StringShorthand', `:${nextTkn[1]}`]\n tokenStream.tokens[position + 1] = token\n\n const nextTkndebugData = getTokenDebugData(nextTkn)\n if (nextTkndebugData) {\n addTokenDebugData(token, nextTkndebugData)\n }\n }\n else {\n assertP_NumberToken(nextTkn)\n assertNumber(Number(nextTkn[1]), debugData?.sourceCodeInfo, { integer: true, nonNegative: true })\n\n tokenStream.tokens[position + 1] = ['P_Number', nextTkn[1]]\n }\n tokenStream.tokens.splice(position + 2, 0, ['RParen'])\n}\n\nfunction getPositionBackwards(tokenStream: TokenStream, position: number, sourceCodeInfo: SourceCodeInfo | undefined) {\n let bracketCount: number | null = null\n if (position <= 0)\n throw new LitsError('Array accessor # must come after a sequence', sourceCodeInfo)\n\n const prevToken = asNonUndefined(tokenStream.tokens[position - 1])\n let openBracket: 'LParen' | 'LBracket' | 'LBrace' | null = null\n let closeBracket: 'RParen' | 'RBracket' | 'RBrace' | null = null\n\n if (isRParenToken(prevToken)) {\n openBracket = 'LParen'\n closeBracket = 'RParen'\n }\n else if (isRBracketToken(prevToken)) {\n openBracket = 'LBracket'\n closeBracket = 'RBracket'\n }\n else if (isRBraceToken(prevToken)) {\n openBracket = 'LBrace'\n closeBracket = 'RBrace'\n }\n\n while (bracketCount !== 0) {\n bracketCount = bracketCount === null ? 0 : bracketCount\n position -= 1\n const tkn = asNonUndefined(tokenStream.tokens[position], sourceCodeInfo)\n if (tkn[0] === openBracket) {\n bracketCount += 1\n }\n else if (tkn[0] === closeBracket) {\n bracketCount -= 1\n }\n }\n if (openBracket === 'LParen' && position > 0) {\n const tokenBeforeBracket = asNonUndefined(tokenStream.tokens[position - 1])\n if (isP_FnShorthandToken(tokenBeforeBracket))\n throw new LitsError('# or . must NOT be preceeded by shorthand lambda function', sourceCodeInfo)\n }\n return position\n}\n\nfunction checkForward(\n tokenStream: TokenStream,\n position: number,\n dotTkn: P_CollectionAccessorToken,\n sourceCodeInfo: SourceCodeInfo | undefined,\n) {\n const tkn = tokenStream.tokens[position + 1]\n\n if (dotTkn[1] === '.' && !isP_SymbolToken(tkn)) {\n throw new LitsError('# as a collection accessor must be followed by an name', sourceCodeInfo)\n }\n\n if (dotTkn[1] === '#' && isNumber(tkn)) {\n throw new LitsError('# as a collection accessor must be followed by an integer', sourceCodeInfo)\n }\n}\n","import type { TokenStream } from '../interface'\nimport { applyCollectionAccessors } from './applyCollectionAccessor'\n\nexport type SugarFunction = (tokenStream: TokenStream) => TokenStream\n\nexport function getSugar(): SugarFunction[] {\n return [applyCollectionAccessors]\n}\n","import { LitsError } from '../errors'\nimport { algebraicTokenizers } from './algebraic/algebraicTokenizers'\nimport type { SourceCodeInfo, TokenDescriptor, TokenStream, TokenizeParams, Tokenizer } from './interface'\nimport { polishTokenizers } from './polish/polishTokenizers'\nimport { getSugar } from './sugar'\nimport type { Token } from './tokens'\nimport type { TokenDebugData } from './utils'\nimport { addTokenDebugData } from './utils'\n\nexport function tokenize(input: string, params: TokenizeParams): TokenStream {\n const debug = !!params.debug\n let position = 0\n const tokenStream: TokenStream = {\n tokens: [],\n filePath: params.filePath,\n hasDebugData: debug,\n algebraic: !!params.algebraic,\n }\n\n while (position < input.length) {\n const tokenizers = params.algebraic ? algebraicTokenizers : polishTokenizers\n const tokenDescriptor = getCurrentToken(input, position, tokenizers)\n\n const debugData: TokenDebugData | undefined = debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n }\n : undefined\n\n if (!tokenDescriptor) {\n throw new LitsError(`Unrecognized character '${input[position]}'.`, debugData?.sourceCodeInfo)\n }\n\n const [count, token] = tokenDescriptor\n\n position += count\n if (token) {\n if (debugData) {\n addTokenDebugData(token, debugData)\n }\n\n tokenStream.tokens.push(token)\n }\n }\n\n applySugar(tokenStream)\n\n return tokenStream\n}\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nfunction getCurrentToken(input: string, position: number, tokenizers: Tokenizer<Token>[]): TokenDescriptor<Token> | null {\n const initialPosition = position\n\n let tryNext = true\n while (tryNext) {\n if (position >= input.length) {\n return [position - initialPosition, undefined]\n }\n tryNext = false\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position)\n position += nbrOfCharacters\n if (nbrOfCharacters === 0) {\n continue\n }\n\n if (!token) {\n tryNext = true\n break\n }\n\n return [position - initialPosition, token]\n }\n }\n return null\n}\n\nfunction applySugar(tokenStream: TokenStream) {\n const sugar = getSugar()\n sugar.forEach(sugarFn => sugarFn(tokenStream))\n}\n","import { isA_SymbolToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { isP_SymbolToken } from '../tokenizer/polish/polishTokens'\n\nexport function transformTokens(tokenStram: TokenStream, transformer: (name: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map(token => isA_SymbolToken(token) || isP_SymbolToken(token)\n ? [token[0], transformer(token[1])]\n : token),\n }\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport { type Token, assertSimpleToken, isValueToken } from '../tokenizer/tokens'\n\nexport function untokenize(tokenStream: TokenStream): string {\n return tokenStream.tokens.reduce((acc: string, token) => {\n return `${acc}${untokenizeToken(token)}`\n }, '')\n}\n\nfunction untokenizeToken(token: Token): string {\n if (isValueToken(token)) {\n return token[1]\n }\n assertSimpleToken(token)\n const tokenType = token[0]\n switch (tokenType) {\n case 'LParen': return '('\n case 'RParen': return ')'\n case 'LBracket': return '['\n case 'RBracket': return ']'\n case 'LBrace': return '{'\n case 'RBrace': return '}'\n case 'P_FnShorthand': return '#'\n\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown token type: ${tokenType satisfies never}`)\n }\n}\n","import type { Ast } from '../parser/interface'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import type { Analysis } from '../analyze'\nimport { analyze } from '../analyze'\nimport { evaluate } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport { parse } from '../parser'\nimport type { Ast, LitsFunction } from '../parser/interface'\nimport { tokenize } from '../tokenizer'\nimport type { TokenStream, TokenizeParams } from '../tokenizer/interface'\nimport { minifyTokenStream } from '../tokenizer/minifyTokenStream'\nimport { transformTokens } from '../transformer'\nimport { untokenize } from '../untokenizer'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface LitsParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n filePath?: string\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n algebraic?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n private algebraic: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.algebraic = config.algebraic ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: LitsParams = {}): unknown {\n const ast = this.generateAst(program, params)\n return this.evaluate(ast, params)\n }\n\n public context(program: string, params: LitsParams = {}): Context {\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public analyze(program: string, params: LitsParams = {}): Analysis {\n const ast = this.generateAst(program, params)\n\n return analyze(ast, params)\n }\n\n public tokenize(program: string, tokenizeParams: Pick<TokenizeParams, 'filePath'> & { minify?: boolean } = {}): TokenStream {\n const debug = this.debug\n const algebraic = this.algebraic\n const tokenStream = tokenize(program, { ...tokenizeParams, debug, algebraic })\n return tokenizeParams.minify ? minifyTokenStream(tokenStream) : tokenStream\n }\n\n public parse(tokenStream: TokenStream): Ast {\n return parse(tokenStream)\n }\n\n public evaluate(ast: Ast, params: LitsParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transform(tokenStream: TokenStream, transformer: (name: string) => string): TokenStream {\n return transformTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: LitsParams = {}): Any {\n const fnName = 'FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59'\n const program = this.generateApplyFunctionCall(fnName, fnParams)\n\n const ast = this.generateAst(program, params)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateApplyFunctionCall(fnName: string, fnParams: unknown[]) {\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(this.algebraic ? ', ' : ' ')\n return this.algebraic ? `${fnName}(${paramsString})` : `(${fnName} ${paramsString})`\n }\n\n private generateAst(program: string, params: LitsParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, {\n filePath: params.filePath,\n })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport { LitsError } from '../errors'\nimport type { Context } from '../evaluator/interface'\nimport { Lits } from '../Lits/Lits'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getCodeMarker } from '../utils/debug/getCodeMarker'\n\ninterface TestChunk {\n name: string\n program: string\n directive: 'SKIP' | null\n}\n\nexport interface RunTestParams {\n testPath: string\n testNamePattern?: RegExp\n}\n\nexport interface TestResult {\n /**\n * Test report\n * http://testanything.org/\n */\n tap: string\n success: boolean\n}\n\nexport function runTest({ testPath: filePath, testNamePattern }: RunTestParams): TestResult {\n const includedFilePaths = getIncludedFilePaths(filePath)\n const testResult: TestResult = {\n tap: 'TAP version 13\\n',\n success: true,\n }\n try {\n const testChunks = getTestChunks(filePath)\n testResult.tap += `1..${testChunks.length}\\n`\n testChunks.forEach((testChunkProgram, index) => {\n const testNumber = index + 1\n if (testNamePattern && !testNamePattern.test(testChunkProgram.name)) {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip - Not matching testNamePattern ${testNamePattern}\\n`\n }\n else if (testChunkProgram.directive === 'SKIP') {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip\\n`\n }\n else {\n try {\n const lits = new Lits({ debug: true })\n const contexts = getContexts(includedFilePaths, lits)\n lits.run(testChunkProgram.program, {\n contexts,\n filePath,\n })\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name}\\n`\n }\n catch (error) {\n testResult.success = false\n testResult.tap += `not ok ${testNumber} ${testChunkProgram.name}${getErrorYaml(error)}`\n }\n }\n })\n }\n catch (error: unknown) {\n testResult.tap += `Bail out! ${getErrorMessage(error)}\\n`\n testResult.success = false\n }\n return testResult\n}\n\nfunction readLitsFile(litsPath: string): string {\n if (!litsPath.endsWith('.lits'))\n throw new Error(`Expected .lits file, got ${litsPath}`)\n\n return fs.readFileSync(litsPath, { encoding: 'utf-8' })\n}\n\nfunction getContexts(includedFilePaths: string[], lits: Lits): Context[] {\n return includedFilePaths.reduce((acc: Context[], filePath) => {\n const fileContent = readLitsFile(filePath)\n acc.push(lits.context(fileContent, { filePath, contexts: acc }))\n return acc\n }, [])\n}\n\nfunction getIncludedFilePaths(absoluteFilePath: string): string[] {\n const result: string[] = []\n getIncludesRecursively(absoluteFilePath, result)\n return result.reduce((acc: string[], entry: string) => {\n if (!acc.includes(entry))\n acc.push(entry)\n\n return acc\n }, [])\n\n function getIncludesRecursively(filePath: string, includedFilePaths: string[]): void {\n const includeFilePaths = readIncludeDirectives(filePath)\n includeFilePaths.forEach((includeFilePath) => {\n getIncludesRecursively(includeFilePath, includedFilePaths)\n includedFilePaths.push(includeFilePath)\n })\n }\n}\n\nfunction readIncludeDirectives(filePath: string): string[] {\n const fileContent = readLitsFile(filePath)\n const dirname = path.dirname(filePath)\n let okToInclude = true\n return fileContent.split('\\n').reduce((acc: string[], line) => {\n const includeMatch = line.match(/^\\s*;+\\s*@include\\s*(\\S+)\\s*$/)\n if (includeMatch) {\n if (!okToInclude)\n throw new Error(`@include must be in the beginning of file: ${filePath}:${line + 1}`)\n\n const relativeFilePath = includeMatch[1] as string\n acc.push(path.resolve(dirname, relativeFilePath))\n }\n if (!line.match(/^\\s*;.*$/))\n okToInclude = false\n\n return acc\n }, [])\n}\n\n// Splitting test file based on @test annotations\nfunction getTestChunks(testPath: string): TestChunk[] {\n const testProgram = readLitsFile(testPath)\n let currentTest: TestChunk | undefined\n let setupCode = ''\n return testProgram.split('\\n').reduce((result: TestChunk[], line, index) => {\n const currentLineNbr = index + 1\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const testNameAnnotationMatch = line.match(/^\\s*;+\\s*@(?:(skip)-)?test\\s*(.*)$/)\n if (testNameAnnotationMatch) {\n const directive = (testNameAnnotationMatch[1] ?? '').toUpperCase()\n const testName = testNameAnnotationMatch[2]\n if (!testName)\n throw new Error(`Missing test name on line ${currentLineNbr}`)\n\n if (result.find(chunk => chunk.name === testName))\n throw new Error(`Duplicate test name ${testName}`)\n\n currentTest = {\n directive: (directive || null) as TestChunk['directive'],\n name: testName,\n // Adding new-lines to make lits debug information report correct rows\n program:\n setupCode + [...Array(currentLineNbr + 2 - setupCode.split('\\n').length).keys()].map(() => '').join('\\n'),\n }\n result.push(currentTest)\n return result\n }\n if (!currentTest)\n setupCode += `${line}\\n`\n else\n currentTest.program += `${line}\\n`\n\n return result\n }, [])\n}\n\nexport function getErrorYaml(error: unknown): string {\n const message = getErrorMessage(error)\n /* v8 ignore next 7 */\n if (!isAbstractLitsError(error)) {\n return `\n ---\n message: ${JSON.stringify(message)}\n ...\n`\n }\n\n const sourceCodeInfo = error.sourceCodeInfo\n /* v8 ignore next 8 */\n if (!sourceCodeInfo || typeof sourceCodeInfo === 'string') {\n return `\n ---\n message: ${JSON.stringify(message)}\n error: ${JSON.stringify(error.name)}\n ...\n`\n }\n\n const formattedMessage = message.includes('\\n')\n ? `|\\n ${message.split(/\\r?\\n/).join('\\n ')}`\n : JSON.stringify(message)\n return `\n ---\n error: ${JSON.stringify(error.name)}\n message: ${formattedMessage}\n location: ${JSON.stringify(getLocation(sourceCodeInfo))}\n code:\n - \"${sourceCodeInfo.code}\"\n - \"${getCodeMarker(sourceCodeInfo)}\"\n ...\n`\n}\n\nfunction getLocation(sourceCodeInfo: SourceCodeInfo): string {\n const terms: string[] = []\n if (sourceCodeInfo.filePath)\n terms.push(sourceCodeInfo.filePath)\n\n if (sourceCodeInfo.position) {\n terms.push(`${sourceCodeInfo.position.line}`)\n terms.push(`${sourceCodeInfo.position.column}`)\n }\n\n return terms.join(':')\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (!isAbstractLitsError(error)) {\n // error should always be an Error (other cases is just for kicks)\n /* v8 ignore next 1 */\n return typeof error === 'string' ? error : error instanceof Error ? error.message : 'Unknown error'\n }\n return error.shortMessage\n}\n\nfunction isAbstractLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n"],"names":["isToken","isLitsFunction","isUnknownRecord","isAstNode","analyze","placeholderRegexp","whitespaceRegExp","decimalNumberRegExp","octalNumberRegExp","hexNumberRegExp","binaryNumberRegExp"],"mappings":"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","x_google_ignoreList":[0]}
|