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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "fez-lisp",
3
3
  "description": "Lisp interpreted & compiled to JavaScript",
4
4
  "author": "AT290690",
5
- "version": "1.5.3",
5
+ "version": "1.5.4",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
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:
@@ -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 (32 bit ${
370
+ }) must be a positive (interger ${
404
371
  RUNTIME_TYPES.NUMBER
405
372
  }) (= i ${index})\n\n(${KEYWORDS.GET_ARRAY} ${stringifyArgs(args)})`
406
373
  )
package/src/keywords.js CHANGED
@@ -23,7 +23,6 @@ export const KEYWORDS = {
23
23
  BITWISE_XOR: '^',
24
24
  BITWISE_LEFT_SHIFT: '<<',
25
25
  BITWISE_RIGHT_SHIFT: '>>',
26
- BITWISE_UNSIGNED_RIGHT_SHIFT: '>>>',
27
26
  GET_ARRAY: 'get',
28
27
  BLOCK: 'do',
29
28
  ANONYMOUS_FUNCTION: 'lambda',