diff jsbackend.js @ 31:668f533e5284

Add initial version of C backend
author Mike Pavone <pavone@retrodev.com>
date Sat, 07 Jul 2012 16:48:36 -0700
parents 608eb70fe261
children 926b65fe92b4
line wrap: on
line diff
--- a/jsbackend.js	Thu Apr 19 19:20:21 2012 -0700
+++ b/jsbackend.js	Sat Jul 07 16:48:36 2012 -0700
@@ -1,4 +1,5 @@
 var mainModule;
+var modules = {};
 
 function toobj(val)
 {
@@ -78,6 +79,9 @@
 		for (var i = 0; i < funinfo.depth; ++i) {
 			pre += '.parent';
 		}
+	} else if (info.type == 'toplevel') {
+		pre = 'modules.';
+		modules[name] = false;
 	}
 	return pre + escapeJSName(name);
 }
@@ -209,7 +213,7 @@
 }
 
 object.prototype.toJSModule = function() {
-	this.populateSymbols(null);
+	this.populateSymbols(toplevel);
 	return '(function () {\n\tvar module = ' + indent(this.toJS()) + ';\n\treturn module;\n})'
 }
 
@@ -236,7 +240,7 @@
 	return 'function (' + args.join(', ') + ') {\n\t' + (this.symbols.needsSelfVar ? 'var self = this;\n\t' : '') + exprs.join(';\n\t') + '\n}'
 };
 lambda.prototype.toJSModule = function() {
-	this.populateSymbols(null);
+	this.populateSymbols(toplevel);
 	return this.toJS();
 }