Mercurial > repos > tabletprog
annotate scripttags.js @ 251:2557ce4e671f
Fix a couple of compiler bugs. topenv was getting initialized in multiple places. This resulted in multiple copies of modules getting created which caused problems for macro expansion. Additionally, arguments were not being marked as declared during code generation so assigning to an argument that was not closed over generated invalid C code.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 11 Apr 2014 22:29:32 -0700 |
parents | da7f585bf626 |
children |
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); |
104 | 5 asyncProcessTopLevelJS(toplevel, function() { |
6 var js = makeJSProg(ast); | |
7 eval(js); | |
8 }); | |
9 /*.toJSModule(); | |
10 mainModule = eval(js); | |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
11 if (mainModule.strue) { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
12 each(mainModule.strue, function(key, val) { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
13 if(val instanceof Function) { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
14 Boolean.prototype[key] = function() { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
15 return this.valueOf() ? mainModule.strue[key].apply(mainModule.strue, arguments) : mainModule.sfalse[key].apply(mainModule.sfalse, arguments); |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
16 }; |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
17 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
18 }); |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
19 } |
104 | 20 mainModule.main();*/ |
9
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 onReady(function() { |
104 | 24 toplevel.onReady( function() { |
25 var tags = qall('script[type="text/tabletprog"]'); | |
123
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
26 |
104 | 27 for (var i = 0; i < tags.length; ++i) { |
28 if (tags[i].src) { | |
123
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
29 (function() { |
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
30 var src = tags[i].src; |
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
31 get(src, function(req) { |
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
32 console.log('Compiling ' + src); |
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
33 compileAndRun(req.responseText); |
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
34 }); |
da7f585bf626
Add debug logging for compiling scripts in the browser
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
35 })(); |
104 | 36 } else { |
37 compileAndRun(tags[i].innerHTML); | |
38 } | |
9
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 } |
104 | 40 }); |
9
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 }); |