Mercurial > repos > tabletprog
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; }