fez-lisp 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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.2.0",
5
+ "version": "1.2.1",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
@@ -6,7 +6,8 @@ import {
6
6
  APPLY,
7
7
  ATOM,
8
8
  FALSE,
9
- TRUE
9
+ TRUE,
10
+ TYPES,
10
11
  } from './keywords.js'
11
12
  import { evaluate } from './evaluator.js'
12
13
  import { isLeaf } from './parser.js'
@@ -165,7 +166,7 @@ const keywords = {
165
166
  const condition = evaluate(args[0], env)
166
167
  if (condition !== FALSE && condition !== TRUE)
167
168
  throw new TypeError(
168
- `Condition of (${KEYWORDS.IF}) must be 0 or 1 but got ${condition}`
169
+ `Condition of (${KEYWORDS.IF}) must be ${TRUE} or ${FALSE} but got ${condition}`
169
170
  )
170
171
  return condition
171
172
  ? evaluate(args[1], env)
@@ -186,7 +187,7 @@ const keywords = {
186
187
  const condition = evaluate(args[i], env)
187
188
  if (condition !== FALSE && condition !== TRUE)
188
189
  throw new TypeError(
189
- `Condition of (${KEYWORDS.CONDITION}) must be 0 or 1 but got ${condition}`
190
+ `Condition of (${KEYWORDS.CONDITION}) must be ${TRUE} or ${FALSE} but got ${condition}`
190
191
  )
191
192
  if (condition) return evaluate(args[i + 1], env)
192
193
  }
@@ -422,7 +423,7 @@ const keywords = {
422
423
  circuit = evaluate(args[i], env)
423
424
  if (circuit !== FALSE && circuit !== TRUE)
424
425
  throw new TypeError(
425
- `Condition of (${KEYWORDS.AND}) must be 0 or 1 but got ${circuit}`
426
+ `Condition of (${KEYWORDS.AND}) must be ${TRUE} or ${FALSE} but got ${circuit}`
426
427
  )
427
428
  if (circuit) continue
428
429
  else return 0
@@ -430,7 +431,7 @@ const keywords = {
430
431
  const end = evaluate(args.at(-1), env)
431
432
  if (end !== FALSE && end !== TRUE)
432
433
  throw new TypeError(
433
- `Condition of (${KEYWORDS.AND}) must be 0 or 1 but got ${end}`
434
+ `Condition of (${KEYWORDS.AND}) must be ${TRUE} or ${FALSE} but got ${end}`
434
435
  )
435
436
  return end
436
437
  },
@@ -446,7 +447,7 @@ const keywords = {
446
447
  circuit = evaluate(args[i], env)
447
448
  if (circuit !== FALSE && circuit !== TRUE)
448
449
  throw new TypeError(
449
- `Condition of (${KEYWORDS.OR}) must be 0 or 1 but got ${circuit}`
450
+ `Condition of (${KEYWORDS.OR}) must be ${TRUE} or ${FALSE} but got ${circuit}`
450
451
  )
451
452
  if (circuit) return 1
452
453
  else continue
@@ -454,7 +455,7 @@ const keywords = {
454
455
  const end = evaluate(args.at(-1), env)
455
456
  if (end !== FALSE && end !== TRUE)
456
457
  throw new TypeError(
457
- `Condition of (${KEYWORDS.OR}) must be 0 or 1 but got ${end}`
458
+ `Condition of (${KEYWORDS.OR}) must be ${TRUE} or ${FALSE} but got ${end}`
458
459
  )
459
460
  return end
460
461
  },
@@ -498,7 +499,7 @@ const keywords = {
498
499
  throw new SyntaxError(
499
500
  `First argument of (${
500
501
  KEYWORDS.DEFINE_VARIABLE
501
- }) must be word but got ${type} (${
502
+ }) must be word but got ${TYPES[type]} (${
502
503
  KEYWORDS.DEFINE_VARIABLE
503
504
  } ${stringifyArgs(args)})`
504
505
  )
package/src/keywords.js CHANGED
@@ -53,3 +53,10 @@ export const KEYWORDS = {
53
53
  LOG_CHAR: 'log-char!',
54
54
  CLEAR_CONSOLE: 'clear!'
55
55
  }
56
+
57
+
58
+ export const TYPES = {
59
+ [APPLY]: 'APPLY',
60
+ [WORD]: 'WORD',
61
+ [ATOM]: 'ATOM'
62
+ }