fez-lisp 1.5.3 → 1.5.4
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/README.md +1 -1
- package/lib/baked/std.js +1 -1
- package/package.json +1 -1
- package/src/compiler.js +0 -47
- package/src/interpreter.js +1 -34
- package/src/keywords.js +0 -1
package/package.json
CHANGED
package/src/compiler.js
CHANGED
@@ -104,7 +104,6 @@ const Helpers = {
|
|
104
104
|
__bit_not: '__bit_not=(a)=>~a',
|
105
105
|
__bit_lshift: '__bit_lshift=(a,b)=>a<<b',
|
106
106
|
__bit_rshift: '__bit_rshift=(a,b)=>a>>b',
|
107
|
-
__bit_urshift: '__bit_urshift=(a,b)=>a>>>b',
|
108
107
|
array: 'array=(...args)=>args',
|
109
108
|
not: 'not=(a)=>+!a',
|
110
109
|
and: `and=(a, b)=>+(a&&b)`,
|
@@ -177,50 +176,6 @@ const comp = (tree, Drill) => {
|
|
177
176
|
}
|
178
177
|
case KEYWORDS.DEFINE_VARIABLE: {
|
179
178
|
const n = tail[0][VALUE]
|
180
|
-
// const prefix = n.split(':')[0]
|
181
|
-
// if (prefix === OPTIMIZATIONS.RECURSION) {
|
182
|
-
// const name = lispToJavaScriptVariableName(n)
|
183
|
-
// const newName = `${OPTIMIZATIONS.RECURSION}_${performance
|
184
|
-
// .now()
|
185
|
-
// .toString()
|
186
|
-
// .replace('.', 7)}`
|
187
|
-
// Drill.Variables.add(name)
|
188
|
-
// Drill.Variables.add(newName)
|
189
|
-
// Drill.Helpers.add('__tco')
|
190
|
-
// const functionArgs = tail.at(-1).slice(1)
|
191
|
-
// const body = functionArgs.pop()
|
192
|
-
// const FunctionDrill = { Variables: new Set(), Helpers: Drill.Helpers }
|
193
|
-
// deepRename(n, `()=>${newName}`, body)
|
194
|
-
// const evaluatedBody = comp(body, FunctionDrill)
|
195
|
-
// const vars = FunctionDrill.Variables.size
|
196
|
-
// ? `var ${[...FunctionDrill.Variables].join(',')};`
|
197
|
-
// : ''
|
198
|
-
// return `(${name}=(__tco(${newName}=(${parseArgs(
|
199
|
-
// functionArgs,
|
200
|
-
// Drill
|
201
|
-
// )})=>{${vars}return ${evaluatedBody.toString().trim()}})));`
|
202
|
-
// } else
|
203
|
-
|
204
|
-
// if (prefix === OPTIMIZATIONS.CACHE) {
|
205
|
-
// // memoization here
|
206
|
-
// const name = lispToJavaScriptVariableName(n)
|
207
|
-
// const newName = name.substring(OPTIMIZATIONS.CACHE.length + 1)
|
208
|
-
// Drill.Variables.add(name)
|
209
|
-
// const functionArgs = tail.at(-1).slice(1)
|
210
|
-
// const body = functionArgs.pop()
|
211
|
-
// deepRename(n, newName, body)
|
212
|
-
// const FunctionDrill = { Variables: new Set(), Helpers: Drill.Helpers }
|
213
|
-
// const evaluatedBody = comp(body, FunctionDrill)
|
214
|
-
// const vars = FunctionDrill.Variables.size
|
215
|
-
// ? `var ${[...FunctionDrill.Variables].join(',')};`
|
216
|
-
// : ''
|
217
|
-
// return `(${name}=function(){var __${newName}_map = new Map();var ${newName}=(function(${parseArgs(
|
218
|
-
// functionArgs,
|
219
|
-
// Drill
|
220
|
-
// )}){${vars};var __key=[...arguments].join(',');if(__${newName}_map.has(__key)){return __${newName}_map.get(__key)}else{var __res = ${evaluatedBody
|
221
|
-
// .toString()
|
222
|
-
// .trim()};__${newName}_map.set(__key, __res);return __res}});return ${newName}(...arguments)});`
|
223
|
-
// }
|
224
179
|
const name = lispToJavaScriptVariableName(n)
|
225
180
|
Drill.Variables.add(name)
|
226
181
|
return `${name}=${comp(tail[1], Drill)};`
|
@@ -293,8 +248,6 @@ const comp = (tree, Drill) => {
|
|
293
248
|
return `(${parseArgs(tail, Drill, token)});`
|
294
249
|
case KEYWORDS.REMAINDER_OF_DIVISION:
|
295
250
|
return `(${comp(tail[0], Drill)}%${comp(tail[1], Drill)});`
|
296
|
-
case KEYWORDS.BIT_TYPE:
|
297
|
-
return `(${comp(tail[0], Drill)}>>>0).toString(2)`
|
298
251
|
case KEYWORDS.BITWISE_NOT:
|
299
252
|
return `~(${comp(tail[0], Drill)})`
|
300
253
|
case KEYWORDS.NOT:
|
package/src/interpreter.js
CHANGED
@@ -339,39 +339,6 @@ export const keywords = {
|
|
339
339
|
)
|
340
340
|
return a >> b
|
341
341
|
},
|
342
|
-
[KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT]: (args, env) => {
|
343
|
-
if (args.length !== 2)
|
344
|
-
throw new RangeError(
|
345
|
-
`Invalid number of arguments to (${
|
346
|
-
KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT
|
347
|
-
}) (= 2 required)\n\n(${
|
348
|
-
KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT
|
349
|
-
} ${stringifyArgs(args)})`
|
350
|
-
)
|
351
|
-
const a = evaluate(args[0], env)
|
352
|
-
if (typeof a !== 'number')
|
353
|
-
throw new TypeError(
|
354
|
-
`First arguments of (${
|
355
|
-
KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT
|
356
|
-
}) must be a (${RUNTIME_TYPES.NUMBER}) but ${LISP.source(
|
357
|
-
args[0]
|
358
|
-
)} is not\n\n(${KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT} ${stringifyArgs(
|
359
|
-
args
|
360
|
-
)})`
|
361
|
-
)
|
362
|
-
const b = evaluate(args[1], env)
|
363
|
-
if (typeof b !== 'number')
|
364
|
-
throw new TypeError(
|
365
|
-
`Second arguments of (${
|
366
|
-
KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT
|
367
|
-
}) must be a (${RUNTIME_TYPES.NUMBER}) but ${LISP.source(
|
368
|
-
args[1]
|
369
|
-
)} is not\n\n(${KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT} ${stringifyArgs(
|
370
|
-
args
|
371
|
-
)})`
|
372
|
-
)
|
373
|
-
return a >>> b
|
374
|
-
},
|
375
342
|
[KEYWORDS.CREATE_ARRAY]: (args, env) => {
|
376
343
|
return args.length ? args.map((x) => evaluate(x, env)) : []
|
377
344
|
},
|
@@ -400,7 +367,7 @@ export const keywords = {
|
|
400
367
|
throw new TypeError(
|
401
368
|
`Second argument of (${
|
402
369
|
KEYWORDS.GET_ARRAY
|
403
|
-
}) must be a positive (
|
370
|
+
}) must be a positive (interger ${
|
404
371
|
RUNTIME_TYPES.NUMBER
|
405
372
|
}) (= i ${index})\n\n(${KEYWORDS.GET_ARRAY} ${stringifyArgs(args)})`
|
406
373
|
)
|