annotate scripttags.js @ 19:132c7756860e

Use populateSymbols to generate symbol tables during compilation rather than populating them as we go. This change allows us to refer to symbols defined later in the input stream and also gives the symbol table logic a single home that can be used both by the compiler and editor.
author Mike Pavone <pavone@retrodev.com>
date Sun, 25 Mar 2012 16:11:19 -0700
parents 37d7f60a8ea1
children 4d87c38404d6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 function compileAndRun(src)
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 {
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 var ast = parser.parse(src);
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 var js = ast.toJSModule();
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 mainModule = eval(js)();
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 mainModule.main();
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 }
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 onReady(function() {
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 var tags = qall('script[type="text/tabletprog"]');
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 for (var i = 0; i < tags.length; ++i) {
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 if (tags[i].src) {
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 get(tags[i].src, function(req) {
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 compileAndRun(req.responseText);
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 });
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 } else {
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 compileAndRun(tags[i].innerHTML);
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 }
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 }
37d7f60a8ea1 Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 });