fez-lisp 1.5.3 → 1.5.5

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.5",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
package/src/compiler.js CHANGED
@@ -7,7 +7,6 @@ import {
7
7
  VALUE,
8
8
  WORD
9
9
  } from './keywords.js'
10
- import { OPTIMIZATIONS } from './macros.js'
11
10
  import { leaf, isLeaf, AST } from './parser.js'
12
11
  const deepRename = (name, newName, tree) => {
13
12
  if (!isLeaf(tree))
@@ -70,8 +69,6 @@ const keywordToHelper = (name) => {
70
69
  return '__bit_lshift'
71
70
  case KEYWORDS.BITWISE_RIGHT_SHIFT:
72
71
  return '__bit_rshift'
73
- case KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT:
74
- return '__bit_urshift'
75
72
  default:
76
73
  return name
77
74
  }
@@ -104,7 +101,6 @@ const Helpers = {
104
101
  __bit_not: '__bit_not=(a)=>~a',
105
102
  __bit_lshift: '__bit_lshift=(a,b)=>a<<b',
106
103
  __bit_rshift: '__bit_rshift=(a,b)=>a>>b',
107
- __bit_urshift: '__bit_urshift=(a,b)=>a>>>b',
108
104
  array: 'array=(...args)=>args',
109
105
  not: 'not=(a)=>+!a',
110
106
  and: `and=(a, b)=>+(a&&b)`,
@@ -177,50 +173,6 @@ const comp = (tree, Drill) => {
177
173
  }
178
174
  case KEYWORDS.DEFINE_VARIABLE: {
179
175
  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
176
  const name = lispToJavaScriptVariableName(n)
225
177
  Drill.Variables.add(name)
226
178
  return `${name}=${comp(tail[1], Drill)};`
@@ -289,12 +241,8 @@ const comp = (tree, Drill) => {
289
241
  case KEYWORDS.BITWISE_XOR:
290
242
  case KEYWORDS.BITWISE_LEFT_SHIFT:
291
243
  case KEYWORDS.BITWISE_RIGHT_SHIFT:
292
- case KEYWORDS.BITWISE_UNSIGNED_RIGHT_SHIFT:
293
- return `(${parseArgs(tail, Drill, token)});`
294
244
  case KEYWORDS.REMAINDER_OF_DIVISION:
295
245
  return `(${comp(tail[0], Drill)}%${comp(tail[1], Drill)});`
296
- case KEYWORDS.BIT_TYPE:
297
- return `(${comp(tail[0], Drill)}>>>0).toString(2)`
298
246
  case KEYWORDS.BITWISE_NOT:
299
247
  return `~(${comp(tail[0], Drill)})`
300
248
  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',