fez-lisp 1.6.42 → 1.6.44

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.6.42",
5
+ "version": "1.6.44",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
package/src/types.js CHANGED
@@ -1083,8 +1083,8 @@ export const SPECIAL_FORM_TYPES = {
1083
1083
  [STATS]: {
1084
1084
  retried: Infinity,
1085
1085
  [SIGNATURE]: PLACEHOLDER,
1086
- [TYPE_PROP]: [ATOM],
1087
- [RETURNS]: [ATOM],
1086
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1087
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1088
1088
  [ARGUMENTS]: [],
1089
1089
  [ARG_COUNT]: 0
1090
1090
  }
@@ -1093,8 +1093,8 @@ export const SPECIAL_FORM_TYPES = {
1093
1093
  [STATS]: {
1094
1094
  retried: Infinity,
1095
1095
  [SIGNATURE]: PLACEHOLDER,
1096
- [TYPE_PROP]: [ATOM],
1097
- [RETURNS]: [ATOM],
1096
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1097
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1098
1098
  [ARGUMENTS]: [],
1099
1099
  [ARG_COUNT]: 0
1100
1100
  }
@@ -1114,8 +1114,8 @@ export const SPECIAL_FORM_TYPES = {
1114
1114
  [STATS]: {
1115
1115
  retried: Infinity,
1116
1116
  [SIGNATURE]: PLACEHOLDER,
1117
- [TYPE_PROP]: [ATOM],
1118
- [RETURNS]: [ATOM],
1117
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1118
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1119
1119
 
1120
1120
  [ARGUMENTS]: [],
1121
1121
  [ARG_COUNT]: 0
@@ -1125,8 +1125,8 @@ export const SPECIAL_FORM_TYPES = {
1125
1125
  [STATS]: {
1126
1126
  retried: Infinity,
1127
1127
  [SIGNATURE]: PLACEHOLDER,
1128
- [TYPE_PROP]: [ATOM],
1129
- [RETURNS]: [ATOM],
1128
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1129
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1130
1130
  [ARGUMENTS]: [],
1131
1131
  [ARG_COUNT]: 0
1132
1132
  }
@@ -1146,8 +1146,8 @@ export const SPECIAL_FORM_TYPES = {
1146
1146
  [STATS]: {
1147
1147
  retried: Infinity,
1148
1148
  [SIGNATURE]: PLACEHOLDER,
1149
- [TYPE_PROP]: [ATOM],
1150
- [RETURNS]: [ATOM],
1149
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1150
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1151
1151
  [ARGUMENTS]: [],
1152
1152
  [ARG_COUNT]: 0
1153
1153
  }
@@ -1156,8 +1156,8 @@ export const SPECIAL_FORM_TYPES = {
1156
1156
  [STATS]: {
1157
1157
  retried: Infinity,
1158
1158
  [SIGNATURE]: PLACEHOLDER,
1159
- [TYPE_PROP]: [ATOM],
1160
- [RETURNS]: [ATOM],
1159
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1160
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1161
1161
  [ARGUMENTS]: [],
1162
1162
  [ARG_COUNT]: 0
1163
1163
  }
@@ -1177,8 +1177,8 @@ export const SPECIAL_FORM_TYPES = {
1177
1177
  [STATS]: {
1178
1178
  retried: Infinity,
1179
1179
  [SIGNATURE]: PLACEHOLDER,
1180
- [TYPE_PROP]: [ATOM],
1181
- [RETURNS]: [ATOM],
1180
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1181
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1182
1182
  [ARGUMENTS]: [],
1183
1183
  [ARG_COUNT]: 0
1184
1184
  }
@@ -1187,8 +1187,8 @@ export const SPECIAL_FORM_TYPES = {
1187
1187
  [STATS]: {
1188
1188
  retried: Infinity,
1189
1189
  [SIGNATURE]: PLACEHOLDER,
1190
- [TYPE_PROP]: [ATOM],
1191
- [RETURNS]: [ATOM],
1190
+ [TYPE_PROP]: [ATOM, SPECIAL_NUMBER],
1191
+ [RETURNS]: [ATOM, SPECIAL_NUMBER],
1192
1192
  [ARGUMENTS]: [],
1193
1193
  [ARG_COUNT]: 0
1194
1194
  }
package/src/utils.js CHANGED
@@ -30,6 +30,14 @@ import { debugStackToString, startDebug, debug } from './debugger.js'
30
30
  export const logError = (error) =>
31
31
  console.log('\x1b[31m', `\n${error}\n`, '\x1b[0m')
32
32
  export const logSuccess = (output) => console.log('\x1b[32m', output, '\x1b[0m')
33
+ export const logType = (type) => {
34
+ console.log('\n\x1b[34m')
35
+ console.log(type, '\n\x1b[0m')
36
+ }
37
+ export const logResult = (result) => {
38
+ console.log('\x1b[34m')
39
+ console.log(result, '\n\x1b[0m')
40
+ }
33
41
  export const wrapInBracesString = (exp) => `(${stringifyArgs(exp)})`
34
42
  export const logExp = function (exp, ...args) {
35
43
  console.log(wrapInBracesString(exp), ...args)
@@ -365,12 +373,59 @@ export const isInputVariable = (x) =>
365
373
  x[1][TYPE] === WORD &&
366
374
  x[1][VALUE] === 'INPUT'
367
375
 
376
+ export const init = () => {
377
+ import('fs').then(({ writeFileSync }) => {
378
+ writeFileSync('main.lisp', '')
379
+ writeFileSync('types.lisp', '')
380
+ writeFileSync(
381
+ 'main.js',
382
+ `import { compile, enhance, parse, LISP, UTILS } from 'fez-lisp'
383
+ import { readFileSync } from 'fs'
384
+ export const dev = (source, types) => {
385
+ try {
386
+ const parsed = parse(source)
387
+ const { evaluated, type, error } = UTILS.debug(
388
+ parsed,
389
+ true,
390
+ types ? types : undefined
391
+ )
392
+ if (error == null) {
393
+ if (type) {
394
+ UTILS.logType(type)
395
+ }
396
+ UTILS.logResult(LISP.serialise(evaluated))
397
+ } else UTILS.logError(error.message)
398
+ } catch (error) {
399
+ UTILS.logError(error.message)
400
+ }
401
+ }
402
+ export const comp = (source) =>
403
+ UTILS.logResult(
404
+ LISP.serialise(new Function('return ' + compile(enhance(parse(source))))())
405
+ )
406
+ const file = readFileSync('./main.lisp', 'utf-8')
407
+ switch (process.argv[2]) {
408
+ case 'comp':
409
+ comp(file)
410
+ break
411
+ case 'dev':
412
+ dev(file, readFileSync('./types.lisp', 'utf-8'))
413
+ break
414
+ }
415
+ `
416
+ )
417
+ })
418
+ }
419
+
368
420
  export const UTILS = {
421
+ init,
369
422
  debug,
370
423
  startDebug,
371
424
  debugStackToString,
372
425
  handleUnbalancedQuotes,
373
426
  handleUnbalancedParens,
427
+ logType,
428
+ logResult,
374
429
  logError,
375
430
  logSuccess,
376
431
  formatErrorWithCallstack,