Mercurial > repos > tabletprog
changeset 90:b5152f5ac138
Add backend selection to tpc.js compiler driver
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 23 Jul 2012 08:00:01 -0700 |
parents | f23ecd4e22af |
children | 46504d34cb44 926b65fe92b4 |
files | tpc.js |
diffstat | 1 files changed, 26 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/tpc.js Mon Jul 23 07:59:34 2012 -0700 +++ b/tpc.js Mon Jul 23 08:00:01 2012 -0700 @@ -6,12 +6,14 @@ var includes = ['.']; var basedir = ''; var debugmode = false; +var backend = 'C'; for (var i = 0; i < arguments.length; i++) { switch (argtype) { case 'normal': switch (arguments[i]) { case '-basedir': case '-i': + case '-backend': argtype = arguments[i]; break; case '-compilerdebug': @@ -38,6 +40,10 @@ includes.push(arguments[i]); argtype = 'normal'; break; + case '-backend': + backend = arguments[i]; + argtype = 'normal'; + break; } } if (argtype != 'normal') { @@ -50,7 +56,7 @@ quit(1); } includes.push(basedir + 'modules'); -compileFile(file, basedir, includes, debugmode); +compileFile(file, basedir, includes, debugmode, backend); function parseFile(filename) @@ -78,19 +84,35 @@ } -function compileFile(filename, basedir, includes, debugmode) +function compileFile(filename, basedir, includes, debugmode, backend) { load(basedir + 'peg.js'); PEG = module.exports; load(basedir + 'parser.js'); load(basedir + 'compiler.js'); - load(basedir + 'cbackend.js'); + if (backend == 'C') { + load(basedir + 'cbackend.js'); + } else { + load(basedir + 'jsbackend.js'); + } + var parsed = parseFile(filename); if (debugmode) { debugprint = print; } toplevel = new topsymbols(includes); - var c = parsed.toCModule(); + switch(backend) + { + case 'C': + var c = parsed.toCModule(); + break; + case 'JS': + var c = parsed.toJSModule(); + break; + default: + print('Backend', backend, ' not recognized'); + quit(1); + } print(c); }