diff compiler.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 a10f1b049193
line wrap: on
line diff
--- a/compiler.js	Thu Apr 19 19:20:21 2012 -0700
+++ b/compiler.js	Sat Jul 07 16:48:36 2012 -0700
@@ -3,14 +3,32 @@
 	return str.split('\n').join('\n\t');
 }
 
+var toplevel = new topsymbols();
 function topsymbols()
 {
 	this.names = null;
+	var self = this;
+	get('/src/', function(data) {
+		console.log(data);
+		self.names = {};
+		var fakeEl = newEl("div", {
+			innerHTML: data.response
+		});
+		console.log(fakeEl);
+		each(qall('a', fakeEl), function(idx, a) {
+			var tpidx = a.textContent.indexOf('.tp');
+			if (tpidx > -1) {
+				self.names[a.textContent.substr(0, tpidx)] = true;
+			}
+		});
+	});
 }
 topsymbols.prototype.find = function(name) {
+	console.log(this.names);
 	if (!this.names) {
-		
+		throw new Error('data not ready');
 	}
+	console.log('toplevel', name);
 	if (name in this.names) {
 		return {
 			type: 'toplevel',
@@ -98,8 +116,13 @@
 		};
 	} else if(this.parent) {
 		var ret = this.parent.find(name);
-		if (ret && ret.type == 'local') {
-			ret.type = 'upvar';
+		if (ret) {
+			if (ret.type == 'local') {
+				ret.type = 'upvar';
+				ret.depth = 1;
+			} else if (ret.type == 'upvar') {
+				ret.depth++;
+			}
 		}
 		return ret;
 	}