@mojir/lits 2.0.13 → 2.0.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"testFramework.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/constants/constants.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/utils/debug/getSourceCodeInfo.ts","../src/typeGuards/number.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/removeCommentNodes/removeCommentNodesFromSpecialExpression.ts","../src/removeCommentNodes/index.ts","../src/typeGuards/index.ts","../src/builtin/normalExpressions/categories/bitwise.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/declared.ts","../src/tokenizer/polish/polishReservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/defs.ts","../src/builtin/specialExpressions/do.ts","../src/analyze/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/if-let.ts","../src/builtin/specialExpressions/if-not.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/time.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/when.ts","../src/builtin/specialExpressions/when-first.ts","../src/builtin/specialExpressions/when-let.ts","../src/builtin/specialExpressions/when-not.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/calculateOutcomes/calculateAndOutcomes.ts","../src/analyze/calculateOutcomes/calculateCondOutcomes.ts","../src/analyze/calculateOutcomes/calculateDeclaredOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefsOutcomes.ts","../src/analyze/calculateOutcomes/calculateDoOutcomes.ts","../src/analyze/calculateOutcomes/calculateFunctionOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfOutcomes.ts","../src/analyze/calculateOutcomes/calculateLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopsOutcomes.ts","../src/analyze/calculateOutcomes/calculateOrOutcomes.ts","../src/analyze/calculateOutcomes/calculateQqOutcomes.ts","../src/analyze/calculateOutcomes/calculateThrowOutcomes.ts","../src/analyze/calculateOutcomes/calculateTimeOutcomes.ts","../src/analyze/calculateOutcomes/calculateTryOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenOutcomes.ts","../src/analyze/calculateOutcomes/calculateRecurOutcomes.ts","../src/analyze/calculateOutcomes/calculateCommentOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopOutcomes.ts","../src/analyze/calculateOutcomes/specialExpressionCalculators.ts","../src/analyze/calculateOutcomes/index.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 { LitsError } from '../errors'\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, actual?: Token): never {\n throw new LitsError(`Unexpected token: ${actual}, expected ${expected}`, undefined)\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 'AlgNotation',\n 'PolNotation',\n 'EndNotation',\n] as const\n\nexport const commomValueTokenTypes = [\n 'String',\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'>\nexport type AlgebraicNotationToken = GenericCommonSimpleToken<'AlgNotation'>\nexport type PolishNotationToken = GenericCommonSimpleToken<'PolNotation'>\nexport type EndNotationToken = GenericCommonSimpleToken<'EndNotation'>\n\nexport type StringToken = GenericCommonValueToken<'String'>\n\nexport type CommonSimpleToken =\n | LParenToken\n | RParenToken\n | LBracketToken\n | RBracketToken\n | LBraceToken\n | RBraceToken\n | AlgebraicNotationToken\n | PolishNotationToken\n | EndNotationToken\n\nexport type CommonValueToken =\n | StringToken\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', 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', 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', 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', 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', 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', 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', token)\n }\n}\nexport function asStringToken(token?: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isAlgebraicNotationToken(token?: Token): token is AlgebraicNotationToken {\n return token?.[0] === 'AlgNotation'\n}\nexport function assertAlgebraicNotationToken(token?: Token): asserts token is AlgebraicNotationToken {\n if (!isAlgebraicNotationToken(token)) {\n throwUnexpectedToken('AlgNotation', token)\n }\n}\nexport function asAlgebraicNotationToken(token?: Token): AlgebraicNotationToken {\n assertAlgebraicNotationToken(token)\n return token\n}\n\nexport function isPolishNotationToken(token?: Token): token is PolishNotationToken {\n return token?.[0] === 'PolNotation'\n}\nexport function assertPolishNotationToken(token?: Token): asserts token is PolishNotationToken {\n if (!isPolishNotationToken(token)) {\n throwUnexpectedToken('PolNotation', token)\n }\n}\nexport function asPolishNotationToken(token?: Token): PolishNotationToken {\n assertPolishNotationToken(token)\n return token\n}\n\nexport function isEndNotationToken(token?: Token): token is EndNotationToken {\n return token?.[0] === 'EndNotation'\n}\nexport function assertEndNotationToken(token?: Token): asserts token is EndNotationToken {\n if (!isEndNotationToken(token)) {\n throwUnexpectedToken('EndNotation', token)\n }\n}\nexport function asEndNotationToken(token?: Token): EndNotationToken {\n assertEndNotationToken(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'\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] as const\n\nconst symbolicOperators = [\n ...symbolicUnaryOperators,\n ...symbolicBinaryOperators,\n ...otherSymbolicOperators,\n] as const\n\nconst nonFunctionOperators = [\n '??',\n 'and',\n 'comment',\n 'cond',\n 'declared?',\n 'if',\n 'if-not',\n 'or',\n 'when',\n 'when-not',\n 'do',\n 'time!',\n 'throw',\n 'let',\n 'def',\n 'defs',\n 'if-let',\n 'when-let',\n 'when-first',\n 'fn',\n 'defn',\n 'defns',\n 'try',\n 'recur',\n 'loop',\n 'doseq',\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 = GenericAlgebraicValueToken<'A_ReservedSymbol'>\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(token: Token | undefined): token is A_SymbolToken {\n return token?.[0] === 'A_Symbol'\n}\nexport function assertA_SymbolToken(token: Token | undefined): asserts token is A_SymbolToken {\n if (!isA_SymbolToken(token)) {\n throwUnexpectedToken('A_Symbol', token)\n }\n}\nexport function asA_SymbolToken(token: Token | undefined): A_SymbolToken {\n assertA_SymbolToken(token)\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', 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(token: Token | undefined): token is A_ReservedSymbolToken {\n return token?.[0] === 'A_ReservedSymbol'\n}\nexport function assertA_ReservedSymbolToken(token: Token | undefined): asserts token is A_ReservedSymbolToken {\n if (!isA_ReservedSymbolToken(token)) {\n throwUnexpectedToken('A_ReservedSymbol', token)\n }\n}\nexport function asA_ReservedSymbolToken(token: Token | undefined): A_ReservedSymbolToken {\n assertA_ReservedSymbolToken(token)\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', 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', 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', 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', 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', 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', 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 = ['&', '&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_RegexpShorthand',\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_RegexpShorthandToken = GenericPolishValueToken<'P_RegexpShorthand'>\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_RegexpShorthandToken\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', 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', 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', 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', token)\n }\n}\nexport function asP_ModifierToken(token?: Token): P_ModifierToken {\n assertP_ModifierToken(token)\n return token\n}\n\nexport function isP_RegexpShorthandToken(token?: Token): token is P_RegexpShorthandToken {\n return token?.[0] === 'P_RegexpShorthand'\n}\nexport function assertP_RegexpShorthandToken(token?: Token): asserts token is P_RegexpShorthandToken {\n if (!isP_RegexpShorthandToken(token)) {\n throwUnexpectedToken('P_RegexpShorthand', token)\n }\n}\nexport function asP_RegexpShorthandToken(token?: Token): P_RegexpShorthandToken {\n assertP_RegexpShorthandToken(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', 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', 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', 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', 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', 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 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 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 { 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, DefnsNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { IfLetNode } from '../builtin/specialExpressions/if-let'\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 { TimeNode } from '../builtin/specialExpressions/time'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { WhenNode } from '../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../builtin/specialExpressions/when-not'\nimport type { RemoveOptions } from '.'\n\nconst specialExpressionCommentRemovers = {\n 'and': (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 'declared?': (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 'defns': (_node: DefnsNode, _removeOptions: RemoveOptions) => {},\n 'defs': (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-let': (_node: IfLetNode, _removeOptions: RemoveOptions) => {},\n 'if': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'if-not': (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 'or': (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 'time!': (node: TimeNode, 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 'when-first': (_node: WhenFirstNode, _removeOptions: RemoveOptions) => {},\n 'when-let': (_node: WhenLetNode, _removeOptions: RemoveOptions) => {},\n 'when': (_node: WhenNode, _removeOptions: RemoveOptions) => {},\n 'when-not': (_node: WhenNotNode, _removeOptions: RemoveOptions) => {},\n\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 'and']\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 { 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\ntype Count = number | { min?: number, max?: number }\n\nexport function assertEvenNumberOfParams(node: GenericNode): void {\n const length = withoutCommentNodes(node.p).length\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments, expected an even number, got ${valueToString(length)}.`,\n getTokenDebugData(node.token)?.sourceCodeInfo,\n )\n }\n}\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 } = count\n if (min === undefined && max === undefined)\n throw new LitsError('Min or max must be specified.', sourceCodeInfo)\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 { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n 'bit-shift-left': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'bit-shift-right': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'unsigned-bit-shift-right': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'bit-not': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'bit-and': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-and-not': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-or': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-xor': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(3, node),\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 validate: node => assertNumberOfParams(3, node),\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 validate: node => assertNumberOfParams({ min: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n array: {\n evaluate: (params): Arr => params,\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 validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport { asArray, 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n remove: {\n evaluate: ([fn, input], 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 validate: node => assertNumberOfParams(2, node),\n },\n remove_at: {\n evaluate: ([index, input], 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 validate: node => assertNumberOfParams(2, node),\n },\n split_at: {\n evaluate: ([pos, seq], 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 validate: node => assertNumberOfParams(2, node),\n },\n\n split_with: {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n\n group_by: {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams(2, node),\n },\n\n partition: {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq\n = len === 2\n ? asSeq(params[1], sourceCodeInfo)\n : len === 3\n ? asSeq(params[2], sourceCodeInfo)\n : asSeq(params[3], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n const pad = len === 4 ? (params[2] === null ? [] : asArray(params[2], sourceCodeInfo)) : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 4 }, node),\n },\n\n partition_all: {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq = len === 2 ? asSeq(params[1], sourceCodeInfo) : asSeq(params[2], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n partition_by: {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 type { NormalExpressionNode } from '../../../parser/interface'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams(1, node),\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n validate: node => assertNumberOfParams(1, node),\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 },\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 },\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 },\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 },\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'rem': {\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'sqrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cbrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pow': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'max_safe_integer': {\n evaluate: (): number => {\n return Number.MAX_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min_safe_integer': {\n evaluate: (): number => {\n return Number.MIN_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'max_value': {\n evaluate: (): number => {\n return Number.MAX_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min_value': {\n evaluate: (): number => {\n return Number.MIN_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'epsilon': {\n evaluate: (): number => {\n return Number.EPSILON\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'positive_infinity': {\n evaluate: (): number => {\n return Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'negative_infinity': {\n evaluate: (): number => {\n return Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'nan': {\n evaluate: (): number => {\n return Number.NaN\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'e': {\n evaluate: (): number => {\n return Math.E\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'pi': {\n evaluate: (): number => {\n return Math.PI\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'exp': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.exp(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { version } from '../../../../package.json'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nconst uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\nconst xyRegexp = /[xy]/g\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'equal?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n return deepEqual(asAny(a, sourceCodeInfo), asAny(b, sourceCodeInfo), sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'not': {\n evaluate: ([first]): boolean => !first,\n validate: node => assertNumberOfParams(1, node),\n },\n 'inst-ms!': {\n evaluate: (): number => {\n return Date.now()\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'inst-ms->iso-date-time': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'iso-date-time->inst-ms': {\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 validate: node => assertNumberOfParams(1, node),\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 },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'compare': {\n evaluate: ([a, b]): number => {\n return compare(a, b)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'uuid!': {\n evaluate: (): string => {\n return uuidTemplate.replace(xyRegexp, (character) => {\n const randomNbr = Math.floor(Math.random() * 16)\n const newValue = character === 'x' ? randomNbr : (randomNbr & 0x3) | 0x8\n return newValue.toString(16)\n })\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'lits-version!': {\n evaluate: (): Any => {\n return version\n },\n validate: node => assertNumberOfParams(0, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertEvenNumberOfParams, assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertEvenNumberOfParams(node),\n },\n\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 0 }, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nil?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'positive_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'negative_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n}\n","import type { RegularExpression } from '../../../parser/interface'\nimport { assertRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n match: {\n evaluate: ([regexp, text], 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 validate: node => assertNumberOfParams(2, node),\n },\n replace: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const regExp = new RegExp(regexp.s, regexp.f)\n return str.replace(regExp, value)\n },\n validate: node => assertNumberOfParams(3, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr } from '../../../interface'\nimport type { NormalExpressionNode } from '../../../parser/interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 },\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number-to-string': {\n evaluate: (params, sourceCodeInfo): string => {\n const [num, base] = params\n assertNumber(num, sourceCodeInfo, { finite: true })\n if (params.length === 1) {\n return `${num}`\n }\n else {\n assertNumber(base, sourceCodeInfo, { finite: true })\n if (base !== 2 && base !== 8 && base !== 10 && base !== 16) {\n throw new LitsError(\n `Expected \"number-to-string\" base argument to be 2, 8, 10 or 16, got: ${base}`,\n sourceCodeInfo,\n )\n }\n if (base === 10)\n return `${num}`\n\n assertNumber(num, sourceCodeInfo, { integer: true, nonNegative: true })\n return Number(num).toString(base)\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 10 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n\n identity: {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 },\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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<'and'> {}\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: 'and',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: () => undefined,\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 validateParameterCount: () => undefined,\n evaluate: () => null,\n findUnresolvedIdentifiers: () => new Set(),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertEvenNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertEvenNumberOfParams(node),\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 { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface DeclaredNode extends CommonSpecialExpressionNode<'declared?'> {}\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('declared?'),\n validateParameterCount: node => assertNumberOfParams(1, node),\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams(2, node),\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.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\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.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefsNode extends CommonSpecialExpressionNode<'defs'> {}\n\nexport const defsSpecialExpression: BuiltinSpecialExpression<null, DefsNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defs',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: node => assertNumberOfParams(2, node),\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n\n assertNameNotDefined(name, contextStack, builtin, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const subNode = node.p[1]!\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: 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 validateParameterCount: () => undefined,\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 }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\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 { asAstNode, assertSymbolNode } from '../../typeGuards/astNode'\nimport { asString, assertString } from '../../typeGuards/string'\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 DefnsNode extends CommonSpecialExpressionNode<'defns'> {\n f: AstNode\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 validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defn', node, contextStack, evaluateAstNode)\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.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n contextStack.globalContext[node.f.v] = { value: true }\n const newContext: Context = { [node.f.v]: { value: true } }\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const defnsSpecialExpression: BuiltinSpecialExpression<null, DefnsNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseToken } = parsers\n const functionName = parseToken(tokenStream, parseState)\n\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefnsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defns',\n p: [],\n f: functionName,\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defns', node, contextStack, evaluateAstNode)\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.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = evaluateAstNode(asAstNode(node.f, sourceCodeInfo), contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n const newContext = { [name]: { value: true } }\n\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 validateParameterCount: () => undefined,\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 getFunctionName(\n expressionName: 'defn' | 'defns',\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): string {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n if (expressionName === 'defn')\n return ((node as DefnNode).f).v\n\n const name = evaluateAstNode((node as DefnsNode).f, contextStack)\n return asString(name, sourceCodeInfo)\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 | DefnsNode | 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 '&':\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 { LitsError } 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, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfLetNode extends CommonSpecialExpressionNode<'if-let'> {\n b: BindingNode\n}\n\nexport const ifLetSpecialExpression: BuiltinSpecialExpression<Any, IfLetNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: IfLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-let',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const locals: Context = {}\n const bindingValue = evaluateAstNode(node.b.v, contextStack)\n if (bindingValue) {\n locals[node.b.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n const thenForm = asAstNode(node.p[0], sourceCodeInfo)\n return evaluateAstNode(thenForm, newContextStack)\n }\n if (node.p.length === 2) {\n const elseForm = asAstNode(node.p[1], sourceCodeInfo)\n return evaluateAstNode(elseForm, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext: Context = { [node.b.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([node.b.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface IfNotNode extends CommonSpecialExpressionNode<'if-not'> {}\n\nexport const ifNotSpecialExpression: BuiltinSpecialExpression<Any, IfNotNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('if-not'),\n validateParameterCount: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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, parseTokensUntilClosingBracket }) => {\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: params,\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const newContextStack = contextStack.create(locals)\n for (const binding of node.bs) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, newContextStack)\n locals[binding.n] = { value: bindingValue }\n }\n\n let result: Any = null\n for (const astNode of node.p)\n result = evaluateAstNode(astNode, newContextStack)\n\n return result\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 bindingContext: Context = {}\n const bindingResults = node.bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = findUnresolvedIdentifiers([valueNode], contextStack.create(bindingContext), builtin)\n bindingContext[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 validateParameterCount: () => undefined,\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, assertNumberOfParams } 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 '&':\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 validateParameterCount: node => assertNumberOfParams(1, node),\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 validateParameterCount: node => assertNumberOfParams(1, node),\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<'or'> {}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('or'),\n validateParameterCount: () => undefined,\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validateParameterCount: () => undefined,\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams(1, node),\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 type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface TimeNode extends CommonSpecialExpressionNode<'time!'> {}\n\nexport const timeSpecialExpression: BuiltinSpecialExpression<Any, TimeNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('time!'),\n validateParameterCount: node => assertNumberOfParams(1, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const param = node.p[0]!\n const startTime = Date.now()\n const result = evaluateAstNode(param, contextStack)\n const totalTime = Date.now() - startTime\n // eslint-disable-next-line no-console\n console.log(`Elapsed time: ${totalTime} ms`)\n\n return result\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 { assertNumberOfParams } from '../../typeGuards'\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\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 validateParameterCount: node => assertNumberOfParams(1, node),\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 = {\n [errorNode.v]: { value: asAny(error, getTokenDebugData(node.token)?.sourceCodeInfo) },\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 = {\n [errorNode.v]: { value: true },\n }\n const catchResult = findUnresolvedIdentifiers([catchExpression], contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface WhenNode extends CommonSpecialExpressionNode<'when'> {}\n\nexport const whenSpecialExpression: BuiltinSpecialExpression<Any, WhenNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('when'),\n validateParameterCount: node => assertNumberOfParams({ min: 1 }, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n if (!evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\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 { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { isSeq } from '../../typeGuards/lits'\nimport { toAny } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenFirstNode extends CommonSpecialExpressionNode<'when-first'> {\n b: BindingNode\n}\n\nexport const whenFirstSpecialExpression: BuiltinSpecialExpression<Any, WhenFirstNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenFirstNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-first',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const { b: binding } = node\n const evaluatedBindingForm = evaluateAstNode(binding.v, contextStack)\n if (!isSeq(evaluatedBindingForm)) {\n throw new LitsError(\n `Expected undefined or a sequence, got ${valueToString(evaluatedBindingForm)}`,\n getTokenDebugData(node.token)?.sourceCodeInfo,\n )\n }\n\n if (evaluatedBindingForm.length === 0)\n return null\n\n const bindingValue = toAny(evaluatedBindingForm[0])\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\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 const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\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 { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenLetNode extends CommonSpecialExpressionNode<'when-let'> {\n b: BindingNode\n}\n\nexport const whenLetSpecialExpression: BuiltinSpecialExpression<Any, WhenLetNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-let',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { b: binding } = node\n const locals: Context = {}\n const bindingValue = evaluateAstNode(binding.v, contextStack)\n if (!bindingValue)\n return null\n\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\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 const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface WhenNotNode extends CommonSpecialExpressionNode<'when-not'> {}\n\nexport const whenNotSpecialExpression: BuiltinSpecialExpression<Any, WhenNotNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('when-not'),\n validateParameterCount: node => assertNumberOfParams({ min: 1 }, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n if (evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\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 { declaredSpecialExpression } from './specialExpressions/declared'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { defsSpecialExpression } from './specialExpressions/defs'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, defnsSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { ifLetSpecialExpression } from './specialExpressions/if-let'\nimport { ifNotSpecialExpression } from './specialExpressions/if-not'\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 { timeSpecialExpression } from './specialExpressions/time'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { whenSpecialExpression } from './specialExpressions/when'\nimport { whenFirstSpecialExpression } from './specialExpressions/when-first'\nimport { whenLetSpecialExpression } from './specialExpressions/when-let'\nimport { whenNotSpecialExpression } from './specialExpressions/when-not'\n\nconst specialExpressions = {\n 'and': andSpecialExpression,\n 'comment': commentSpecialExpression,\n 'cond': condSpecialExpression,\n 'def': defSpecialExpression,\n 'defn': defnSpecialExpression,\n 'defns': defnsSpecialExpression,\n 'defs': defsSpecialExpression,\n 'do': doSpecialExpression,\n 'doseq': doseqSpecialExpression,\n 'for': forSpecialExpression,\n 'fn': fnSpecialExpression,\n 'if': ifSpecialExpression,\n 'if-let': ifLetSpecialExpression,\n 'if-not': ifNotSpecialExpression,\n 'let': letSpecialExpression,\n 'loop': loopSpecialExpression,\n 'or': orSpecialExpression,\n 'recur': recurSpecialExpression,\n 'throw': throwSpecialExpression,\n 'time!': timeSpecialExpression,\n 'try': trySpecialExpression,\n 'when': whenSpecialExpression,\n 'when-first': whenFirstSpecialExpression,\n 'when-let': whenLetSpecialExpression,\n 'when-not': whenNotSpecialExpression,\n 'declared?': declaredSpecialExpression,\n '??': qqSpecialExpression,\n} as const\n\nexport type SpecialExpressionName = keyof typeof specialExpressions\nexport type CommonSpecialExpressionName = keyof Pick<\n typeof specialExpressions,\n | '??'\n | '??'\n | 'and'\n | 'comment'\n | 'cond'\n | 'declared?'\n | 'do'\n | 'if'\n | 'if-not'\n | 'or'\n | 'time!'\n | 'when'\n | 'when-not'\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.contexts = contexts\n this.globalContext = asNonUndefined(contexts[0])\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 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\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 for (const node of safeAstNode.b)\n result = evaluateAstNode(node, contextStack)\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 { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport const findUnresolvedIdentifiers: FindUnresolvedIdentifiers = (ast, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(ast) ? ast : ast.b\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 { AndNode } from '../../builtin/specialExpressions/and'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateAndOutcomes: CalculatePossibleAstNodesHelper<AndNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<AndNode>(p => ({\n n: 'and',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }))\n}\n","import type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { AstNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport { arrayToPairs } from '../../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCondOutcomes: CalculatePossibleAstNodesHelper<CondNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n isAstComputable,\n}) => {\n const testNodes = arrayToPairs(astNode.p).map(([t]) => t!)\n if (isAstComputable(testNodes)) {\n return combinate(arrayToPairs(astNode.p)\n // Create a list of ast nodes from the test and form of each condition\n .reduce((acc: AstNode[][], [test, form]) => {\n acc.push(calculatePossibleAstNodes(test!), calculatePossibleAstNodes(form!))\n return acc\n }, []),\n )\n // Create a new CondNode for each combination of test and form outcomes\n .map<CondNode>(conditionAsts => ({\n ...astNode,\n c: arrayToPairs(conditionAsts).map(([t, f]) => ({ t: t!, f: f! })),\n }))\n }\n\n return [\n ...arrayToPairs(astNode.p).flatMap(([_, form]) => calculatePossibleAstNodes(form!)),\n nilNode,\n ]\n}\n","import type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { AstNode } from '../../parser/interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nconst trueNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'true', token: undefined, p: [], n: undefined }\nconst falseNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'false', token: undefined, p: [], n: undefined }\n\nexport const calculateDeclaredOutcomes: CalculatePossibleAstNodesHelper<DeclaredNode> = (\n {\n astNode,\n isAstComputable,\n },\n) => {\n if (isAstComputable(astNode.p))\n return [trueNode]\n\n return [trueNode, falseNode]\n}\n","import type { DefNode } from '../../builtin/specialExpressions/def'\nimport { asSymbolNode } from '../../typeGuards/astNode'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefOutcomes: CalculatePossibleAstNodesHelper<DefNode> = ({\n astNode,\n calculatePossibleAstNodes,\n addGlobalIdentifier,\n}) => {\n const nameNode = asSymbolNode(astNode.p[0])\n const valueNode = astNode.p[1]!\n addGlobalIdentifier(nameNode.v)\n return calculatePossibleAstNodes(valueNode)\n .map<DefNode>(node => ({\n ...astNode,\n p: [nameNode, node],\n }))\n}\n","import type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefsOutcomes: CalculatePossibleAstNodesHelper<DefsNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<DefsNode>(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDoOutcomes: CalculatePossibleAstNodesHelper<DoNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p).map<DoNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { FunctionOverload } from '../../builtin/utils'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper, CombinateAstNodes } from '.'\n\nfunction calculateFunctionOverloadOutcomes(combinateAstNodes: CombinateAstNodes, functionOverloads: FunctionOverload[]) {\n return combinate(functionOverloads\n // For each overload, calculate the possible outcomes for each parameter\n .map<FunctionOverload[]>(functionOverload =>\n combinateAstNodes(functionOverload.b, [\n functionOverload.as.m,\n functionOverload.as.b.map(bindingNode => bindingNode.n),\n functionOverload.as.r ?? [],\n ].flat())\n\n // For each combination of parameter outcomes, create a new overload\n .map<FunctionOverload>(body => ({\n ...functionOverload,\n b: body,\n })),\n ),\n // For each combination of overloads, create a new DefnNode\n )\n}\n\nexport const calculateDefnOutcomes: CalculatePossibleAstNodesHelper<DefnNode> = ({\n astNode,\n combinateAstNodes,\n addGlobalIdentifier,\n}) => {\n addGlobalIdentifier(astNode.f.v)\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n\nexport const calculateDefnsOutcomes: CalculatePossibleAstNodesHelper<DefnsNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculatePossibleAstNodes(astNode.f).flatMap(functionName =>\n calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnsNode>(functionOverloads => ({\n ...astNode,\n f: functionName,\n o: functionOverloads,\n })),\n )\n}\n\nexport const calculateFnOutcomes: CalculatePossibleAstNodesHelper<FnNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<FnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n","import type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfLetOutcomes: CalculatePossibleAstNodesHelper<IfLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n const thenBranch = astNode.p[0]!\n const elseBranch = astNode.p[1] ?? nilNode\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap<IfLetNode>(b => combinateAstNodes(astNode.p, [newIdentifier])\n .map<IfLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfNotOutcomes: CalculatePossibleAstNodesHelper<IfNotNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if-not',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfOutcomes: CalculatePossibleAstNodesHelper<IfNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { BindingNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLetOutcomes: CalculatePossibleAstNodesHelper<LetNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n try {\n // check bindings, if any binding value cannot be calculated, convert the whole let to a do-expression\n if (!isAstComputable(astNode.bs.map(b => calculatePossibleAstNodes(b.v))))\n throw new Error('Could not calculate binding value')\n }\n catch {\n const doNodes: DoNode[] = combinateAstNodes(astNode.p)\n .map((p) => {\n return {\n n: 'do',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }\n })\n return doNodes\n }\n\n const newIdentifiers = astNode.bs.map(bindingNode => bindingNode.n)\n const letNodes: LetNode[] = combinate(\n astNode.bs.map<BindingNode[]>(bindingNode =>\n calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValues => ({ ...bindingNode, v: bindingValues })),\n ),\n )\n .flatMap(bindingNodes => combinate(astNode.p.map(p => calculatePossibleAstNodes(p, newIdentifiers)))\n .map((p) => {\n return {\n n: 'let',\n bs: bindingNodes,\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }\n }))\n\n return letNodes\n}\n","import type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodes, CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateForOutcomes: CalculatePossibleAstNodesHelper<ForNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate for loop, not deterministic')\n\n return [astNode]\n}\n\nexport const calculateDoSeqOutcomes: CalculatePossibleAstNodesHelper<DoSeqNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate doSeq node, not deterministic')\n\n return [astNode]\n}\n\nfunction isDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: ForNode | DoSeqNode): boolean {\n for (const { b, l, wn, we } of astNode.l) {\n if (l && l.some(({ v }) => !astIsDeterministic(calculatePossibleAstNodes, v)))\n return false\n\n if (!astIsDeterministic(calculatePossibleAstNodes, b.v))\n return false\n\n if (wn && !astIsDeterministic(calculatePossibleAstNodes, wn))\n return false\n\n if (we && !astIsDeterministic(calculatePossibleAstNodes, we))\n return false\n }\n\n if (!astIsDeterministic(calculatePossibleAstNodes, astNode.p[0]!))\n return false\n\n return true\n}\n\nfunction astIsDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: AstNode) {\n return calculatePossibleAstNodes(astNode).length === 1\n}\n","import type { OrNode } from '../../builtin/specialExpressions/or'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateOrOutcomes: CalculatePossibleAstNodesHelper<OrNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<OrNode>(p => ({\n n: 'or',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }))\n}\n","import type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateQqOutcomes: CalculatePossibleAstNodesHelper<QqNode> = ({\n astNode,\n combinateAstNodes,\n isAstComputable,\n}) => {\n if (!isAstComputable(astNode.p[0]!))\n throw new Error('First argument of ?? not computable')\n\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateThrowOutcomes: CalculatePossibleAstNodesHelper<ThrowNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!).map<ThrowNode>(m => ({\n ...astNode,\n p: [m],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTimeOutcomes: CalculatePossibleAstNodesHelper<TimeNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!)\n .map<DoNode>(p => ({\n ...astNode,\n n: 'do',\n p: [p],\n }))\n}\n","import type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { AstNode } from '../../parser/interface'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTryOutcomes: CalculatePossibleAstNodesHelper<TryNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n const { vals, throws } = calculatePossibleAstNodes(astNode.p[0]!).reduce((acc: { vals: AstNode[], throws: AstNode[] }, node) => {\n if (node.n === 'throw') {\n acc.throws.push((node as ThrowNode).p[0]!)\n }\n else {\n acc.vals.push(node)\n }\n return acc\n }, { vals: [], throws: [] })\n\n const catches = throws.flatMap<AstNode>((throwNode) => {\n const letNode: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n bs: [{\n t: AstNodeType.Binding,\n n: astNode.e.v,\n v: throwNode,\n token: undefined,\n p: [],\n }],\n p: [astNode.ce],\n token: undefined,\n }\n return calculatePossibleAstNodes(letNode)\n })\n\n return [\n ...vals,\n ...catches,\n ]\n}\n","import type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenFirstOutcomes: CalculatePossibleAstNodesHelper<WhenFirstNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v))\n throw new Error('Could not calculate binding value')\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenFirstNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenLetOutcomes: CalculatePossibleAstNodesHelper<WhenLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...combinateAstNodes(astNode.p)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenNotOutcomes: CalculatePossibleAstNodesHelper<WhenNotNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map<WhenNotNode>(p => ({\n n: 'when-not',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenOutcomes: CalculatePossibleAstNodesHelper<WhenNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'when',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n}\n","import type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateRecurOutcomes: CalculatePossibleAstNodesHelper<RecurNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCommentOutcomes: CalculatePossibleAstNodesHelper<CommentExpressionNode> = ({\n nilNode,\n}) => {\n return [nilNode]\n}\n","import type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLoopOutcomes: CalculatePossibleAstNodesHelper<LoopNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p, astNode.bs.map(bindingNode => bindingNode.n))\n .map<LoopNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { SpecialExpressionName } from '../../builtin'\nimport type { AndNode } from '../../builtin/specialExpressions/and'\nimport type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { DefNode } from '../../builtin/specialExpressions/def'\nimport type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { OrNode } from '../../builtin/specialExpressions/or'\nimport type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { AstNode } from '../../parser/interface'\nimport { calculateAndOutcomes } from './calculateAndOutcomes'\nimport { calculateCondOutcomes } from './calculateCondOutcomes'\nimport { calculateDeclaredOutcomes } from './calculateDeclaredOutcomes'\nimport { calculateDefOutcomes } from './calculateDefOutcomes'\nimport { calculateDefsOutcomes } from './calculateDefsOutcomes'\nimport { calculateDoOutcomes } from './calculateDoOutcomes'\nimport { calculateDefnOutcomes, calculateDefnsOutcomes, calculateFnOutcomes } from './calculateFunctionOutcomes'\nimport { calculateIfLetOutcomes } from './calculateIfLetOutcomes'\nimport { calculateIfNotOutcomes } from './calculateIfNotOutcomes'\nimport { calculateIfOutcomes } from './calculateIfOutcomes'\nimport { calculateLetOutcomes } from './calculateLetOutcomes'\nimport { calculateDoSeqOutcomes, calculateForOutcomes } from './calculateLoopsOutcomes'\nimport { calculateOrOutcomes } from './calculateOrOutcomes'\nimport { calculateQqOutcomes } from './calculateQqOutcomes'\nimport { calculateThrowOutcomes } from './calculateThrowOutcomes'\nimport { calculateTimeOutcomes } from './calculateTimeOutcomes'\nimport { calculateTryOutcomes } from './calculateTryOutcomes'\nimport { calculateWhenFirstOutcomes } from './calculateWhenFirstOutcomes'\nimport { calculateWhenLetOutcomes } from './calculateWhenLetOutcomes'\nimport { calculateWhenNotOutcomes } from './calculateWhenNotOutcomes'\nimport { calculateWhenOutcomes } from './calculateWhenOutcomes'\nimport { calculateRecurOutcomes } from './calculateRecurOutcomes'\nimport { calculateCommentOutcomes } from './calculateCommentOutcomes'\nimport { calculateLoopOutcomes } from './calculateLoopOutcomes'\nimport type { CalculatePossibleAstNodesHelperOptions } from '.'\n\nexport const specialExpressionCalculator = {\n 'and': (astNode: AndNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateAndOutcomes({ astNode, ...helperOptions }),\n 'comment': (astNode: CommentExpressionNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCommentOutcomes({ astNode, ...helperOptions }),\n 'cond': (astNode: CondNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCondOutcomes({ astNode, ...helperOptions }),\n 'declared?': (astNode: DeclaredNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDeclaredOutcomes({ astNode, ...helperOptions }),\n 'defn': (astNode: DefnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnOutcomes({ astNode, ...helperOptions }),\n 'def': (astNode: DefNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefOutcomes({ astNode, ...helperOptions }),\n 'defns': (astNode: DefnsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnsOutcomes({ astNode, ...helperOptions }),\n 'defs': (astNode: DefsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefsOutcomes({ astNode, ...helperOptions }),\n 'do': (astNode: DoNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoOutcomes({ astNode, ...helperOptions }),\n 'doseq': (astNode: DoSeqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoSeqOutcomes({ astNode, ...helperOptions }),\n 'fn': (astNode: FnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateFnOutcomes({ astNode, ...helperOptions }),\n 'for': (astNode: ForNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateForOutcomes({ astNode, ...helperOptions }),\n 'if-let': (astNode: IfLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfLetOutcomes({ astNode, ...helperOptions }),\n 'if': (astNode: IfNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfOutcomes({ astNode, ...helperOptions }),\n 'if-not': (astNode: IfNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfNotOutcomes({ astNode, ...helperOptions }),\n 'let': (astNode: LetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLetOutcomes({ astNode, ...helperOptions }),\n 'loop': (astNode: LoopNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLoopOutcomes({ astNode, ...helperOptions }),\n 'or': (astNode: OrNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateOrOutcomes({ astNode, ...helperOptions }),\n '??': (astNode: QqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateQqOutcomes({ astNode, ...helperOptions }),\n 'recur': (astNode: RecurNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateRecurOutcomes({ astNode, ...helperOptions }),\n 'time!': (astNode: TimeNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTimeOutcomes({ astNode, ...helperOptions }),\n 'throw': (astNode: ThrowNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateThrowOutcomes({ astNode, ...helperOptions }),\n 'try': (astNode: TryNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTryOutcomes({ astNode, ...helperOptions }),\n 'when-first': (astNode: WhenFirstNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenFirstOutcomes({ astNode, ...helperOptions }),\n 'when-let': (astNode: WhenLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenLetOutcomes({ astNode, ...helperOptions }),\n 'when': (astNode: WhenNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenOutcomes({ astNode, ...helperOptions }),\n 'when-not': (astNode: WhenNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenNotOutcomes({ astNode, ...helperOptions }),\n\n} satisfies Record<SpecialExpressionName, unknown>\n","import type { Outcomes } from '..'\nimport { builtin } from '../../builtin'\nimport { AstNodeType } from '../../constants/constants'\nimport { evaluate } from '../../evaluator'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context } from '../../evaluator/interface'\nimport type { Ast, AstNode } from '../../parser/interface'\nimport { findUnresolvedIdentifiers } from '../findUnresolvedIdentifiers'\nimport { combinate } from '../utils'\nimport { specialExpressionCalculator } from './specialExpressionCalculators'\n\nexport type CalculatePossibleAstNodes = (astNode: AstNode, indentifiers?: string[]) => AstNode[]\nexport type CombinateAstNodes = (astNodes: AstNode[], indentifiers?: string[]) => AstNode[][]\nexport type IsAstComputable = (node: AstNode | AstNode[] | AstNode[][]) => boolean\nexport type AddGlobaleIdentifier = (name: string) => void\n\nexport interface CalculatePossibleAstNodesHelperOptions<T extends AstNode> {\n astNode: T\n nilNode: AstNode\n calculatePossibleAstNodes: CalculatePossibleAstNodes\n combinateAstNodes: CombinateAstNodes\n isAstComputable: IsAstComputable\n addGlobalIdentifier: AddGlobaleIdentifier\n}\n\nexport type CalculatePossibleAstNodesHelper<T extends AstNode> = (\n options: CalculatePossibleAstNodesHelperOptions<T>,\n) => AstNode[]\n\nfunction isIdempotent(normalExpressionName: string): boolean {\n return !normalExpressionName.endsWith('!')\n || normalExpressionName === 'write!'\n}\n\nexport function calculateOutcomes(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n // First, we try to calculate outcomes for the whole astNodes array.\n // If that fails, we try to calculate outcomes for the array without the first element.\n // If that fails, we try to calculate outcomes for the array without the first two elements.\n // And so on.\n\n // This makes it possible to calculate outcomes for e.g.\n // (write! x) x\n\n // Problems occur for e.g.\n // (def x 1) (write! x) x\n // This should output [1], but since (write! x) fails to calculate outcomes, we get null.\n\n // Ok, but not optimal\n // The contract is that when an array is returned, it must be correct.\n // But returning null (indicating that the calculation failed) is always a way out.\n for (let i = 0; i < astNodes.length; i++) {\n const usingAstNode = astNodes.slice(i)\n const outcomes = calculateOutcomesInner(contextStack, usingAstNode)\n if (outcomes !== null)\n return outcomes\n }\n return null\n}\n\nexport function calculateOutcomesInner(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n const possibleAsts = calculatePossibleAsts(contextStack.clone(), astNodes)\n\n if (possibleAsts === null)\n return null\n\n const outcomes: Outcomes = []\n\n for (const possibleAst of possibleAsts) {\n const unresolvedIdentifiers = findUnresolvedIdentifiers(possibleAst, contextStack.clone(), builtin)\n if (unresolvedIdentifiers.size !== 0)\n return null\n\n const ast: Ast = {\n b: possibleAst,\n hasDebugData: true,\n }\n try {\n outcomes.push(evaluate(ast, contextStack.clone()))\n }\n catch (e) {\n outcomes.push(e)\n }\n }\n\n return outcomes\n}\n\nfunction calculatePossibleAsts(contextStack: ContextStack, astNodes: AstNode[]): AstNode[][] | null {\n let possibleAsts: AstNode[][]\n\n try {\n possibleAsts = combinate(\n astNodes.map(\n astNode => calculatePossibleAstNodes(contextStack, astNode),\n ),\n )\n }\n catch (e) {\n return null\n }\n return possibleAsts\n}\n\nconst nilNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'nil', token: undefined, p: [], n: undefined }\n\nfunction calculatePossibleAstNodes(contextStack: ContextStack, astNode: AstNode, newIndentifiers?: string[]): AstNode[] {\n const newContext = newIndentifiers\n ? newIndentifiers.reduce((acc: Context, identity) => {\n acc[identity] = { value: null }\n return acc\n }, {})\n : undefined\n const newContextStack = newContext ? contextStack.create(newContext) : contextStack\n\n if (astNode.t === AstNodeType.NormalExpression) {\n if (astNode.n && !isIdempotent(astNode.n))\n throw new Error(`NormalExpressionNode with name ${astNode.n} is not idempotent. Cannot calculate possible ASTs.`)\n\n return combinate(astNode.p.map(n => calculatePossibleAstNodes(newContextStack, n)))\n .map(p => ({ ...astNode, p }))\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n const helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'> = {\n nilNode,\n calculatePossibleAstNodes: (node: AstNode, identifiers?: string[]) => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers),\n combinateAstNodes: (nodes: AstNode[], identifiers?: string[]) =>\n combinate(nodes.map(node => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers))),\n isAstComputable: (node: AstNode | AstNode[] | AstNode[][]) =>\n calculateOutcomesInner(newContextStack, Array.isArray(node) ? node.flat() : [node]) !== null,\n addGlobalIdentifier: (name: string) => newContextStack.globalContext[name] = { value: null },\n }\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpressionCalculator[astNode.n](astNode as any, helperOptions)\n }\n return [astNode]\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 { calculateOutcomes } from './calculateOutcomes'\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// A set of potential outcomes from evaluating the AST\nexport type Outcomes = unknown[]\n\n// The result of analyzing an AST\nexport interface Analysis {\n unresolvedIdentifiers: UnresolvedIdentifiers\n outcomes: Outcomes | null\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 outcomes: calculateOutcomes(createContextStack(params), ast.b),\n }\n}\n","import { LitsError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { 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 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","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin, specialExpressionKeys } from '../builtin'\nimport type { FnNode } from '../builtin/specialExpressions/functions'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { Arity, FunctionArguments } from '../builtin/utils'\nimport { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { A_OperatorToken, AlgebraicTokenType, SymbolicBinaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asA_SymbolToken, assertA_OperatorToken, isA_BinaryOperatorToken, isA_OperatorToken, isA_SymbolToken, isFunctionOperator, isSymbolicUnaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asLBraceToken, asLBracketToken, assertEndNotationToken, assertRBraceToken, assertRBracketToken, assertRParenToken, isEndNotationToken, 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 { asSymbolNode } from '../typeGuards/astNode'\nimport { arrayToPairs } from '../utils'\nimport { parseNumber, 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 builtinExpression.validate?.({\n ...node,\n p: withoutCommentNodes(node.p),\n })\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 return createNamedNormalExpressionNode('+', [operand], token)\n case '-':\n return createNamedNormalExpressionNode('-', [operand], token)\n case '!':\n return createNamedNormalExpressionNode('not', [operand], token)\n case '~':\n return createNamedNormalExpressionNode('bit-not', [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 return createNamedNormalExpressionNode('pow', [left, right], token)\n case '*':\n return createNamedNormalExpressionNode('*', [left, right], token)\n case '/':\n return createNamedNormalExpressionNode('/', [left, right], token)\n case '%':\n return createNamedNormalExpressionNode('rem', [left, right], token)\n case '+':\n return createNamedNormalExpressionNode('+', [left, right], token)\n case '-':\n return createNamedNormalExpressionNode('-', [left, right], token)\n case '<<':\n return createNamedNormalExpressionNode('bit-shift-left', [left, right], token)\n case '>>':\n return createNamedNormalExpressionNode('bit-shift-right', [left, right], token)\n case '>>>':\n return createNamedNormalExpressionNode('unsigned-bit-shift-right', [left, right], token)\n case '++': {\n const leftString = createNamedNormalExpressionNode('str', [left], token)\n const rightString = createNamedNormalExpressionNode('str', [right], token)\n return createNamedNormalExpressionNode('str', [leftString, rightString], token)\n }\n case '<':\n return createNamedNormalExpressionNode('<', [left, right], token)\n case '<=':\n return createNamedNormalExpressionNode('<=', [left, right], token)\n case '>':\n return createNamedNormalExpressionNode('>', [left, right], token)\n case '>=':\n return createNamedNormalExpressionNode('>=', [left, right], token)\n case '==':\n return createNamedNormalExpressionNode('=', [left, right], token)\n case '!=':\n return createNamedNormalExpressionNode('!=', [left, right], token)\n case '&':\n return createNamedNormalExpressionNode('bit-and', [left, right], token)\n case '^':\n return createNamedNormalExpressionNode('bit-xor', [left, right], token)\n case '|':\n return createNamedNormalExpressionNode('bit-or', [left, right], token)\n case '&&':\n return {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n case '||':\n return {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n case '??':\n return {\n t: AstNodeType.SpecialExpression,\n n: '??',\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 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 advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): AstNode {\n return this.parseExpression()\n }\n\n private parseExpression(precedence = 0): AstNode {\n let left = this.parseOperand()\n\n while (!this.isAtEnd() && !isA_OperatorToken(this.peek(), ',') && !isRBracketToken(this.peek()) && !isRParenToken(this.peek())) {\n const operator = this.peek()\n\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\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 return parseSymbol(this.tokenStream, this.parseState)\n }\n case 'A_ReservedSymbol':\n return parseReservedSymbol(this.tokenStream, this.parseState)\n case 'PolNotation': {\n this.parseState.algebraic = false\n const astNodes: AstNode[] = []\n this.advance()\n do {\n astNodes.push(this.parseState.parseToken(this.tokenStream, this.parseState))\n } while (!isEndNotationToken(this.peek()))\n this.advance()\n this.parseState.algebraic = true\n if (astNodes.length === 1) {\n return astNodes[0]!\n }\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: astNodes,\n token: getTokenDebugData(token) && token,\n }\n }\n case 'AlgNotation': {\n this.advance()\n const node = this.parseOperand()\n assertEndNotationToken(this.peek())\n this.advance()\n return node\n }\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 if (isNamedFunction && symbol.v === 'for') {\n return this.parseFor(symbol)\n }\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'>\n switch (name) {\n case '??':\n case 'and':\n case 'comment':\n case 'cond':\n case 'declared?':\n case 'if':\n case 'if-not':\n case 'or':\n case 'when':\n case 'when-not':\n case 'do':\n case 'time!':\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 builtin.specialExpressions[node.n].validateParameterCount(node)\n return node\n }\n case 'let':\n return this.parseLet(symbol, params)\n case 'def':\n case 'defs':\n case 'if-let':\n case 'when-let':\n case 'when-first':\n case 'fn':\n case 'defn':\n case 'defns':\n case 'try':\n case 'recur':\n case 'loop':\n case 'doseq':\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 this.advance()\n let rest = false\n let letBindingObject: AstNode | undefined\n const args: string[] = []\n let restArg: string | undefined\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n if (letBindingObject) {\n throw new LitsError('Expected right parentheses', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isLBraceToken(this.peek())) {\n letBindingObject = this.parseObject()\n }\n else {\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 return null\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())) {\n return null\n }\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n return null\n }\n this.advance()\n if (!isA_OperatorToken(this.peek(), '=>')) {\n return null\n }\n this.advance()\n const letBindings = letBindingObject ? arrayToPairs(letBindingObject.p) : []\n const body = this.parseExpression()\n const arity: Arity = restArg !== undefined ? { min: args.length } : args.length\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [{\n as: {\n m: args,\n r: restArg,\n b: letBindings.map((pair) => {\n const key = pair[0] as StringNode\n const value = pair[1] as AstNode\n return {\n t: AstNodeType.Binding,\n n: key.v,\n v: value,\n p: [],\n token: getTokenDebugData(key.token) && key.token,\n }\n }),\n },\n b: [body],\n a: arity,\n }],\n token: getTokenDebugData(firstToken) && firstToken,\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(letSymbol: SymbolNode, params: AstNode[]): LetNode {\n if (params.length !== 2) {\n throw new LitsError('let expects two arguments', getTokenDebugData(letSymbol.token)?.sourceCodeInfo)\n }\n\n const letObject = params[0]!\n if (letObject.t !== AstNodeType.NormalExpression || letObject.n !== 'object') {\n throw new LitsError('let expects an object as first argument', getTokenDebugData(letObject.token)?.sourceCodeInfo)\n }\n\n const letBindings = arrayToPairs(letObject.p)\n const expression = params[1]!\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [expression],\n token: getTokenDebugData(letSymbol.token) && letSymbol.token,\n bs: letBindings.map((pair) => {\n const key = pair[0] as StringNode\n const value = pair[1] as AstNode\n\n return {\n t: AstNodeType.Binding,\n n: key.v,\n v: value,\n p: [],\n token: getTokenDebugData(key.token) && key.token,\n }\n }),\n }\n }\n\n private parseFor(forSymbol: SymbolNode): ForNode {\n const forLoopBindings: LoopBindingNode[] = [\n this.parseForLoopBinding(),\n ]\n let nextToken = this.peekAhead()\n while (isA_SymbolToken(nextToken) && nextToken[1] === 'of') {\n forLoopBindings.push(this.parseForLoopBinding())\n nextToken = this.peekAhead()\n }\n\n const expression = this.parseExpression()\n\n assertRParenToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'for',\n p: [expression],\n token: getTokenDebugData(forSymbol.token) && forSymbol.token,\n l: forLoopBindings,\n }\n }\n\n // export 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 private parseForLoopBinding(): LoopBindingNode {\n const bindingNode = this.parseBinding()\n\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\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)) {\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 this.advance()\n const letObject = this.parseObject()\n letBindings = arrayToPairs(letObject.p).map((pair) => {\n const key = pair[0] as StringNode\n const value = pair[1] as AstNode\n\n return {\n t: AstNodeType.Binding,\n n: key.v,\n v: value,\n p: [],\n token: getTokenDebugData(key.token) && key.token,\n }\n })\n }\n\n token = this.peek()\n let whenNode: AstNode | undefined\n let whileNode: AstNode | undefined\n while (\n isA_SymbolToken(token)\n && (\n (token[1] === 'when' && !modifiers.includes('&when'))\n || (token[1] === 'while' && !modifiers.includes('&while'))\n )\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 assertA_OperatorToken(token, ',')\n this.advance()\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 private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(): Token {\n return this.tokenStream.tokens[this.parseState.position + 1]!\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 { withoutCommentNodes } from '../removeCommentNodes'\nimport { asLParenToken, assertEndNotationToken, assertLBracketToken, assertRParenToken, isEndNotationToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { PolishTokenType } from '../tokenizer/polish/polishTokens'\nimport { asP_CommentToken, asP_RegexpShorthandToken, 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, assertEvenNumberOfParams } from '../typeGuards'\nimport { assertSymbolNode, isExpressionNode } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { AlgebraicParser } from './AlgebraicParser'\nimport { parseNumber, 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 assertEvenNumberOfParams(node)\n\n return node\n}\n\nfunction parseRegexpShorthand(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const tkn = asP_RegexpShorthandToken(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\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 builtinExpression.validate?.({\n ...node,\n p: withoutCommentNodes(node.p),\n })\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, validateParameterCount } = 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 validateParameterCount(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 'P_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 'AlgNotation': {\n parseState.position += 1\n parseState.algebraic = true\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n const node = algebraicParser.parse()\n assertEndNotationToken(tokenStream.tokens[parseState.position++])\n parseState.algebraic = false\n return node\n }\n case 'PolNotation': {\n const astNodes: AstNode[] = []\n parseState.position += 1\n do {\n astNodes.push(parsePolishToken(tokenStream, parseState))\n } while (!isEndNotationToken(asToken(tokenStream.tokens[parseState.position])))\n parseState.position += 1\n if (astNodes.length === 1) {\n return astNodes[0]!\n }\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: astNodes,\n token: astNodes[0]!.token,\n }\n }\n case 'P_CollectionAccessor':\n case 'P_Modifier':\n case 'RParen':\n case 'RBracket':\n case 'RBrace':\n case 'P_Whitespace':\n case 'EndNotation':\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 const safeTokenStream = removeUnnecessaryTokens(tokenStream)\n\n const ast: Ast = {\n b: [],\n hasDebugData: safeTokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n algebraic: safeTokenStream.algebraic ?? false,\n parseToken,\n }\n\n while (parseState.position < safeTokenStream.tokens.length) {\n ast.b.push(parseToken(safeTokenStream, parseState))\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\nexport function parseToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n if (parseState.algebraic) {\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n return algebraicParser.parse()\n }\n\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 { AlgebraicNotationToken, EndNotationToken, LBraceToken, LBracketToken, LParenToken, PolishNotationToken, RBraceToken, RBracketToken, RParenToken, 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)\nconst tokenizePolishNotation: Tokenizer<PolishNotationToken> = (input, position) =>\n tokenizeSimpleToken('PolNotation', '$`', input, position)\nconst tokenizeAlgebraicNotation: Tokenizer<AlgebraicNotationToken> = (input, position) =>\n tokenizeSimpleToken('AlgNotation', '@`', input, position)\nconst tokenizeEndNotation: Tokenizer<EndNotationToken> = (input, position) =>\n tokenizeSimpleToken('EndNotation', '`', 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 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 tokenizePolishNotation,\n tokenizeAlgebraicNotation,\n tokenizeEndNotation,\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n] as const\n","import type { Any } from '../../interface'\n\nexport const algebraicReservedNamesRecord: Record<string, { value: Any, forbidden?: true }> = {\n 'true': { value: true },\n 'false': { value: false },\n 'nil': { value: null },\n 'null': { value: null },\n 'def': { value: null, forbidden: true },\n 'defs': { value: null, forbidden: true },\n 'if-let': { value: null, forbidden: true },\n 'when-let': { value: null, forbidden: true },\n 'when-first': { value: null, forbidden: true },\n 'fn': { value: null, forbidden: true },\n 'defn': { value: null, forbidden: true },\n 'defns': { value: null, forbidden: true },\n 'try': { value: null, forbidden: true },\n 'recur': { value: null, forbidden: true },\n 'loop': { value: null, forbidden: true },\n 'time!': { value: null, forbidden: true },\n 'doseq': { value: null, forbidden: true },\n\n} as const\n\ntype AlgebraicReservedName = keyof typeof algebraicReservedNamesRecord\n\nexport const algebraicReservedNames: AlgebraicReservedName[] = Object.keys(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 { 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_ReservedSymbolToken: Tokenizer<A_ReservedSymbolToken> = (input, position) => {\n for (const [reservedName, { forbidden }] of Object.entries(algebraicReservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && identifierRegExp.test(nextChar))\n continue\n\n const name = input.substring(position, position + length)\n if (name === reservedName) {\n if (forbidden)\n throw new LitsError(`${name} is forbidden!`, undefined)\n\n return [length, ['A_ReservedSymbol', reservedName]]\n }\n }\n return NO_MATCH\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_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 tokenizeString,\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_RegexpShorthandToken,\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 for (const [reservedName, { forbidden }] of Object.entries(polishReservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && P_symbolRegExp.test(nextChar)) {\n continue\n }\n\n const symbol = input.substring(position, position + length)\n if (symbol === reservedName) {\n if (forbidden)\n throw new LitsError(`${symbol} is forbidden!`, undefined)\n\n return [length, ['P_ReservedSymbol', reservedName]]\n }\n }\n return NO_MATCH\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\nexport const tokenizeP_RegexpShorthand: Tokenizer<P_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, ['P_RegexpShorthand', `#${token[1]}${options}`]]\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_Symbol,\n tokenizeP_Modifier,\n tokenizeP_RegexpShorthand,\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 { isAlgebraicNotationToken, isEndNotationToken, isPolishNotationToken } from './common/commonTokens'\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 const notationStack: ('polish' | 'algebraic')[] = [params.algebraic ? 'algebraic' : 'polish']\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 = notationStack.at(-1) === '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 if (isAlgebraicNotationToken(token)) {\n notationStack.push('algebraic')\n }\n if (isPolishNotationToken(token)) {\n notationStack.push('polish')\n }\n if (isEndNotationToken(token)) {\n notationStack.pop()\n if (notationStack.length < 1) {\n throw new LitsError('Unexpected end directive `.', debugData?.sourceCodeInfo)\n }\n }\n }\n }\n\n if (notationStack.length > 1) {\n throw new LitsError('Missing end directive `.', createSourceCodeInfo(input, position, params.filePath))\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 'PolNotation': return '$`'\n case 'AlgNotation': return '@`'\n case 'EndNotation': 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.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/constants/constants.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/utils/debug/getSourceCodeInfo.ts","../src/typeGuards/number.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/removeCommentNodes/removeCommentNodesFromSpecialExpression.ts","../src/removeCommentNodes/index.ts","../src/typeGuards/index.ts","../src/builtin/normalExpressions/categories/bitwise.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/declared.ts","../src/tokenizer/polish/polishReservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/defs.ts","../src/builtin/specialExpressions/do.ts","../src/analyze/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/if-let.ts","../src/builtin/specialExpressions/if-not.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/time.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/when.ts","../src/builtin/specialExpressions/when-first.ts","../src/builtin/specialExpressions/when-let.ts","../src/builtin/specialExpressions/when-not.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/calculateOutcomes/calculateAndOutcomes.ts","../src/analyze/calculateOutcomes/calculateCondOutcomes.ts","../src/analyze/calculateOutcomes/calculateDeclaredOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefsOutcomes.ts","../src/analyze/calculateOutcomes/calculateDoOutcomes.ts","../src/analyze/calculateOutcomes/calculateFunctionOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfOutcomes.ts","../src/analyze/calculateOutcomes/calculateLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopsOutcomes.ts","../src/analyze/calculateOutcomes/calculateOrOutcomes.ts","../src/analyze/calculateOutcomes/calculateQqOutcomes.ts","../src/analyze/calculateOutcomes/calculateThrowOutcomes.ts","../src/analyze/calculateOutcomes/calculateTimeOutcomes.ts","../src/analyze/calculateOutcomes/calculateTryOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenOutcomes.ts","../src/analyze/calculateOutcomes/calculateRecurOutcomes.ts","../src/analyze/calculateOutcomes/calculateCommentOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopOutcomes.ts","../src/analyze/calculateOutcomes/specialExpressionCalculators.ts","../src/analyze/calculateOutcomes/index.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 { LitsError } from '../errors'\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, actual?: Token): never {\n throw new LitsError(`Unexpected token: ${actual}, expected ${expected}`, undefined)\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 'AlgNotation',\n 'PolNotation',\n 'EndNotation',\n] as const\n\nexport const commomValueTokenTypes = [\n 'String',\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'>\nexport type AlgebraicNotationToken = GenericCommonSimpleToken<'AlgNotation'>\nexport type PolishNotationToken = GenericCommonSimpleToken<'PolNotation'>\nexport type EndNotationToken = GenericCommonSimpleToken<'EndNotation'>\n\nexport type StringToken = GenericCommonValueToken<'String'>\n\nexport type CommonSimpleToken =\n | LParenToken\n | RParenToken\n | LBracketToken\n | RBracketToken\n | LBraceToken\n | RBraceToken\n | AlgebraicNotationToken\n | PolishNotationToken\n | EndNotationToken\n\nexport type CommonValueToken =\n | StringToken\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', 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', 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', 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', 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', 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', 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', token)\n }\n}\nexport function asStringToken(token?: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isAlgebraicNotationToken(token?: Token): token is AlgebraicNotationToken {\n return token?.[0] === 'AlgNotation'\n}\nexport function assertAlgebraicNotationToken(token?: Token): asserts token is AlgebraicNotationToken {\n if (!isAlgebraicNotationToken(token)) {\n throwUnexpectedToken('AlgNotation', token)\n }\n}\nexport function asAlgebraicNotationToken(token?: Token): AlgebraicNotationToken {\n assertAlgebraicNotationToken(token)\n return token\n}\n\nexport function isPolishNotationToken(token?: Token): token is PolishNotationToken {\n return token?.[0] === 'PolNotation'\n}\nexport function assertPolishNotationToken(token?: Token): asserts token is PolishNotationToken {\n if (!isPolishNotationToken(token)) {\n throwUnexpectedToken('PolNotation', token)\n }\n}\nexport function asPolishNotationToken(token?: Token): PolishNotationToken {\n assertPolishNotationToken(token)\n return token\n}\n\nexport function isEndNotationToken(token?: Token): token is EndNotationToken {\n return token?.[0] === 'EndNotation'\n}\nexport function assertEndNotationToken(token?: Token): asserts token is EndNotationToken {\n if (!isEndNotationToken(token)) {\n throwUnexpectedToken('EndNotation', token)\n }\n}\nexport function asEndNotationToken(token?: Token): EndNotationToken {\n assertEndNotationToken(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'\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 'and',\n 'comment',\n 'cond',\n 'declared?',\n 'if',\n 'if-not',\n 'or',\n 'when',\n 'when-not',\n 'do',\n 'time!',\n 'throw',\n 'let',\n 'def',\n 'defs',\n 'if-let',\n 'when-let',\n 'when-first',\n 'fn',\n 'defn',\n 'defns',\n 'try',\n 'recur',\n 'loop',\n 'doseq',\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 = GenericAlgebraicValueToken<'A_ReservedSymbol'>\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(token: Token | undefined): token is A_SymbolToken {\n return token?.[0] === 'A_Symbol'\n}\nexport function assertA_SymbolToken(token: Token | undefined): asserts token is A_SymbolToken {\n if (!isA_SymbolToken(token)) {\n throwUnexpectedToken('A_Symbol', token)\n }\n}\nexport function asA_SymbolToken(token: Token | undefined): A_SymbolToken {\n assertA_SymbolToken(token)\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', 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(token: Token | undefined): token is A_ReservedSymbolToken {\n return token?.[0] === 'A_ReservedSymbol'\n}\nexport function assertA_ReservedSymbolToken(token: Token | undefined): asserts token is A_ReservedSymbolToken {\n if (!isA_ReservedSymbolToken(token)) {\n throwUnexpectedToken('A_ReservedSymbol', token)\n }\n}\nexport function asA_ReservedSymbolToken(token: Token | undefined): A_ReservedSymbolToken {\n assertA_ReservedSymbolToken(token)\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', 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', 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', 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', 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', 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', 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 = ['&', '&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_RegexpShorthand',\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_RegexpShorthandToken = GenericPolishValueToken<'P_RegexpShorthand'>\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_RegexpShorthandToken\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', 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', 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', 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', token)\n }\n}\nexport function asP_ModifierToken(token?: Token): P_ModifierToken {\n assertP_ModifierToken(token)\n return token\n}\n\nexport function isP_RegexpShorthandToken(token?: Token): token is P_RegexpShorthandToken {\n return token?.[0] === 'P_RegexpShorthand'\n}\nexport function assertP_RegexpShorthandToken(token?: Token): asserts token is P_RegexpShorthandToken {\n if (!isP_RegexpShorthandToken(token)) {\n throwUnexpectedToken('P_RegexpShorthand', token)\n }\n}\nexport function asP_RegexpShorthandToken(token?: Token): P_RegexpShorthandToken {\n assertP_RegexpShorthandToken(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', 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', 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', 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', 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', 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 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 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 { 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, DefnsNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { IfLetNode } from '../builtin/specialExpressions/if-let'\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 { TimeNode } from '../builtin/specialExpressions/time'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { WhenNode } from '../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../builtin/specialExpressions/when-not'\nimport type { RemoveOptions } from '.'\n\nconst specialExpressionCommentRemovers = {\n 'and': (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 'declared?': (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 'defns': (_node: DefnsNode, _removeOptions: RemoveOptions) => {},\n 'defs': (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-let': (_node: IfLetNode, _removeOptions: RemoveOptions) => {},\n 'if': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'if-not': (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 'or': (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 'time!': (node: TimeNode, 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 'when-first': (_node: WhenFirstNode, _removeOptions: RemoveOptions) => {},\n 'when-let': (_node: WhenLetNode, _removeOptions: RemoveOptions) => {},\n 'when': (_node: WhenNode, _removeOptions: RemoveOptions) => {},\n 'when-not': (_node: WhenNotNode, _removeOptions: RemoveOptions) => {},\n\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 'and']\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 { 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\ntype Count = number | { min?: number, max?: number }\n\nexport function assertEvenNumberOfParams(node: GenericNode): void {\n const length = withoutCommentNodes(node.p).length\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments, expected an even number, got ${valueToString(length)}.`,\n getTokenDebugData(node.token)?.sourceCodeInfo,\n )\n }\n}\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 } = count\n if (min === undefined && max === undefined)\n throw new LitsError('Min or max must be specified.', sourceCodeInfo)\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 { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n 'bit-shift-left': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'bit-shift-right': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'unsigned-bit-shift-right': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'bit-not': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'bit-and': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-and-not': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-or': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-xor': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(3, node),\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 validate: node => assertNumberOfParams(3, node),\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 validate: node => assertNumberOfParams({ min: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n array: {\n evaluate: (params): Arr => params,\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 validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport { asArray, 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n remove: {\n evaluate: ([fn, input], 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 validate: node => assertNumberOfParams(2, node),\n },\n remove_at: {\n evaluate: ([index, input], 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 validate: node => assertNumberOfParams(2, node),\n },\n split_at: {\n evaluate: ([pos, seq], 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 validate: node => assertNumberOfParams(2, node),\n },\n\n split_with: {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n\n group_by: {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams(2, node),\n },\n\n partition: {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq\n = len === 2\n ? asSeq(params[1], sourceCodeInfo)\n : len === 3\n ? asSeq(params[2], sourceCodeInfo)\n : asSeq(params[3], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n const pad = len === 4 ? (params[2] === null ? [] : asArray(params[2], sourceCodeInfo)) : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 4 }, node),\n },\n\n partition_all: {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq = len === 2 ? asSeq(params[1], sourceCodeInfo) : asSeq(params[2], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n partition_by: {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 type { NormalExpressionNode } from '../../../parser/interface'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams(1, node),\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n validate: node => assertNumberOfParams(1, node),\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 },\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 },\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 },\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 },\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'rem': {\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'sqrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cbrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pow': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'max_safe_integer': {\n evaluate: (): number => {\n return Number.MAX_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min_safe_integer': {\n evaluate: (): number => {\n return Number.MIN_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'max_value': {\n evaluate: (): number => {\n return Number.MAX_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min_value': {\n evaluate: (): number => {\n return Number.MIN_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'epsilon': {\n evaluate: (): number => {\n return Number.EPSILON\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'positive_infinity': {\n evaluate: (): number => {\n return Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'negative_infinity': {\n evaluate: (): number => {\n return Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'nan': {\n evaluate: (): number => {\n return Number.NaN\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'e': {\n evaluate: (): number => {\n return Math.E\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'pi': {\n evaluate: (): number => {\n return Math.PI\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'exp': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.exp(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { version } from '../../../../package.json'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nconst uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\nconst xyRegexp = /[xy]/g\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'equal?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n return deepEqual(asAny(a, sourceCodeInfo), asAny(b, sourceCodeInfo), sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'not': {\n evaluate: ([first]): boolean => !first,\n validate: node => assertNumberOfParams(1, node),\n },\n 'inst-ms!': {\n evaluate: (): number => {\n return Date.now()\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'inst-ms->iso-date-time': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'iso-date-time->inst-ms': {\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 validate: node => assertNumberOfParams(1, node),\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 },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'compare': {\n evaluate: ([a, b]): number => {\n return compare(a, b)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'uuid!': {\n evaluate: (): string => {\n return uuidTemplate.replace(xyRegexp, (character) => {\n const randomNbr = Math.floor(Math.random() * 16)\n const newValue = character === 'x' ? randomNbr : (randomNbr & 0x3) | 0x8\n return newValue.toString(16)\n })\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'lits-version!': {\n evaluate: (): Any => {\n return version\n },\n validate: node => assertNumberOfParams(0, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertEvenNumberOfParams, assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertEvenNumberOfParams(node),\n },\n\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 0 }, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nil?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'positive_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'negative_infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n}\n","import type { RegularExpression } from '../../../parser/interface'\nimport { assertRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n match: {\n evaluate: ([regexp, text], 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 validate: node => assertNumberOfParams(2, node),\n },\n replace: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const regExp = new RegExp(regexp.s, regexp.f)\n return str.replace(regExp, value)\n },\n validate: node => assertNumberOfParams(3, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr } from '../../../interface'\nimport type { NormalExpressionNode } from '../../../parser/interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 },\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number-to-string': {\n evaluate: (params, sourceCodeInfo): string => {\n const [num, base] = params\n assertNumber(num, sourceCodeInfo, { finite: true })\n if (params.length === 1) {\n return `${num}`\n }\n else {\n assertNumber(base, sourceCodeInfo, { finite: true })\n if (base !== 2 && base !== 8 && base !== 10 && base !== 16) {\n throw new LitsError(\n `Expected \"number-to-string\" base argument to be 2, 8, 10 or 16, got: ${base}`,\n sourceCodeInfo,\n )\n }\n if (base === 10)\n return `${num}`\n\n assertNumber(num, sourceCodeInfo, { integer: true, nonNegative: true })\n return Number(num).toString(base)\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 10 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n\n identity: {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 },\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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<'and'> {}\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: 'and',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: () => undefined,\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 validateParameterCount: () => undefined,\n evaluate: () => null,\n findUnresolvedIdentifiers: () => new Set(),\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertEvenNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertEvenNumberOfParams(node),\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 { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface DeclaredNode extends CommonSpecialExpressionNode<'declared?'> {}\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('declared?'),\n validateParameterCount: node => assertNumberOfParams(1, node),\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams(2, node),\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.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\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.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefsNode extends CommonSpecialExpressionNode<'defs'> {}\n\nexport const defsSpecialExpression: BuiltinSpecialExpression<null, DefsNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defs',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: node => assertNumberOfParams(2, node),\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n\n assertNameNotDefined(name, contextStack, builtin, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const subNode = node.p[1]!\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: 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 validateParameterCount: () => undefined,\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 }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\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 { asAstNode, assertSymbolNode } from '../../typeGuards/astNode'\nimport { asString, assertString } from '../../typeGuards/string'\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 DefnsNode extends CommonSpecialExpressionNode<'defns'> {\n f: AstNode\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 validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defn', node, contextStack, evaluateAstNode)\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.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n contextStack.globalContext[node.f.v] = { value: true }\n const newContext: Context = { [node.f.v]: { value: true } }\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const defnsSpecialExpression: BuiltinSpecialExpression<null, DefnsNode> = {\n polishParse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseToken } = parsers\n const functionName = parseToken(tokenStream, parseState)\n\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefnsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defns',\n p: [],\n f: functionName,\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defns', node, contextStack, evaluateAstNode)\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.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = evaluateAstNode(asAstNode(node.f, sourceCodeInfo), contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n const newContext = { [name]: { value: true } }\n\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 validateParameterCount: () => undefined,\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 getFunctionName(\n expressionName: 'defn' | 'defns',\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): string {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n if (expressionName === 'defn')\n return ((node as DefnNode).f).v\n\n const name = evaluateAstNode((node as DefnsNode).f, contextStack)\n return asString(name, sourceCodeInfo)\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 | DefnsNode | 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 '&':\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 { LitsError } 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, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfLetNode extends CommonSpecialExpressionNode<'if-let'> {\n b: BindingNode\n}\n\nexport const ifLetSpecialExpression: BuiltinSpecialExpression<Any, IfLetNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: IfLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-let',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n validateParameterCount: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const locals: Context = {}\n const bindingValue = evaluateAstNode(node.b.v, contextStack)\n if (bindingValue) {\n locals[node.b.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n const thenForm = asAstNode(node.p[0], sourceCodeInfo)\n return evaluateAstNode(thenForm, newContextStack)\n }\n if (node.p.length === 2) {\n const elseForm = asAstNode(node.p[1], sourceCodeInfo)\n return evaluateAstNode(elseForm, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext: Context = { [node.b.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([node.b.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface IfNotNode extends CommonSpecialExpressionNode<'if-not'> {}\n\nexport const ifNotSpecialExpression: BuiltinSpecialExpression<Any, IfNotNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('if-not'),\n validateParameterCount: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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, parseTokensUntilClosingBracket }) => {\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: params,\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const newContextStack = contextStack.create(locals)\n for (const binding of node.bs) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, newContextStack)\n locals[binding.n] = { value: bindingValue }\n }\n\n let result: Any = null\n for (const astNode of node.p)\n result = evaluateAstNode(astNode, newContextStack)\n\n return result\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 bindingContext: Context = {}\n const bindingResults = node.bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = findUnresolvedIdentifiers([valueNode], contextStack.create(bindingContext), builtin)\n bindingContext[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 validateParameterCount: () => undefined,\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, assertNumberOfParams } 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 '&':\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 validateParameterCount: node => assertNumberOfParams(1, node),\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 validateParameterCount: node => assertNumberOfParams(1, node),\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<'or'> {}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('or'),\n validateParameterCount: () => undefined,\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validateParameterCount: () => undefined,\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 { assertNumberOfParams } from '../../typeGuards'\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 validateParameterCount: node => assertNumberOfParams(1, node),\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 type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface TimeNode extends CommonSpecialExpressionNode<'time!'> {}\n\nexport const timeSpecialExpression: BuiltinSpecialExpression<Any, TimeNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('time!'),\n validateParameterCount: node => assertNumberOfParams(1, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const param = node.p[0]!\n const startTime = Date.now()\n const result = evaluateAstNode(param, contextStack)\n const totalTime = Date.now() - startTime\n // eslint-disable-next-line no-console\n console.log(`Elapsed time: ${totalTime} ms`)\n\n return result\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 { assertNumberOfParams } from '../../typeGuards'\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\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 validateParameterCount: node => assertNumberOfParams(1, node),\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 = {\n [errorNode.v]: { value: asAny(error, getTokenDebugData(node.token)?.sourceCodeInfo) },\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 = {\n [errorNode.v]: { value: true },\n }\n const catchResult = findUnresolvedIdentifiers([catchExpression], contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface WhenNode extends CommonSpecialExpressionNode<'when'> {}\n\nexport const whenSpecialExpression: BuiltinSpecialExpression<Any, WhenNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('when'),\n validateParameterCount: node => assertNumberOfParams({ min: 1 }, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n if (!evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\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 { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { isSeq } from '../../typeGuards/lits'\nimport { toAny } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenFirstNode extends CommonSpecialExpressionNode<'when-first'> {\n b: BindingNode\n}\n\nexport const whenFirstSpecialExpression: BuiltinSpecialExpression<Any, WhenFirstNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenFirstNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-first',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const { b: binding } = node\n const evaluatedBindingForm = evaluateAstNode(binding.v, contextStack)\n if (!isSeq(evaluatedBindingForm)) {\n throw new LitsError(\n `Expected undefined or a sequence, got ${valueToString(evaluatedBindingForm)}`,\n getTokenDebugData(node.token)?.sourceCodeInfo,\n )\n }\n\n if (evaluatedBindingForm.length === 0)\n return null\n\n const bindingValue = toAny(evaluatedBindingForm[0])\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\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 const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\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 { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenLetNode extends CommonSpecialExpressionNode<'when-let'> {\n b: BindingNode\n}\n\nexport const whenLetSpecialExpression: BuiltinSpecialExpression<Any, WhenLetNode> = {\n polishParse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-let',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n validateParameterCount: () => undefined,\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { b: binding } = node\n const locals: Context = {}\n const bindingValue = evaluateAstNode(binding.v, contextStack)\n if (!bindingValue)\n return null\n\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\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 const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { getCommonPolishSpecialExpressionParser } from './commonParser'\n\nexport interface WhenNotNode extends CommonSpecialExpressionNode<'when-not'> {}\n\nexport const whenNotSpecialExpression: BuiltinSpecialExpression<Any, WhenNotNode> = {\n polishParse: getCommonPolishSpecialExpressionParser('when-not'),\n validateParameterCount: node => assertNumberOfParams({ min: 1 }, node),\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n if (evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\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 { declaredSpecialExpression } from './specialExpressions/declared'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { defsSpecialExpression } from './specialExpressions/defs'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, defnsSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { ifLetSpecialExpression } from './specialExpressions/if-let'\nimport { ifNotSpecialExpression } from './specialExpressions/if-not'\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 { timeSpecialExpression } from './specialExpressions/time'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { whenSpecialExpression } from './specialExpressions/when'\nimport { whenFirstSpecialExpression } from './specialExpressions/when-first'\nimport { whenLetSpecialExpression } from './specialExpressions/when-let'\nimport { whenNotSpecialExpression } from './specialExpressions/when-not'\n\nconst specialExpressions = {\n 'and': andSpecialExpression,\n 'comment': commentSpecialExpression,\n 'cond': condSpecialExpression,\n 'def': defSpecialExpression,\n 'defn': defnSpecialExpression,\n 'defns': defnsSpecialExpression,\n 'defs': defsSpecialExpression,\n 'do': doSpecialExpression,\n 'doseq': doseqSpecialExpression,\n 'for': forSpecialExpression,\n 'fn': fnSpecialExpression,\n 'if': ifSpecialExpression,\n 'if-let': ifLetSpecialExpression,\n 'if-not': ifNotSpecialExpression,\n 'let': letSpecialExpression,\n 'loop': loopSpecialExpression,\n 'or': orSpecialExpression,\n 'recur': recurSpecialExpression,\n 'throw': throwSpecialExpression,\n 'time!': timeSpecialExpression,\n 'try': trySpecialExpression,\n 'when': whenSpecialExpression,\n 'when-first': whenFirstSpecialExpression,\n 'when-let': whenLetSpecialExpression,\n 'when-not': whenNotSpecialExpression,\n 'declared?': declaredSpecialExpression,\n '??': qqSpecialExpression,\n} as const\n\nexport type SpecialExpressionName = keyof typeof specialExpressions\nexport type CommonSpecialExpressionName = keyof Pick<\n typeof specialExpressions,\n | '??'\n | '??'\n | 'and'\n | 'comment'\n | 'cond'\n | 'declared?'\n | 'do'\n | 'if'\n | 'if-not'\n | 'or'\n | 'time!'\n | 'when'\n | 'when-not'\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.contexts = contexts\n this.globalContext = asNonUndefined(contexts[0])\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 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\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 for (const node of safeAstNode.b)\n result = evaluateAstNode(node, contextStack)\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 { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport const findUnresolvedIdentifiers: FindUnresolvedIdentifiers = (ast, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(ast) ? ast : ast.b\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 { AndNode } from '../../builtin/specialExpressions/and'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateAndOutcomes: CalculatePossibleAstNodesHelper<AndNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<AndNode>(p => ({\n n: 'and',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }))\n}\n","import type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { AstNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport { arrayToPairs } from '../../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCondOutcomes: CalculatePossibleAstNodesHelper<CondNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n isAstComputable,\n}) => {\n const testNodes = arrayToPairs(astNode.p).map(([t]) => t!)\n if (isAstComputable(testNodes)) {\n return combinate(arrayToPairs(astNode.p)\n // Create a list of ast nodes from the test and form of each condition\n .reduce((acc: AstNode[][], [test, form]) => {\n acc.push(calculatePossibleAstNodes(test!), calculatePossibleAstNodes(form!))\n return acc\n }, []),\n )\n // Create a new CondNode for each combination of test and form outcomes\n .map<CondNode>(conditionAsts => ({\n ...astNode,\n c: arrayToPairs(conditionAsts).map(([t, f]) => ({ t: t!, f: f! })),\n }))\n }\n\n return [\n ...arrayToPairs(astNode.p).flatMap(([_, form]) => calculatePossibleAstNodes(form!)),\n nilNode,\n ]\n}\n","import type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { AstNode } from '../../parser/interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nconst trueNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'true', token: undefined, p: [], n: undefined }\nconst falseNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'false', token: undefined, p: [], n: undefined }\n\nexport const calculateDeclaredOutcomes: CalculatePossibleAstNodesHelper<DeclaredNode> = (\n {\n astNode,\n isAstComputable,\n },\n) => {\n if (isAstComputable(astNode.p))\n return [trueNode]\n\n return [trueNode, falseNode]\n}\n","import type { DefNode } from '../../builtin/specialExpressions/def'\nimport { asSymbolNode } from '../../typeGuards/astNode'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefOutcomes: CalculatePossibleAstNodesHelper<DefNode> = ({\n astNode,\n calculatePossibleAstNodes,\n addGlobalIdentifier,\n}) => {\n const nameNode = asSymbolNode(astNode.p[0])\n const valueNode = astNode.p[1]!\n addGlobalIdentifier(nameNode.v)\n return calculatePossibleAstNodes(valueNode)\n .map<DefNode>(node => ({\n ...astNode,\n p: [nameNode, node],\n }))\n}\n","import type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefsOutcomes: CalculatePossibleAstNodesHelper<DefsNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<DefsNode>(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDoOutcomes: CalculatePossibleAstNodesHelper<DoNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p).map<DoNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { FunctionOverload } from '../../builtin/utils'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper, CombinateAstNodes } from '.'\n\nfunction calculateFunctionOverloadOutcomes(combinateAstNodes: CombinateAstNodes, functionOverloads: FunctionOverload[]) {\n return combinate(functionOverloads\n // For each overload, calculate the possible outcomes for each parameter\n .map<FunctionOverload[]>(functionOverload =>\n combinateAstNodes(functionOverload.b, [\n functionOverload.as.m,\n functionOverload.as.b.map(bindingNode => bindingNode.n),\n functionOverload.as.r ?? [],\n ].flat())\n\n // For each combination of parameter outcomes, create a new overload\n .map<FunctionOverload>(body => ({\n ...functionOverload,\n b: body,\n })),\n ),\n // For each combination of overloads, create a new DefnNode\n )\n}\n\nexport const calculateDefnOutcomes: CalculatePossibleAstNodesHelper<DefnNode> = ({\n astNode,\n combinateAstNodes,\n addGlobalIdentifier,\n}) => {\n addGlobalIdentifier(astNode.f.v)\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n\nexport const calculateDefnsOutcomes: CalculatePossibleAstNodesHelper<DefnsNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculatePossibleAstNodes(astNode.f).flatMap(functionName =>\n calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnsNode>(functionOverloads => ({\n ...astNode,\n f: functionName,\n o: functionOverloads,\n })),\n )\n}\n\nexport const calculateFnOutcomes: CalculatePossibleAstNodesHelper<FnNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<FnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n","import type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfLetOutcomes: CalculatePossibleAstNodesHelper<IfLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n const thenBranch = astNode.p[0]!\n const elseBranch = astNode.p[1] ?? nilNode\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap<IfLetNode>(b => combinateAstNodes(astNode.p, [newIdentifier])\n .map<IfLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfNotOutcomes: CalculatePossibleAstNodesHelper<IfNotNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if-not',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfOutcomes: CalculatePossibleAstNodesHelper<IfNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { BindingNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLetOutcomes: CalculatePossibleAstNodesHelper<LetNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n try {\n // check bindings, if any binding value cannot be calculated, convert the whole let to a do-expression\n if (!isAstComputable(astNode.bs.map(b => calculatePossibleAstNodes(b.v))))\n throw new Error('Could not calculate binding value')\n }\n catch {\n const doNodes: DoNode[] = combinateAstNodes(astNode.p)\n .map((p) => {\n return {\n n: 'do',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }\n })\n return doNodes\n }\n\n const newIdentifiers = astNode.bs.map(bindingNode => bindingNode.n)\n const letNodes: LetNode[] = combinate(\n astNode.bs.map<BindingNode[]>(bindingNode =>\n calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValues => ({ ...bindingNode, v: bindingValues })),\n ),\n )\n .flatMap(bindingNodes => combinate(astNode.p.map(p => calculatePossibleAstNodes(p, newIdentifiers)))\n .map((p) => {\n return {\n n: 'let',\n bs: bindingNodes,\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }\n }))\n\n return letNodes\n}\n","import type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodes, CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateForOutcomes: CalculatePossibleAstNodesHelper<ForNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate for loop, not deterministic')\n\n return [astNode]\n}\n\nexport const calculateDoSeqOutcomes: CalculatePossibleAstNodesHelper<DoSeqNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate doSeq node, not deterministic')\n\n return [astNode]\n}\n\nfunction isDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: ForNode | DoSeqNode): boolean {\n for (const { b, l, wn, we } of astNode.l) {\n if (l && l.some(({ v }) => !astIsDeterministic(calculatePossibleAstNodes, v)))\n return false\n\n if (!astIsDeterministic(calculatePossibleAstNodes, b.v))\n return false\n\n if (wn && !astIsDeterministic(calculatePossibleAstNodes, wn))\n return false\n\n if (we && !astIsDeterministic(calculatePossibleAstNodes, we))\n return false\n }\n\n if (!astIsDeterministic(calculatePossibleAstNodes, astNode.p[0]!))\n return false\n\n return true\n}\n\nfunction astIsDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: AstNode) {\n return calculatePossibleAstNodes(astNode).length === 1\n}\n","import type { OrNode } from '../../builtin/specialExpressions/or'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateOrOutcomes: CalculatePossibleAstNodesHelper<OrNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<OrNode>(p => ({\n n: 'or',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }))\n}\n","import type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateQqOutcomes: CalculatePossibleAstNodesHelper<QqNode> = ({\n astNode,\n combinateAstNodes,\n isAstComputable,\n}) => {\n if (!isAstComputable(astNode.p[0]!))\n throw new Error('First argument of ?? not computable')\n\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateThrowOutcomes: CalculatePossibleAstNodesHelper<ThrowNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!).map<ThrowNode>(m => ({\n ...astNode,\n p: [m],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTimeOutcomes: CalculatePossibleAstNodesHelper<TimeNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!)\n .map<DoNode>(p => ({\n ...astNode,\n n: 'do',\n p: [p],\n }))\n}\n","import type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { AstNode } from '../../parser/interface'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTryOutcomes: CalculatePossibleAstNodesHelper<TryNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n const { vals, throws } = calculatePossibleAstNodes(astNode.p[0]!).reduce((acc: { vals: AstNode[], throws: AstNode[] }, node) => {\n if (node.n === 'throw') {\n acc.throws.push((node as ThrowNode).p[0]!)\n }\n else {\n acc.vals.push(node)\n }\n return acc\n }, { vals: [], throws: [] })\n\n const catches = throws.flatMap<AstNode>((throwNode) => {\n const letNode: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n bs: [{\n t: AstNodeType.Binding,\n n: astNode.e.v,\n v: throwNode,\n token: undefined,\n p: [],\n }],\n p: [astNode.ce],\n token: undefined,\n }\n return calculatePossibleAstNodes(letNode)\n })\n\n return [\n ...vals,\n ...catches,\n ]\n}\n","import type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenFirstOutcomes: CalculatePossibleAstNodesHelper<WhenFirstNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v))\n throw new Error('Could not calculate binding value')\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenFirstNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenLetOutcomes: CalculatePossibleAstNodesHelper<WhenLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...combinateAstNodes(astNode.p)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenNotOutcomes: CalculatePossibleAstNodesHelper<WhenNotNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map<WhenNotNode>(p => ({\n n: 'when-not',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenOutcomes: CalculatePossibleAstNodesHelper<WhenNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'when',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n}\n","import type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateRecurOutcomes: CalculatePossibleAstNodesHelper<RecurNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCommentOutcomes: CalculatePossibleAstNodesHelper<CommentExpressionNode> = ({\n nilNode,\n}) => {\n return [nilNode]\n}\n","import type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLoopOutcomes: CalculatePossibleAstNodesHelper<LoopNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p, astNode.bs.map(bindingNode => bindingNode.n))\n .map<LoopNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { SpecialExpressionName } from '../../builtin'\nimport type { AndNode } from '../../builtin/specialExpressions/and'\nimport type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { DefNode } from '../../builtin/specialExpressions/def'\nimport type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { OrNode } from '../../builtin/specialExpressions/or'\nimport type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { AstNode } from '../../parser/interface'\nimport { calculateAndOutcomes } from './calculateAndOutcomes'\nimport { calculateCondOutcomes } from './calculateCondOutcomes'\nimport { calculateDeclaredOutcomes } from './calculateDeclaredOutcomes'\nimport { calculateDefOutcomes } from './calculateDefOutcomes'\nimport { calculateDefsOutcomes } from './calculateDefsOutcomes'\nimport { calculateDoOutcomes } from './calculateDoOutcomes'\nimport { calculateDefnOutcomes, calculateDefnsOutcomes, calculateFnOutcomes } from './calculateFunctionOutcomes'\nimport { calculateIfLetOutcomes } from './calculateIfLetOutcomes'\nimport { calculateIfNotOutcomes } from './calculateIfNotOutcomes'\nimport { calculateIfOutcomes } from './calculateIfOutcomes'\nimport { calculateLetOutcomes } from './calculateLetOutcomes'\nimport { calculateDoSeqOutcomes, calculateForOutcomes } from './calculateLoopsOutcomes'\nimport { calculateOrOutcomes } from './calculateOrOutcomes'\nimport { calculateQqOutcomes } from './calculateQqOutcomes'\nimport { calculateThrowOutcomes } from './calculateThrowOutcomes'\nimport { calculateTimeOutcomes } from './calculateTimeOutcomes'\nimport { calculateTryOutcomes } from './calculateTryOutcomes'\nimport { calculateWhenFirstOutcomes } from './calculateWhenFirstOutcomes'\nimport { calculateWhenLetOutcomes } from './calculateWhenLetOutcomes'\nimport { calculateWhenNotOutcomes } from './calculateWhenNotOutcomes'\nimport { calculateWhenOutcomes } from './calculateWhenOutcomes'\nimport { calculateRecurOutcomes } from './calculateRecurOutcomes'\nimport { calculateCommentOutcomes } from './calculateCommentOutcomes'\nimport { calculateLoopOutcomes } from './calculateLoopOutcomes'\nimport type { CalculatePossibleAstNodesHelperOptions } from '.'\n\nexport const specialExpressionCalculator = {\n 'and': (astNode: AndNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateAndOutcomes({ astNode, ...helperOptions }),\n 'comment': (astNode: CommentExpressionNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCommentOutcomes({ astNode, ...helperOptions }),\n 'cond': (astNode: CondNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCondOutcomes({ astNode, ...helperOptions }),\n 'declared?': (astNode: DeclaredNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDeclaredOutcomes({ astNode, ...helperOptions }),\n 'defn': (astNode: DefnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnOutcomes({ astNode, ...helperOptions }),\n 'def': (astNode: DefNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefOutcomes({ astNode, ...helperOptions }),\n 'defns': (astNode: DefnsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnsOutcomes({ astNode, ...helperOptions }),\n 'defs': (astNode: DefsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefsOutcomes({ astNode, ...helperOptions }),\n 'do': (astNode: DoNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoOutcomes({ astNode, ...helperOptions }),\n 'doseq': (astNode: DoSeqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoSeqOutcomes({ astNode, ...helperOptions }),\n 'fn': (astNode: FnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateFnOutcomes({ astNode, ...helperOptions }),\n 'for': (astNode: ForNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateForOutcomes({ astNode, ...helperOptions }),\n 'if-let': (astNode: IfLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfLetOutcomes({ astNode, ...helperOptions }),\n 'if': (astNode: IfNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfOutcomes({ astNode, ...helperOptions }),\n 'if-not': (astNode: IfNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfNotOutcomes({ astNode, ...helperOptions }),\n 'let': (astNode: LetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLetOutcomes({ astNode, ...helperOptions }),\n 'loop': (astNode: LoopNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLoopOutcomes({ astNode, ...helperOptions }),\n 'or': (astNode: OrNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateOrOutcomes({ astNode, ...helperOptions }),\n '??': (astNode: QqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateQqOutcomes({ astNode, ...helperOptions }),\n 'recur': (astNode: RecurNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateRecurOutcomes({ astNode, ...helperOptions }),\n 'time!': (astNode: TimeNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTimeOutcomes({ astNode, ...helperOptions }),\n 'throw': (astNode: ThrowNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateThrowOutcomes({ astNode, ...helperOptions }),\n 'try': (astNode: TryNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTryOutcomes({ astNode, ...helperOptions }),\n 'when-first': (astNode: WhenFirstNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenFirstOutcomes({ astNode, ...helperOptions }),\n 'when-let': (astNode: WhenLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenLetOutcomes({ astNode, ...helperOptions }),\n 'when': (astNode: WhenNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenOutcomes({ astNode, ...helperOptions }),\n 'when-not': (astNode: WhenNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenNotOutcomes({ astNode, ...helperOptions }),\n\n} satisfies Record<SpecialExpressionName, unknown>\n","import type { Outcomes } from '..'\nimport { builtin } from '../../builtin'\nimport { AstNodeType } from '../../constants/constants'\nimport { evaluate } from '../../evaluator'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context } from '../../evaluator/interface'\nimport type { Ast, AstNode } from '../../parser/interface'\nimport { findUnresolvedIdentifiers } from '../findUnresolvedIdentifiers'\nimport { combinate } from '../utils'\nimport { specialExpressionCalculator } from './specialExpressionCalculators'\n\nexport type CalculatePossibleAstNodes = (astNode: AstNode, indentifiers?: string[]) => AstNode[]\nexport type CombinateAstNodes = (astNodes: AstNode[], indentifiers?: string[]) => AstNode[][]\nexport type IsAstComputable = (node: AstNode | AstNode[] | AstNode[][]) => boolean\nexport type AddGlobaleIdentifier = (name: string) => void\n\nexport interface CalculatePossibleAstNodesHelperOptions<T extends AstNode> {\n astNode: T\n nilNode: AstNode\n calculatePossibleAstNodes: CalculatePossibleAstNodes\n combinateAstNodes: CombinateAstNodes\n isAstComputable: IsAstComputable\n addGlobalIdentifier: AddGlobaleIdentifier\n}\n\nexport type CalculatePossibleAstNodesHelper<T extends AstNode> = (\n options: CalculatePossibleAstNodesHelperOptions<T>,\n) => AstNode[]\n\nfunction isIdempotent(normalExpressionName: string): boolean {\n return !normalExpressionName.endsWith('!')\n || normalExpressionName === 'write!'\n}\n\nexport function calculateOutcomes(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n // First, we try to calculate outcomes for the whole astNodes array.\n // If that fails, we try to calculate outcomes for the array without the first element.\n // If that fails, we try to calculate outcomes for the array without the first two elements.\n // And so on.\n\n // This makes it possible to calculate outcomes for e.g.\n // (write! x) x\n\n // Problems occur for e.g.\n // (def x 1) (write! x) x\n // This should output [1], but since (write! x) fails to calculate outcomes, we get null.\n\n // Ok, but not optimal\n // The contract is that when an array is returned, it must be correct.\n // But returning null (indicating that the calculation failed) is always a way out.\n for (let i = 0; i < astNodes.length; i++) {\n const usingAstNode = astNodes.slice(i)\n const outcomes = calculateOutcomesInner(contextStack, usingAstNode)\n if (outcomes !== null)\n return outcomes\n }\n return null\n}\n\nexport function calculateOutcomesInner(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n const possibleAsts = calculatePossibleAsts(contextStack.clone(), astNodes)\n\n if (possibleAsts === null)\n return null\n\n const outcomes: Outcomes = []\n\n for (const possibleAst of possibleAsts) {\n const unresolvedIdentifiers = findUnresolvedIdentifiers(possibleAst, contextStack.clone(), builtin)\n if (unresolvedIdentifiers.size !== 0)\n return null\n\n const ast: Ast = {\n b: possibleAst,\n hasDebugData: true,\n }\n try {\n outcomes.push(evaluate(ast, contextStack.clone()))\n }\n catch (e) {\n outcomes.push(e)\n }\n }\n\n return outcomes\n}\n\nfunction calculatePossibleAsts(contextStack: ContextStack, astNodes: AstNode[]): AstNode[][] | null {\n let possibleAsts: AstNode[][]\n\n try {\n possibleAsts = combinate(\n astNodes.map(\n astNode => calculatePossibleAstNodes(contextStack, astNode),\n ),\n )\n }\n catch (e) {\n return null\n }\n return possibleAsts\n}\n\nconst nilNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'nil', token: undefined, p: [], n: undefined }\n\nfunction calculatePossibleAstNodes(contextStack: ContextStack, astNode: AstNode, newIndentifiers?: string[]): AstNode[] {\n const newContext = newIndentifiers\n ? newIndentifiers.reduce((acc: Context, identity) => {\n acc[identity] = { value: null }\n return acc\n }, {})\n : undefined\n const newContextStack = newContext ? contextStack.create(newContext) : contextStack\n\n if (astNode.t === AstNodeType.NormalExpression) {\n if (astNode.n && !isIdempotent(astNode.n))\n throw new Error(`NormalExpressionNode with name ${astNode.n} is not idempotent. Cannot calculate possible ASTs.`)\n\n return combinate(astNode.p.map(n => calculatePossibleAstNodes(newContextStack, n)))\n .map(p => ({ ...astNode, p }))\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n const helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'> = {\n nilNode,\n calculatePossibleAstNodes: (node: AstNode, identifiers?: string[]) => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers),\n combinateAstNodes: (nodes: AstNode[], identifiers?: string[]) =>\n combinate(nodes.map(node => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers))),\n isAstComputable: (node: AstNode | AstNode[] | AstNode[][]) =>\n calculateOutcomesInner(newContextStack, Array.isArray(node) ? node.flat() : [node]) !== null,\n addGlobalIdentifier: (name: string) => newContextStack.globalContext[name] = { value: null },\n }\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpressionCalculator[astNode.n](astNode as any, helperOptions)\n }\n return [astNode]\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 { calculateOutcomes } from './calculateOutcomes'\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// A set of potential outcomes from evaluating the AST\nexport type Outcomes = unknown[]\n\n// The result of analyzing an AST\nexport interface Analysis {\n unresolvedIdentifiers: UnresolvedIdentifiers\n outcomes: Outcomes | null\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 outcomes: calculateOutcomes(createContextStack(params), ast.b),\n }\n}\n","import { LitsError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { 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 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","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin, specialExpressionKeys } from '../builtin'\nimport type { DefNode } from '../builtin/specialExpressions/def'\nimport type { DefnNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { Arity, FunctionArguments } from '../builtin/utils'\nimport { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { A_OperatorToken, A_SymbolToken, AlgebraicTokenType, SymbolicBinaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asA_SymbolToken, assertA_OperatorToken, isA_BinaryOperatorToken, isA_OperatorToken, isA_SymbolToken, isFunctionOperator, isSymbolicUnaryOperator } from '../tokenizer/algebraic/algebraicTokens'\nimport { asLBraceToken, asLBracketToken, assertEndNotationToken, assertLBraceToken, assertRBraceToken, assertRBracketToken, assertRParenToken, isEndNotationToken, 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 { asSymbolNode } from '../typeGuards/astNode'\nimport { arrayToPairs } from '../utils'\nimport { parseNumber, 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 builtinExpression.validate?.({\n ...node,\n p: withoutCommentNodes(node.p),\n })\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 return createNamedNormalExpressionNode('+', [operand], token)\n case '-':\n return createNamedNormalExpressionNode('-', [operand], token)\n case '!':\n return createNamedNormalExpressionNode('not', [operand], token)\n case '~':\n return createNamedNormalExpressionNode('bit-not', [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 return createNamedNormalExpressionNode('pow', [left, right], token)\n case '*':\n return createNamedNormalExpressionNode('*', [left, right], token)\n case '/':\n return createNamedNormalExpressionNode('/', [left, right], token)\n case '%':\n return createNamedNormalExpressionNode('rem', [left, right], token)\n case '+':\n return createNamedNormalExpressionNode('+', [left, right], token)\n case '-':\n return createNamedNormalExpressionNode('-', [left, right], token)\n case '<<':\n return createNamedNormalExpressionNode('bit-shift-left', [left, right], token)\n case '>>':\n return createNamedNormalExpressionNode('bit-shift-right', [left, right], token)\n case '>>>':\n return createNamedNormalExpressionNode('unsigned-bit-shift-right', [left, right], token)\n case '++': {\n const leftString = createNamedNormalExpressionNode('str', [left], token)\n const rightString = createNamedNormalExpressionNode('str', [right], token)\n return createNamedNormalExpressionNode('str', [leftString, rightString], token)\n }\n case '<':\n return createNamedNormalExpressionNode('<', [left, right], token)\n case '<=':\n return createNamedNormalExpressionNode('<=', [left, right], token)\n case '>':\n return createNamedNormalExpressionNode('>', [left, right], token)\n case '>=':\n return createNamedNormalExpressionNode('>=', [left, right], token)\n case '==':\n return createNamedNormalExpressionNode('=', [left, right], token)\n case '!=':\n return createNamedNormalExpressionNode('!=', [left, right], token)\n case '&':\n return createNamedNormalExpressionNode('bit-and', [left, right], token)\n case '^':\n return createNamedNormalExpressionNode('bit-xor', [left, right], token)\n case '|':\n return createNamedNormalExpressionNode('bit-or', [left, right], token)\n case '&&':\n return {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n case '||':\n return {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n case '??':\n return {\n t: AstNodeType.SpecialExpression,\n n: '??',\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 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())\n if (!isA_OperatorToken(this.peek(), ';')) {\n break\n }\n this.advance()\n }\n return nodes\n }\n\n private parseExpression(precedence = 0): AstNode {\n const firstToken = this.peek()\n if (isA_SymbolToken(firstToken) && firstToken[1] === 'def') {\n return this.parseDef(firstToken)\n }\n if (isA_SymbolToken(firstToken) && firstToken[1] === 'defn') {\n return this.parseDefn(firstToken)\n }\n\n let left = this.parseOperand()\n let operator = this.peek()\n\n while (!this.isAtEnd()\n && !isA_OperatorToken(operator, ',')\n && !isA_OperatorToken(operator, ';')\n && !isRBracketToken(operator)\n && !isRParenToken(operator)) {\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 return parseSymbol(this.tokenStream, this.parseState)\n }\n case 'A_ReservedSymbol':\n return parseReservedSymbol(this.tokenStream, this.parseState)\n case 'PolNotation': {\n this.parseState.algebraic = false\n const astNodes: AstNode[] = []\n this.advance()\n do {\n astNodes.push(this.parseState.parseToken(this.tokenStream, this.parseState))\n } while (!isEndNotationToken(this.peek()))\n this.advance()\n this.parseState.algebraic = true\n if (astNodes.length === 1) {\n return astNodes[0]!\n }\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: astNodes,\n token: getTokenDebugData(token) && token,\n }\n }\n case 'AlgNotation': {\n this.advance()\n const node = this.parseOperand()\n assertEndNotationToken(this.peek())\n this.advance()\n return node\n }\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 if (isNamedFunction && symbol.v === 'for') {\n return this.parseFor(symbol)\n }\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' | 'def' | 'defn'>\n switch (name) {\n case '??':\n case 'and':\n case 'comment':\n case 'cond':\n case 'declared?':\n case 'if':\n case 'if-not':\n case 'or':\n case 'when':\n case 'when-not':\n case 'do':\n case 'time!':\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 builtin.specialExpressions[node.n].validateParameterCount(node)\n return node\n }\n case 'let':\n return this.parseLet(symbol, params)\n case 'defs':\n case 'if-let':\n case 'when-let':\n case 'when-first':\n case 'fn':\n case 'defns':\n case 'try':\n case 'recur':\n case 'loop':\n case 'doseq':\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 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 this.advance()\n let rest = false\n let letBindingObject: AstNode | undefined\n const args: string[] = []\n let restArg: string | undefined\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n if (letBindingObject) {\n throw new LitsError('Expected right parentheses', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isLBraceToken(this.peek())) {\n letBindingObject = this.parseObject()\n }\n else {\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())) {\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 const arity: Arity = restArg !== undefined ? { min: args.length } : args.length\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n const letBindings = letBindingObject ? arrayToPairs(letBindingObject.p) : []\n const functionArguments: FunctionArguments = {\n m: args,\n r: restArg,\n b: letBindings.map((pair) => {\n const key = pair[0] as StringNode\n const value = pair[1] as AstNode\n return {\n t: AstNodeType.Binding,\n n: key.v,\n v: value,\n p: [],\n token: getTokenDebugData(key.token) && key.token,\n }\n }),\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(letSymbol: SymbolNode, params: AstNode[]): LetNode {\n if (params.length !== 2) {\n throw new LitsError('let expects two arguments', getTokenDebugData(letSymbol.token)?.sourceCodeInfo)\n }\n\n const letObject = params[0]!\n if (letObject.t !== AstNodeType.NormalExpression || letObject.n !== 'object') {\n throw new LitsError('let expects an object as first argument', getTokenDebugData(letObject.token)?.sourceCodeInfo)\n }\n\n const letBindings = arrayToPairs(letObject.p)\n const expression = params[1]!\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: [expression],\n token: getTokenDebugData(letSymbol.token) && letSymbol.token,\n bs: letBindings.map((pair) => {\n const key = pair[0] as StringNode\n const value = pair[1] as AstNode\n\n return {\n t: AstNodeType.Binding,\n n: key.v,\n v: value,\n p: [],\n token: getTokenDebugData(key.token) && key.token,\n }\n }),\n }\n }\n\n private parseFor(forSymbol: SymbolNode): ForNode {\n const forLoopBindings: LoopBindingNode[] = [\n this.parseForLoopBinding(),\n ]\n let nextToken = this.peekAhead()\n while (isA_SymbolToken(nextToken) && nextToken[1] === 'of') {\n forLoopBindings.push(this.parseForLoopBinding())\n nextToken = this.peekAhead()\n }\n\n const expression = this.parseExpression()\n\n assertRParenToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'for',\n p: [expression],\n token: getTokenDebugData(forSymbol.token) && forSymbol.token,\n l: forLoopBindings,\n }\n }\n\n // export 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 private parseForLoopBinding(): LoopBindingNode {\n const bindingNode = this.parseBinding()\n\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\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)) {\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 this.advance()\n const letObject = this.parseObject()\n letBindings = arrayToPairs(letObject.p).map((pair) => {\n const key = pair[0] as StringNode\n const value = pair[1] as AstNode\n\n return {\n t: AstNodeType.Binding,\n n: key.v,\n v: value,\n p: [],\n token: getTokenDebugData(key.token) && key.token,\n }\n })\n }\n\n token = this.peek()\n let whenNode: AstNode | undefined\n let whileNode: AstNode | undefined\n while (\n isA_SymbolToken(token)\n && (\n (token[1] === 'when' && !modifiers.includes('&when'))\n || (token[1] === 'while' && !modifiers.includes('&while'))\n )\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 assertA_OperatorToken(token, ',')\n this.advance()\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 parseDef(token: A_SymbolToken): DefNode {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n const value = this.parseExpression()\n return {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: [symbol, value],\n token: getTokenDebugData(token) && token,\n }\n }\n\n parseDefn(token: A_SymbolToken): DefnNode {\n this.advance()\n const symbol = parseSymbol(this.tokenStream, this.parseState)\n const { functionArguments, arity } = this.parseFunctionArguments()\n assertLBraceToken(this.peek())\n this.advance()\n\n const body: AstNode[] = []\n\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n body.push(this.parseExpression())\n if (isA_OperatorToken(this.peek(), ';')) {\n this.advance()\n }\n }\n if (!isRBraceToken(this.peek())) {\n throw new LitsError('Expected closing brace', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n\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\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(): Token {\n return this.tokenStream.tokens[this.parseState.position + 1]!\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 { withoutCommentNodes } from '../removeCommentNodes'\nimport { asLParenToken, assertEndNotationToken, assertLBracketToken, assertRParenToken, isEndNotationToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { PolishTokenType } from '../tokenizer/polish/polishTokens'\nimport { asP_CommentToken, asP_RegexpShorthandToken, 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, assertEvenNumberOfParams } from '../typeGuards'\nimport { assertSymbolNode, isExpressionNode } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { AlgebraicParser } from './AlgebraicParser'\nimport { parseNumber, 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 assertEvenNumberOfParams(node)\n\n return node\n}\n\nfunction parseRegexpShorthand(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const tkn = asP_RegexpShorthandToken(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\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 builtinExpression.validate?.({\n ...node,\n p: withoutCommentNodes(node.p),\n })\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, validateParameterCount } = 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 validateParameterCount(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 'P_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 'AlgNotation': {\n parseState.position += 1\n parseState.algebraic = true\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n const nodes = algebraicParser.parse()\n assertEndNotationToken(tokenStream.tokens[parseState.position++])\n parseState.algebraic = false\n if (nodes.length === 1) {\n return nodes[0]!\n }\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: nodes,\n token: nodes[0]!.token,\n }\n }\n case 'PolNotation': {\n const astNodes: AstNode[] = []\n parseState.position += 1\n do {\n astNodes.push(parsePolishToken(tokenStream, parseState))\n } while (!isEndNotationToken(asToken(tokenStream.tokens[parseState.position])))\n parseState.position += 1\n if (astNodes.length === 1) {\n return astNodes[0]!\n }\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: astNodes,\n token: astNodes[0]!.token,\n }\n }\n case 'P_CollectionAccessor':\n case 'P_Modifier':\n case 'RParen':\n case 'RBracket':\n case 'RBrace':\n case 'P_Whitespace':\n case 'EndNotation':\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 { AstNodeType } from '../constants/constants'\nimport { 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 const safeTokenStream = removeUnnecessaryTokens(tokenStream)\n\n const ast: Ast = {\n b: [],\n hasDebugData: safeTokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n algebraic: safeTokenStream.algebraic ?? false,\n parseToken,\n }\n\n while (parseState.position < safeTokenStream.tokens.length) {\n ast.b.push(parseToken(safeTokenStream, parseState))\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\nexport function parseToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n if (parseState.algebraic) {\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n const nodes = algebraicParser.parse()\n if (nodes.length === 1) {\n return nodes[0]!\n }\n return {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: nodes,\n token: nodes[0]!.token,\n }\n }\n\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 { AlgebraicNotationToken, EndNotationToken, LBraceToken, LBracketToken, LParenToken, PolishNotationToken, RBraceToken, RBracketToken, RParenToken, 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)\nconst tokenizePolishNotation: Tokenizer<PolishNotationToken> = (input, position) =>\n tokenizeSimpleToken('PolNotation', '$`', input, position)\nconst tokenizeAlgebraicNotation: Tokenizer<AlgebraicNotationToken> = (input, position) =>\n tokenizeSimpleToken('AlgNotation', '@`', input, position)\nconst tokenizeEndNotation: Tokenizer<EndNotationToken> = (input, position) =>\n tokenizeSimpleToken('EndNotation', '`', 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 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 tokenizePolishNotation,\n tokenizeAlgebraicNotation,\n tokenizeEndNotation,\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n] as const\n","import type { Any } from '../../interface'\n\nexport const algebraicReservedNamesRecord: Record<string, { value: Any, forbidden?: true }> = {\n 'true': { value: true },\n 'false': { value: false },\n 'nil': { value: null },\n 'null': { value: null },\n 'if-let': { value: null, forbidden: true },\n 'when-let': { value: null, forbidden: true },\n 'when-first': { value: null, forbidden: true },\n 'fn': { value: null, forbidden: true },\n 'defns': { value: null, forbidden: true },\n 'try': { value: null, forbidden: true },\n 'recur': { value: null, forbidden: true },\n 'loop': { value: null, forbidden: true },\n 'time!': { value: null, forbidden: true },\n 'doseq': { value: null, forbidden: true },\n\n} as const\n\ntype AlgebraicReservedName = keyof typeof algebraicReservedNamesRecord\n\nexport const algebraicReservedNames: AlgebraicReservedName[] = Object.keys(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 { 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_ReservedSymbolToken: Tokenizer<A_ReservedSymbolToken> = (input, position) => {\n for (const [reservedName, { forbidden }] of Object.entries(algebraicReservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && identifierRegExp.test(nextChar))\n continue\n\n const name = input.substring(position, position + length)\n if (name === reservedName) {\n if (forbidden)\n throw new LitsError(`${name} is forbidden!`, undefined)\n\n return [length, ['A_ReservedSymbol', reservedName]]\n }\n }\n return NO_MATCH\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_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 tokenizeString,\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_RegexpShorthandToken,\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 for (const [reservedName, { forbidden }] of Object.entries(polishReservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && P_symbolRegExp.test(nextChar)) {\n continue\n }\n\n const symbol = input.substring(position, position + length)\n if (symbol === reservedName) {\n if (forbidden)\n throw new LitsError(`${symbol} is forbidden!`, undefined)\n\n return [length, ['P_ReservedSymbol', reservedName]]\n }\n }\n return NO_MATCH\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\nexport const tokenizeP_RegexpShorthand: Tokenizer<P_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, ['P_RegexpShorthand', `#${token[1]}${options}`]]\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_Symbol,\n tokenizeP_Modifier,\n tokenizeP_RegexpShorthand,\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 { isAlgebraicNotationToken, isEndNotationToken, isPolishNotationToken } from './common/commonTokens'\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 const notationStack: ('polish' | 'algebraic')[] = [params.algebraic ? 'algebraic' : 'polish']\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 = notationStack.at(-1) === '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 if (isAlgebraicNotationToken(token)) {\n notationStack.push('algebraic')\n }\n if (isPolishNotationToken(token)) {\n notationStack.push('polish')\n }\n if (isEndNotationToken(token)) {\n notationStack.pop()\n if (notationStack.length < 1) {\n throw new LitsError('Unexpected end directive `.', debugData?.sourceCodeInfo)\n }\n }\n }\n }\n\n if (notationStack.length > 1) {\n throw new LitsError('Missing end directive `.', createSourceCodeInfo(input, position, params.filePath))\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 'PolNotation': return '$`'\n case 'AlgNotation': return '@`'\n case 'EndNotation': 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]}