seval.js 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/evaluator.d.ts.map +1 -1
- package/dist/evaluator.js +262 -221
- package/dist/evaluator.js.map +1 -1
- package/package.json +3 -11
package/dist/evaluator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,KAAK,EAA4B,MAAM,UAAU,CAAA;AAE/D,OAAO,KAAK,EACR,WAAW,EAEX,gBAAgB,EAGhB,KAAK,EACR,MAAM,SAAS,CAAA;AA+DhB;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;qBAkR9B,KAAK,QAAO,WAAW;uBAKrB,MAAM,QAAO,WAAW;EAMzD;AAGD,eAAO,MAAM,gBAAgB;qBAdG,KAAK,QAAO,WAAW;uBAKrB,MAAM,QAAO,WAAW;CAST,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,QAAQ,SAnBW,KAAK,QAAO,WAAW,UAmBN,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,UAAU,SAnBW,MAAM,QAAO,WAAW,UAmBL,CAAA"}
|
package/dist/evaluator.js
CHANGED
|
@@ -10,6 +10,57 @@
|
|
|
10
10
|
import { isSymbol, parse, symName } from './parser';
|
|
11
11
|
import { defaultPrimitives } from './primitives';
|
|
12
12
|
import { isLambda } from './types';
|
|
13
|
+
const ENV_MARK = Symbol('seval.env');
|
|
14
|
+
function isRuntimeEnv(env) {
|
|
15
|
+
return Boolean(env[ENV_MARK]);
|
|
16
|
+
}
|
|
17
|
+
function markEnv(env) {
|
|
18
|
+
if (!isRuntimeEnv(env)) {
|
|
19
|
+
Object.defineProperty(env, ENV_MARK, { value: true, enumerable: false });
|
|
20
|
+
if (Object.getPrototypeOf(env) === Object.prototype) {
|
|
21
|
+
Object.setPrototypeOf(env, null);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return env;
|
|
25
|
+
}
|
|
26
|
+
function createEnv(parent) {
|
|
27
|
+
const env = Object.create(parent ?? null);
|
|
28
|
+
Object.defineProperty(env, ENV_MARK, { value: true, enumerable: false });
|
|
29
|
+
return env;
|
|
30
|
+
}
|
|
31
|
+
function ensureEnv(env) {
|
|
32
|
+
if (!env) {
|
|
33
|
+
return createEnv(null);
|
|
34
|
+
}
|
|
35
|
+
return markEnv(env);
|
|
36
|
+
}
|
|
37
|
+
function getParentEnv(env) {
|
|
38
|
+
return Object.getPrototypeOf(env) ?? null;
|
|
39
|
+
}
|
|
40
|
+
function findBinding(env, name) {
|
|
41
|
+
if (!env)
|
|
42
|
+
return null;
|
|
43
|
+
if (Object.prototype.hasOwnProperty.call(env, name)) {
|
|
44
|
+
return env;
|
|
45
|
+
}
|
|
46
|
+
return findBinding(getParentEnv(env), name);
|
|
47
|
+
}
|
|
48
|
+
function assignBinding(env, name, value) {
|
|
49
|
+
const target = findBinding(env, name);
|
|
50
|
+
if (target) {
|
|
51
|
+
target[name] = value;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
env[name] = value;
|
|
55
|
+
}
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
function getBinding(env, name) {
|
|
59
|
+
if (name in env) {
|
|
60
|
+
return env[name];
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
13
64
|
/**
|
|
14
65
|
* Create a new evaluator instance with optional custom primitives
|
|
15
66
|
*/
|
|
@@ -19,269 +70,259 @@ export function createEvaluator(options = {}) {
|
|
|
19
70
|
...options.primitives,
|
|
20
71
|
};
|
|
21
72
|
const maxDepth = options.maxDepth ?? 100;
|
|
22
|
-
function
|
|
73
|
+
function evalLambda(fn, argValues, depth) {
|
|
74
|
+
const closureEnv = ensureEnv(fn.closure);
|
|
75
|
+
const callEnv = createEnv(closureEnv);
|
|
76
|
+
fn.params.forEach((param, index) => {
|
|
77
|
+
callEnv[param] = argValues[index];
|
|
78
|
+
});
|
|
79
|
+
return evalExpr(fn.body, callEnv, depth + 1);
|
|
80
|
+
}
|
|
81
|
+
function evalExpr(expr, env, depth = 0) {
|
|
23
82
|
if (depth > maxDepth) {
|
|
24
83
|
throw new Error('Maximum evaluation depth exceeded');
|
|
25
84
|
}
|
|
26
|
-
// Null
|
|
27
85
|
if (expr === null)
|
|
28
86
|
return null;
|
|
29
|
-
// Literal values
|
|
30
87
|
if (typeof expr === 'number')
|
|
31
88
|
return expr;
|
|
32
89
|
if (typeof expr === 'boolean')
|
|
33
90
|
return expr;
|
|
34
|
-
// String literal - return as-is
|
|
35
91
|
if (typeof expr === 'string')
|
|
36
92
|
return expr;
|
|
37
|
-
// Symbol - look up in environment
|
|
38
93
|
if (isSymbol(expr)) {
|
|
39
94
|
const name = symName(expr);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
// Symbol not found - return the name as string (might be a primitive name)
|
|
44
|
-
return name;
|
|
95
|
+
const value = getBinding(env, name);
|
|
96
|
+
return value ?? name;
|
|
45
97
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
newEnv[name] = evaluate(value, newEnv, depth + 1);
|
|
68
|
-
}
|
|
69
|
-
return evaluate(body, newEnv, depth + 1);
|
|
98
|
+
if (!Array.isArray(expr)) {
|
|
99
|
+
throw new Error(`Cannot evaluate: ${JSON.stringify(expr)}`);
|
|
100
|
+
}
|
|
101
|
+
if (expr.length === 0)
|
|
102
|
+
return [];
|
|
103
|
+
const [op, ...args] = expr;
|
|
104
|
+
const opName = isSymbol(op) ? symName(op) : null;
|
|
105
|
+
if (opName === 'if') {
|
|
106
|
+
const [cond, thenExpr, elseExpr] = args;
|
|
107
|
+
const condResult = evalExpr(cond, env, depth + 1);
|
|
108
|
+
return condResult
|
|
109
|
+
? evalExpr(thenExpr, env, depth + 1)
|
|
110
|
+
: evalExpr(elseExpr, env, depth + 1);
|
|
111
|
+
}
|
|
112
|
+
if (opName === 'let') {
|
|
113
|
+
const [bindings, body] = args;
|
|
114
|
+
const letEnv = createEnv(env);
|
|
115
|
+
for (const binding of bindings) {
|
|
116
|
+
const [nameExpr, valueExpr] = binding;
|
|
117
|
+
const name = isSymbol(nameExpr) ? symName(nameExpr) : String(nameExpr);
|
|
118
|
+
letEnv[name] = evalExpr(valueExpr, letEnv, depth + 1);
|
|
70
119
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
120
|
+
return evalExpr(body, letEnv, depth + 1);
|
|
121
|
+
}
|
|
122
|
+
if (opName === 'cond') {
|
|
123
|
+
for (const clause of args) {
|
|
124
|
+
const [test, result] = clause;
|
|
125
|
+
const isElse = isSymbol(test) && symName(test) === 'else';
|
|
126
|
+
if (isElse || evalExpr(test, env, depth + 1)) {
|
|
127
|
+
return evalExpr(result, env, depth + 1);
|
|
79
128
|
}
|
|
80
|
-
return null;
|
|
81
129
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
if (opName === 'begin' || opName === 'progn' || opName === 'do') {
|
|
133
|
+
let result = null;
|
|
134
|
+
for (const subExpr of args) {
|
|
135
|
+
result = evalExpr(subExpr, env, depth + 1);
|
|
88
136
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return val;
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
if (opName === 'quote') {
|
|
140
|
+
const val = args[0];
|
|
141
|
+
if (isSymbol(val)) {
|
|
142
|
+
return symName(val);
|
|
96
143
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
144
|
+
return val;
|
|
145
|
+
}
|
|
146
|
+
if (opName === 'lambda' || opName === 'fn') {
|
|
147
|
+
const [params, body] = args;
|
|
148
|
+
return {
|
|
149
|
+
__lambda: true,
|
|
150
|
+
params: params.map((p) => (isSymbol(p) ? symName(p) : String(p))),
|
|
151
|
+
body: body,
|
|
152
|
+
closure: env,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (opName === 'define' || opName === 'defun') {
|
|
156
|
+
const first = args[0];
|
|
157
|
+
if (Array.isArray(first)) {
|
|
158
|
+
const [nameExpr, ...paramExprs] = first;
|
|
159
|
+
const name = isSymbol(nameExpr) ? symName(nameExpr) : String(nameExpr);
|
|
160
|
+
const params = paramExprs.map((p) => (isSymbol(p) ? symName(p) : String(p)));
|
|
161
|
+
const body = args[1];
|
|
162
|
+
const fn = {
|
|
101
163
|
__lambda: true,
|
|
102
|
-
params
|
|
164
|
+
params,
|
|
103
165
|
body: body,
|
|
104
166
|
closure: env,
|
|
105
167
|
};
|
|
168
|
+
assignBinding(env, name, fn);
|
|
169
|
+
return fn;
|
|
106
170
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const fn = {
|
|
117
|
-
__lambda: true,
|
|
118
|
-
params,
|
|
119
|
-
body: body,
|
|
120
|
-
closure: env,
|
|
121
|
-
};
|
|
122
|
-
env[name] = fn;
|
|
123
|
-
return fn;
|
|
124
|
-
}
|
|
125
|
-
// (define name value)
|
|
126
|
-
const name = isSymbol(first) ? symName(first) : String(first);
|
|
127
|
-
const value = evaluate(args[1], env, depth + 1);
|
|
128
|
-
env[name] = value;
|
|
129
|
-
return value;
|
|
130
|
-
}
|
|
131
|
-
// Apply: (apply fn list-of-args)
|
|
132
|
-
if (opName === 'apply') {
|
|
133
|
-
const fn = evaluate(args[0], env, depth + 1);
|
|
134
|
-
const fnArgs = evaluate(args[1], env, depth + 1);
|
|
135
|
-
if (isLambda(fn)) {
|
|
136
|
-
const callEnv = { ...fn.closure, ...env };
|
|
137
|
-
fn.params.forEach((param, i) => {
|
|
138
|
-
callEnv[param] = fnArgs[i];
|
|
139
|
-
});
|
|
140
|
-
return evaluate(fn.body, callEnv, depth + 1);
|
|
141
|
-
}
|
|
142
|
-
throw new Error(`Cannot apply non-function: ${fn}`);
|
|
171
|
+
const name = isSymbol(first) ? symName(first) : String(first);
|
|
172
|
+
const value = evalExpr(args[1], env, depth + 1);
|
|
173
|
+
return assignBinding(env, name, value);
|
|
174
|
+
}
|
|
175
|
+
if (opName === 'apply') {
|
|
176
|
+
const fnValue = evalExpr(args[0], env, depth + 1);
|
|
177
|
+
const fnArgs = evalExpr(args[1], env, depth + 1);
|
|
178
|
+
if (isLambda(fnValue)) {
|
|
179
|
+
return evalLambda(fnValue, fnArgs, depth);
|
|
143
180
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const callEnv = { ...pred.closure, ...env };
|
|
152
|
-
callEnv[pred.params[0]] = item;
|
|
153
|
-
return evaluate(pred.body, callEnv, depth + 1);
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
// Inline expression form
|
|
181
|
+
throw new Error(`Cannot apply non-function: ${fnValue}`);
|
|
182
|
+
}
|
|
183
|
+
if (opName === 'filter') {
|
|
184
|
+
const [predExpr, listExpr] = args;
|
|
185
|
+
const list = evalExpr(listExpr, env, depth + 1);
|
|
186
|
+
const pred = evalExpr(predExpr, env, depth + 1);
|
|
187
|
+
if (isLambda(pred)) {
|
|
157
188
|
return list.filter((item) => {
|
|
158
|
-
const
|
|
159
|
-
|
|
189
|
+
const callEnv = createEnv(ensureEnv(pred.closure));
|
|
190
|
+
callEnv[pred.params[0]] = item;
|
|
191
|
+
return evalExpr(pred.body, callEnv, depth + 1);
|
|
160
192
|
});
|
|
161
193
|
}
|
|
162
|
-
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
194
|
+
return list.filter((item) => {
|
|
195
|
+
const itemEnv = createEnv(env);
|
|
196
|
+
itemEnv['@'] = item;
|
|
197
|
+
itemEnv.it = item;
|
|
198
|
+
return evalExpr(predExpr, itemEnv, depth + 1);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
if (opName === 'map') {
|
|
202
|
+
const [mapExpr, listExpr] = args;
|
|
203
|
+
const list = evalExpr(listExpr, env, depth + 1);
|
|
204
|
+
const mapper = evalExpr(mapExpr, env, depth + 1);
|
|
205
|
+
if (isLambda(mapper)) {
|
|
174
206
|
return list.map((item) => {
|
|
175
|
-
const
|
|
176
|
-
|
|
207
|
+
const callEnv = createEnv(ensureEnv(mapper.closure));
|
|
208
|
+
callEnv[mapper.params[0]] = item;
|
|
209
|
+
return evalExpr(mapper.body, callEnv, depth + 1);
|
|
177
210
|
});
|
|
178
211
|
}
|
|
179
|
-
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
return list.map((item) => {
|
|
213
|
+
const itemEnv = createEnv(env);
|
|
214
|
+
itemEnv['@'] = item;
|
|
215
|
+
itemEnv.it = item;
|
|
216
|
+
return evalExpr(mapExpr, itemEnv, depth + 1);
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
if (opName === 'find') {
|
|
220
|
+
const [listExpr, predExpr] = args;
|
|
221
|
+
const list = evalExpr(listExpr, env, depth + 1);
|
|
222
|
+
return (list.find((item) => {
|
|
223
|
+
const itemEnv = createEnv(env);
|
|
224
|
+
itemEnv['@'] = item;
|
|
225
|
+
itemEnv.it = item;
|
|
226
|
+
return evalExpr(predExpr, itemEnv, depth + 1);
|
|
227
|
+
}) ?? null);
|
|
228
|
+
}
|
|
229
|
+
if (opName === 'find-index') {
|
|
230
|
+
const [listExpr, predExpr] = args;
|
|
231
|
+
const list = evalExpr(listExpr, env, depth + 1);
|
|
232
|
+
return list.findIndex((item) => {
|
|
233
|
+
const itemEnv = createEnv(env);
|
|
234
|
+
itemEnv['@'] = item;
|
|
235
|
+
itemEnv.it = item;
|
|
236
|
+
return evalExpr(predExpr, itemEnv, depth + 1);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
if (opName === 'sort-by') {
|
|
240
|
+
const [listExpr, keyExpr] = args;
|
|
241
|
+
const list = evalExpr(listExpr, env, depth + 1);
|
|
242
|
+
return [...list].sort((a, b) => {
|
|
243
|
+
const aEnv = createEnv(env);
|
|
244
|
+
aEnv['@'] = a;
|
|
245
|
+
aEnv.it = a;
|
|
246
|
+
const bEnv = createEnv(env);
|
|
247
|
+
bEnv['@'] = b;
|
|
248
|
+
bEnv.it = b;
|
|
249
|
+
const aKey = evalExpr(keyExpr, aEnv, depth + 1);
|
|
250
|
+
const bKey = evalExpr(keyExpr, bEnv, depth + 1);
|
|
251
|
+
return aKey - bKey;
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
if (opName === 'count') {
|
|
255
|
+
const [listExpr, predExpr] = args;
|
|
256
|
+
const list = evalExpr(listExpr, env, depth + 1);
|
|
257
|
+
if (!predExpr)
|
|
258
|
+
return list.length;
|
|
259
|
+
return list.filter((item) => {
|
|
260
|
+
const itemEnv = createEnv(env);
|
|
261
|
+
itemEnv['@'] = item;
|
|
262
|
+
itemEnv.it = item;
|
|
263
|
+
return evalExpr(predExpr, itemEnv, depth + 1);
|
|
264
|
+
}).length;
|
|
265
|
+
}
|
|
266
|
+
if (opName === 'reduce' || opName === 'fold') {
|
|
267
|
+
const [listExpr, initExpr, ...rest] = args;
|
|
268
|
+
const list = evalExpr(listExpr, env, depth + 1);
|
|
269
|
+
let acc = evalExpr(initExpr, env, depth + 1);
|
|
270
|
+
if (rest.length === 2) {
|
|
271
|
+
const [params, body] = rest;
|
|
272
|
+
const [accExpr, itemExpr] = params;
|
|
273
|
+
const accName = isSymbol(accExpr) ? symName(accExpr) : String(accExpr);
|
|
274
|
+
const itemName = isSymbol(itemExpr) ? symName(itemExpr) : String(itemExpr);
|
|
275
|
+
for (const item of list) {
|
|
276
|
+
const reduceEnv = createEnv(env);
|
|
277
|
+
reduceEnv[accName] = acc;
|
|
278
|
+
reduceEnv[itemName] = item;
|
|
279
|
+
acc = evalExpr(body, reduceEnv, depth + 1);
|
|
280
|
+
}
|
|
213
281
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const list = evaluate(listExpr, env, depth + 1);
|
|
218
|
-
let acc = evaluate(initExpr, env, depth + 1);
|
|
219
|
-
if (rest.length === 2) {
|
|
220
|
-
// Inline form: (reduce list init (acc item) body)
|
|
221
|
-
const [params, body] = rest;
|
|
222
|
-
const [accExpr, itemExpr] = params;
|
|
223
|
-
const accName = isSymbol(accExpr) ? symName(accExpr) : String(accExpr);
|
|
224
|
-
const itemName = isSymbol(itemExpr) ? symName(itemExpr) : String(itemExpr);
|
|
282
|
+
else {
|
|
283
|
+
const fnValue = evalExpr(rest[0], env, depth + 1);
|
|
284
|
+
if (isLambda(fnValue)) {
|
|
225
285
|
for (const item of list) {
|
|
226
|
-
const
|
|
227
|
-
|
|
286
|
+
const callEnv = createEnv(ensureEnv(fnValue.closure));
|
|
287
|
+
callEnv[fnValue.params[0]] = acc;
|
|
288
|
+
callEnv[fnValue.params[1]] = item;
|
|
289
|
+
acc = evalExpr(fnValue.body, callEnv, depth + 1);
|
|
228
290
|
}
|
|
229
291
|
}
|
|
230
292
|
else {
|
|
231
|
-
|
|
232
|
-
const fn = evaluate(rest[0], env, depth + 1);
|
|
233
|
-
if (isLambda(fn)) {
|
|
234
|
-
for (const item of list) {
|
|
235
|
-
const callEnv = { ...fn.closure, ...env };
|
|
236
|
-
callEnv[fn.params[0]] = acc;
|
|
237
|
-
callEnv[fn.params[1]] = item;
|
|
238
|
-
acc = evaluate(fn.body, callEnv, depth + 1);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
throw new Error('reduce requires a function');
|
|
243
|
-
}
|
|
293
|
+
throw new Error('reduce requires a function');
|
|
244
294
|
}
|
|
245
|
-
return acc;
|
|
246
|
-
}
|
|
247
|
-
// Regular function call or lambda invocation
|
|
248
|
-
// First check if op is a symbol that resolves to a lambda
|
|
249
|
-
const opValue = opName && opName in env ? env[opName] : null;
|
|
250
|
-
if (isLambda(opValue)) {
|
|
251
|
-
// Call user-defined function
|
|
252
|
-
const evaluatedArgs = args.map((arg) => evaluate(arg, env, depth + 1));
|
|
253
|
-
const callEnv = { ...opValue.closure, ...env };
|
|
254
|
-
opValue.params.forEach((param, i) => {
|
|
255
|
-
callEnv[param] = evaluatedArgs[i];
|
|
256
|
-
});
|
|
257
|
-
return evaluate(opValue.body, callEnv, depth + 1);
|
|
258
295
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
const callEnv = { ...evaluatedOp.closure, ...env };
|
|
273
|
-
evaluatedOp.params.forEach((param, i) => {
|
|
274
|
-
callEnv[param] = evaluatedArgs[i];
|
|
275
|
-
});
|
|
276
|
-
return evaluate(evaluatedOp.body, callEnv, depth + 1);
|
|
296
|
+
return acc;
|
|
297
|
+
}
|
|
298
|
+
const opValue = opName ? getBinding(env, opName) : undefined;
|
|
299
|
+
if (opValue && isLambda(opValue)) {
|
|
300
|
+
const evaluatedArgs = args.map((arg) => evalExpr(arg, env, depth + 1));
|
|
301
|
+
return evalLambda(opValue, evaluatedArgs, depth);
|
|
302
|
+
}
|
|
303
|
+
if (opName) {
|
|
304
|
+
const primitive = primitives[opName];
|
|
305
|
+
if (primitive) {
|
|
306
|
+
const evaluatedArgs = args.map((arg) => evalExpr(arg, env, depth + 1));
|
|
307
|
+
const evalFn = (expression, nextEnv = env) => evalExpr(expression, ensureEnv(nextEnv), depth + 1);
|
|
308
|
+
return primitive(evaluatedArgs, env, evalFn);
|
|
277
309
|
}
|
|
278
|
-
throw new Error(`Unknown function: ${opName ?? String(op)}`);
|
|
279
310
|
}
|
|
280
|
-
|
|
311
|
+
const evaluatedOp = evalExpr(op, env, depth + 1);
|
|
312
|
+
if (isLambda(evaluatedOp)) {
|
|
313
|
+
const evaluatedArgs = args.map((arg) => evalExpr(arg, env, depth + 1));
|
|
314
|
+
return evalLambda(evaluatedOp, evaluatedArgs, depth);
|
|
315
|
+
}
|
|
316
|
+
throw new Error(`Unknown function: ${opName ?? String(op)}`);
|
|
281
317
|
}
|
|
318
|
+
const evaluateRoot = (expr, env = {}) => {
|
|
319
|
+
const runtimeEnv = ensureEnv(env);
|
|
320
|
+
return evalExpr(expr, runtimeEnv, 0);
|
|
321
|
+
};
|
|
322
|
+
const evalStringRoot = (code, env = {}) => evaluateRoot(parse(code), env);
|
|
282
323
|
return {
|
|
283
|
-
evaluate:
|
|
284
|
-
evalString:
|
|
324
|
+
evaluate: evaluateRoot,
|
|
325
|
+
evalString: evalStringRoot,
|
|
285
326
|
};
|
|
286
327
|
}
|
|
287
328
|
// Default evaluator instance
|
package/dist/evaluator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAc,QAAQ,EAAE,KAAK,EAAO,OAAO,EAAE,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAShD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAA4B,EAAE;IAC1D,MAAM,UAAU,GAAsC;QAClD,GAAG,iBAAiB;QACpB,GAAG,OAAO,CAAC,UAAU;KACxB,CAAA;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAA;IAExC,SAAS,QAAQ,CAAC,IAAW,EAAE,GAAgB,EAAE,KAAK,GAAG,CAAC;QACtD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACxD,CAAC;QAED,OAAO;QACP,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAE9B,iBAAiB;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;QACzC,IAAI,OAAO,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAE1C,gCAAgC;QAChC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;QAEzC,kCAAkC;QAClC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;YAC1B,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,OAAO,GAAG,CAAC,IAAI,CAAU,CAAA;YAC7B,CAAC;YACD,2EAA2E;YAC3E,OAAO,IAAI,CAAA;QACf,CAAC;QAED,8BAA8B;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAEhC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;YAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAEhD,uCAAuC;YACvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;gBACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAa,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC1D,OAAO,UAAU;oBACb,CAAC,CAAC,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;oBAC7C,CAAC,CAAC,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACrD,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnB,2BAA2B;gBAC3B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;gBAC7B,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,EAAE,CAAA;gBACzB,KAAK,MAAM,OAAO,IAAI,QAAmB,EAAE,CAAC;oBACxC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,OAAyB,CAAA;oBACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACtE,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACrD,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAa,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACrD,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACpB,kDAAkD;gBAClD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAwB,CAAA;oBAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,CAAA;oBACzD,IAAI,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;wBAC3C,OAAO,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBAC3C,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CAAA;YACf,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC9D,IAAI,MAAM,GAAU,IAAI,CAAA;gBACxB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;oBACzB,MAAM,GAAG,QAAQ,CAAC,OAAgB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACvD,CAAC;gBACD,OAAO,MAAM,CAAA;YACjB,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,yCAAyC;gBACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;gBACvB,CAAC;gBACD,OAAO,GAAY,CAAA;YACvB,CAAC;YAED,uDAAuD;YACvD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACzC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;gBAC3B,OAAO;oBACH,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAG,MAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9E,IAAI,EAAE,IAAa;oBACnB,OAAO,EAAE,GAAG;iBACG,CAAA;YACvB,CAAC;YAED,8DAA8D;YAC9D,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,+DAA+D;oBAC/D,MAAM,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,GAAG,KAAgB,CAAA;oBAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACtE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;oBACpB,MAAM,EAAE,GAAmB;wBACvB,QAAQ,EAAE,IAAI;wBACd,MAAM;wBACN,IAAI,EAAE,IAAa;wBACnB,OAAO,EAAE,GAAG;qBACf,CAAA;oBACD,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;oBACd,OAAO,EAAE,CAAA;gBACb,CAAC;gBACD,sBAAsB;gBACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACxD,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;gBACjB,OAAO,KAAK,CAAA;YAChB,CAAC;YAED,iCAAiC;YACjC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACpE,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;oBACzC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;wBAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAU,CAAA;oBACvC,CAAC,CAAC,CAAA;oBACF,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAChD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAA;YACvD,CAAC;YAED,0DAA0D;YAC1D,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACnE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;wBACxB,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;wBAC3C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,GAAG,IAAI,CAAA;wBACxC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBAClD,CAAC,CAAC,CAAA;gBACN,CAAC;gBACD,yBAAyB;gBACzB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxB,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;oBAC/C,OAAO,QAAQ,CAAC,QAAiB,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC1D,CAAC,CAAC,CAAA;YACN,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;gBAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAgB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACnE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACrB,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;wBAC7C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,GAAG,IAAI,CAAA;wBAC1C,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBACpD,CAAC,CAAC,CAAA;gBACN,CAAC;gBACD,yBAAyB;gBACzB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACrB,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;oBAC/C,OAAO,QAAQ,CAAC,OAAgB,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACzD,CAAC,CAAC,CAAA;YACN,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACnE,OAAO,CACH,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACf,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;oBAC/C,OAAO,QAAQ,CAAC,QAAiB,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC1D,CAAC,CAAC,IAAI,IAAI,CACb,CAAA;YACL,CAAC;YAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC1B,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACnE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC3B,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;oBAC/C,OAAO,QAAQ,CAAC,QAAiB,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC1D,CAAC,CAAC,CAAA;YACN,CAAC;YAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;gBAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACnE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAgB,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBAC7E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAgB,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBAC7E,OAAQ,IAAe,GAAI,IAAe,CAAA;gBAC9C,CAAC,CAAC,CAAA;YACN,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACnE,IAAI,CAAC,QAAQ;oBAAE,OAAO,IAAI,CAAC,MAAM,CAAA;gBACjC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxB,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;oBAC/C,OAAO,QAAQ,CAAC,QAAiB,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC1D,CAAC,CAAC,CAAC,MAAM,CAAA;YACb,CAAC;YAED,kFAAkF;YAClF,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3C,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;gBAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAY,CAAA;gBACnE,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAiB,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAErD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpB,kDAAkD;oBAClD,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;oBAC3B,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAwB,CAAA;oBACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;oBACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC1E,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;wBACtB,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAA;wBAC9D,GAAG,GAAG,QAAQ,CAAC,IAAa,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBACvD,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,uCAAuC;oBACvC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBACrD,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;wBACf,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;4BACtB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;4BACzC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,GAAG,GAAG,CAAA;4BACrC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,GAAG,IAAI,CAAA;4BACtC,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;wBAC/C,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;oBACjD,CAAC;gBACL,CAAC;gBACD,OAAO,GAAG,CAAA;YACd,CAAC;YAED,6CAA6C;YAC7C,0DAA0D;YAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,MAAM,CAAW,CAAC,CAAC,CAAC,IAAI,CAAA;YAEvE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpB,6BAA6B;gBAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAY,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC/E,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;gBAC9C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAU,CAAA;gBAC9C,CAAC,CAAC,CAAA;gBACF,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACrD,CAAC;YAED,sDAAsD;YACtD,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;gBAC7B,IAAI,EAAE,EAAE,CAAC;oBACL,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAY,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;oBAC/E,MAAM,MAAM,GAAe,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBACxE,OAAO,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;gBACzC,CAAC;YACL,CAAC;YAED,wDAAwD;YACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAW,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACzD,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAY,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC/E,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;gBAClD,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACpC,OAAO,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAU,CAAA;gBAC9C,CAAC,CAAC,CAAA;gBACF,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACzD,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO;QACH,QAAQ,EAAE,CAAC,IAAW,EAAE,MAAmB,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;QACrE,UAAU,EAAE,CAAC,IAAY,EAAE,MAAmB,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;KAClF,CAAA;AACL,CAAC;AAED,6BAA6B;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,EAAE,CAAA;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seval.js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "S-expression evaluator for TypeScript/JavaScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,9 +12,7 @@
|
|
|
12
12
|
"types": "./dist/index.d.ts"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
|
-
"files": [
|
|
16
|
-
"dist"
|
|
17
|
-
],
|
|
15
|
+
"files": ["dist"],
|
|
18
16
|
"scripts": {
|
|
19
17
|
"build": "tsc",
|
|
20
18
|
"dev": "tsc --watch",
|
|
@@ -27,13 +25,7 @@
|
|
|
27
25
|
"format:check": "biome format --write . && git diff --exit-code",
|
|
28
26
|
"prepublishOnly": "bun run build"
|
|
29
27
|
},
|
|
30
|
-
"keywords": [
|
|
31
|
-
"s-expression",
|
|
32
|
-
"sexp",
|
|
33
|
-
"lisp",
|
|
34
|
-
"evaluator",
|
|
35
|
-
"interpreter"
|
|
36
|
-
],
|
|
28
|
+
"keywords": ["s-expression", "sexp", "lisp", "evaluator", "interpreter"],
|
|
37
29
|
"author": "cpunion",
|
|
38
30
|
"license": "MIT",
|
|
39
31
|
"repository": {
|