git » jacl.git » commit b16f9df

rename contexts

author Alan Dipert
2019-11-15 23:59:27 UTC
committer Alan Dipert
2019-11-15 23:59:27 UTC
parent c1eb11df4b19633daab5724e4da2661bd80904c4

rename contexts

jacl.js +31 -31

diff --git a/jacl.js b/jacl.js
index 988d906..d73b76f 100644
--- a/jacl.js
+++ b/jacl.js
@@ -862,13 +862,13 @@ const makeNode = (op, ...objs) => merge({ op: op }, ...objs);
 
 const analyzeBlock = (env, parent, forms) => {
   let stmts = forms.slice(0, forms.length-1)
-               .map(x => analyze(env.withContext('statement'), parent, x)),
+               .map(x => analyze(env.withContext('stmt'), parent, x)),
       ret;
   if (forms.length <= 1) {
-    ret = analyze(env.withContext(env.context === 'statement' ? 'statement' : 'return'), parent, forms.length ? forms[0] : null);
+    ret = analyze(env.withContext(env.context === 'stmt' ? 'stmt' : 'return'), parent, forms.length ? forms[0] : null);
   } else {
     ret = analyze(
-      env.withContext(env.context === 'statement' ? 'statement' : 'return'),
+      env.withContext(env.context === 'stmt' ? 'stmt' : 'return'),
       parent,
       forms.slice(forms.length-1)[0]
     )
@@ -1104,20 +1104,20 @@ const analyzeSpecials = new Map([
       form: form,
       field: field instanceof LispSymbol ? field.name : field.toString()
     });
-    node.target = analyze(env.withContext('sval'), node, target);
+    node.target = analyze(env.withContext('expr'), node, target);
     return node;
   }],
   [JACLPKG.intern('%CALL'), (env, parent, form) => {
     const [, func, ...args] = form;
     const node = makeNode('call', { env: env, parent: parent, form: form });
-    node.f = analyze(env.withContext('sval'), node, func);
-    node.args = args.map(analyze.bind(null, env.withContext('sval'), node))
+    node.f = analyze(env.withContext('expr'), node, func);
+    node.args = args.map(analyze.bind(null, env.withContext('expr'), node))
     return node;
   }],
   [JACLPKG.intern('%LAMBDA'), (env, parent, form) => {
     const [, list, ...body] = form;
     const node = makeNode('lambda', { env: env, parent: parent, form: form });
-    const { lambdaList, bodyEnv } = analyzeLambdaList(env.withContext('sval'), node, list);
+    const { lambdaList, bodyEnv } = analyzeLambdaList(env.withContext('expr'), node, list);
     node.lambdaList = lambdaList;
     return merge(
       node,
@@ -1133,7 +1133,7 @@ const analyzeSpecials = new Map([
       throw new Error(`%JS wrong number of arguments`);
 
     const node = makeNode('js', { env: env, parent: parent, form: form });
-    node.args = args.map(x => analyze(env.withContext('sval'), node, x));
+    node.args = args.map(x => analyze(env.withContext('expr'), node, x));
     node.template = templateStr;
     return node;
   }],
@@ -1145,7 +1145,7 @@ const analyzeSpecials = new Map([
       form: form
     });
     node.bindings = Cons.toArray(bindings).map(([name, expr]) => {
-      return [name, analyze(env.withContext('sval'), node, expr)];
+      return [name, analyze(env.withContext('expr'), node, expr)];
     });
     return merge(
       node,
@@ -1157,7 +1157,7 @@ const analyzeSpecials = new Map([
     if (!(target instanceof LispSymbol))
       throw new Error(`Can't assign to non-symbol`);
 
-    const valExpr = analyze(env.withContext('sval'), null, val);
+    const valExpr = analyze(env.withContext('expr'), null, val);
 
     let op;
 
@@ -1207,7 +1207,7 @@ const analyzeSpecials = new Map([
     });
 
     const childEnv = env
-      .withContext('statement')
+      .withContext('stmt')
       .withTags(node.id, Array.from(tags.keys()).filter(x => x !== null));
 
     // Second pass: analyze statements
@@ -1241,7 +1241,7 @@ const analyzeSpecials = new Map([
   [JACLPKG.intern('%IF'), (env, parent, form) => {
     if ([...form].length < 4) throw new Error(`IF requires at least 3 args`);
     const [, pred, expr0, expr1] = form;
-    const testNode = analyze(env.withContext('sval'), null, pred),
+    const testNode = analyze(env.withContext('expr'), null, pred),
           thenNode = analyze(env, null, expr0),
           elseNode = analyze(env, null, expr1);
     const node = makeNode('if', {
@@ -1261,12 +1261,12 @@ const analyzeSpecials = new Map([
 const parseCall = (env, parent, form) => {
   const [func, ...args] = form;
   let node = makeNode('call', { env: env, parent: parent, form: form });
-  node.args = args.map(analyze.bind(null, env.withContext('sval'), node));
+  node.args = args.map(analyze.bind(null, env.withContext('expr'), node));
   if (isLambdaForm(func)) {
-    node.f = analyze(env.withContext('sval'), parent, func);
+    node.f = analyze(env.withContext('expr'), parent, func);
   } else if (func instanceof LispSymbol) {
     node.f = makeNode('global', {
-      env: env.withContext('sval'),
+      env: env.withContext('expr'),
       parent: node,
       form: func,
       slot: 'function'
@@ -1322,7 +1322,7 @@ class Env {
     env.locals = new Set();
     // sym => tagbodyName
     env.tags = new Map();
-    env.context = 'sval';
+    env.context = 'expr';
     env.counter = makeCounter();
     return env;
   }
@@ -1435,23 +1435,23 @@ const emitNode = (print, node) => {
     case 'js-var':
       if (context === 'return') print('return ');
       print(node.name);
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'js-field':
       if (context === 'return') print('return ');
       emitNode(print, node.target);
       print(`.${node.field}`);
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'constant':
       if (context === 'return') print('return ');
       print(constantCode(form));
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'local':
       if (context === 'return') print('return ');
       print(mungeSym(form, 'local'));
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'global':
       if (context === 'return') print('return ');
@@ -1467,13 +1467,13 @@ const emitNode = (print, node) => {
           throw new Error(`Unknown global slot: ${node.slot}`);
         }
       }
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'set-global':
       if (context === 'return') print('return ');
       print(`Package.get('${escapeSingle(node.targetSym.packageName)}').intern('${escapeSingle(node.targetSym.name)}').value=`);
       emitNode(print, node.val);
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
       break;
     case 'set-local':
@@ -1481,7 +1481,7 @@ const emitNode = (print, node) => {
       print(mungeSym(node.targetSym, 'local'))
       print('=');
       emitNode(print, node.val);
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'js':
       if (context === 'return') print('return ');
@@ -1500,10 +1500,10 @@ const emitNode = (print, node) => {
       } else {
         print(node.template);
       }
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'let':
-      if (context === 'sval') print('(function()');
+      if (context === 'expr') print('(function()');
       print('{');
       if (node.bindings.length) print('var ');
       for (let i = 0; i < node.bindings.length; i++) {
@@ -1516,7 +1516,7 @@ const emitNode = (print, node) => {
       if (node.bindings.length) print(';');
       emitBlock(print, node.statements, node.ret);
       print('}');
-      if (context === 'sval') print(')()');
+      if (context === 'expr') print(')()');
       break;
     case 'lambda': {
       print('(function(');
@@ -1670,10 +1670,10 @@ const emitNode = (print, node) => {
         if (i < node.args.length-1) print(',');
       });
       print(')');
-      if (context !== 'sval') print(';\n');
+      if (context !== 'expr') print(';\n');
       break;
     case 'if':
-      if (context === 'sval' || context === 'return') {
+      if (context === 'expr' || context === 'return') {
         print('(');
         emitNode(print, node.testNode);
         print('!==null)?')
@@ -1693,7 +1693,7 @@ const emitNode = (print, node) => {
       break;
     case 'tagbody': {
       if (context === 'return') print('return ');
-      if (context === 'sval' || context === 'return') {
+      if (context === 'expr' || context === 'return') {
         throw new Error('TODO tagbody IIFE');
       } else {
         for (const stmt of node.prelude) {
@@ -1713,11 +1713,11 @@ const emitNode = (print, node) => {
           print('}\n');
         }
       }
-      //if (context !== 'sval') print(';\n');
+      //if (context !== 'expr') print(';\n');
       break;
     } case 'go': {
       if (context === 'return') print('return ');
-      if (context === 'sval' || context === 'return') {
+      if (context === 'expr' || context === 'return') {
         throw new Error('TODO go IIFE');
       } else {
         print('{\n');