fez-lisp 1.2.26 → 1.2.27

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/compiler.js +15 -14
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.26",
5
+ "version": "1.2.27",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
package/src/compiler.js CHANGED
@@ -22,9 +22,9 @@ const dotNamesToEmpty = (name) => name.replace(new RegExp(/\./g), '')
22
22
  const arrowFromTo = (name) => name.replace(new RegExp(/->/g), '-to-')
23
23
  const moduleNameToLodashes = (name) => name.replace(new RegExp(/:/g), '_')
24
24
  const questionMarkToPredicate = (name) =>
25
- name.replace(new RegExp(/\?/g), 'Predicate')
25
+ name.replace(new RegExp(/\?/g), '_predicate')
26
26
  const exclamationMarkMarkToEffect = (name) =>
27
- name.replace(new RegExp(/\!/g), 'Effect')
27
+ name.replace(new RegExp(/\!/g), '_effect')
28
28
  const toCamelCase = (name) => {
29
29
  let out = name[0]
30
30
  for (let i = 1; i < name.length; ++i) {
@@ -36,6 +36,7 @@ const toCamelCase = (name) => {
36
36
  }
37
37
  return out
38
38
  }
39
+ const dashToLodashes = (name) => name.replace(new RegExp(/-/g), '_')
39
40
  const keywordToHelper = (name) => {
40
41
  switch (name) {
41
42
  case KEYWORDS.ADDITION:
@@ -59,7 +60,7 @@ const keywordToHelper = (name) => {
59
60
  }
60
61
  }
61
62
  const lispToJavaScriptVariableName = (name) =>
62
- toCamelCase(
63
+ dashToLodashes(
63
64
  arrowFromTo(
64
65
  dotNamesToEmpty(
65
66
  exclamationMarkMarkToEffect(
@@ -99,16 +100,16 @@ const Helpers = {
99
100
  }
100
101
  return args.at(-1) ? 1 : 0
101
102
  }`,
102
- logEffect: `logEffect=(msg)=>{console.log(msg);return msg}`,
103
- logCharEffect: `logCharEffect=(msg)=>{console.log(String.fromCharCode(msg));return msg}`,
104
- logStringEffect: `logStringEffect=(msg)=>{console.log(msg.map(x=>String.fromCharCode(x)).join(''));return msg}`,
105
- clearEffect: `clearEffect=()=>{console.clear();return 0}`,
103
+ log_effect: `log_effect=(msg)=>{console.log(msg);return msg}`,
104
+ log_char_effect: `log_char_effect=(msg)=>{console.log(String.fromCharCode(msg));return msg}`,
105
+ log_string_effect: `log_string_effect=(msg)=>{console.log(msg.map(x=>String.fromCharCode(x)).join(''));return msg}`,
106
+ clear_effect: `clear_effect=()=>{console.clear();return 0}`,
106
107
  get: 'get=(arr,i)=>arr.at(i)',
107
108
  length: 'length=(arr)=>arr.length',
108
109
  __tco: `__tco=fn=>(...args)=>{let result=fn(...args);while(typeof result==='function')result=result();return result}`,
109
- atomPredicate: `atomPredicate=(number)=>+(typeof number==='number')`,
110
- lambdaPredicate: `lambdaPredicate=(fm)=>+(typeof fn==='function')`,
111
- setEffect: `setEffect=(array,index,value)=>{if(index<0){const target=array.length+index;while(array.length!==target)array.pop()}else array[index] = value;return array}`
110
+ atom_predicate: `atom_predicate=(number)=>+(typeof number==='number')`,
111
+ lambda_predicate: `lambda_predicate=(fm)=>+(typeof fn==='function')`,
112
+ set_effect: `set_effect=(array,index,value)=>{if(index<0){const target=array.length+index;while(array.length!==target)array.pop()}else array[index] = value;return array}`
112
113
  }
113
114
  const semiColumnEdgeCases = new Set([
114
115
  ';)',
@@ -190,11 +191,11 @@ const compile = (tree, Drill) => {
190
191
  }
191
192
  }
192
193
  case KEYWORDS.IS_ATOM:
193
- Drill.Helpers.add('atomPredicate')
194
- return `atomPredicate(${compile(Arguments[0], Drill)});`
194
+ Drill.Helpers.add('atom_predicate')
195
+ return `atom_predicate(${compile(Arguments[0], Drill)});`
195
196
  case KEYWORDS.IS_LAMBDA:
196
- Drill.Helpers.add('lambdaPredicate')
197
- return `lambdaPredicate(${compile(Arguments[0], Drill)});`
197
+ Drill.Helpers.add('lambda_predicate')
198
+ return `lambda_predicate(${compile(Arguments[0], Drill)});`
198
199
  case KEYWORDS.NUMBER_TYPE:
199
200
  return '0'
200
201
  case KEYWORDS.BOOLEAN_TYPE: