comparison tpc.js @ 216:2dac67e9d18b

Add -m flag to compiler driver to select macro expansion only
author Michael Pavone <pavone@retrodev.com>
date Sat, 21 Dec 2013 12:07:00 -0800
parents 60eff5f81d9a
children 2557ce4e671f
comparison
equal deleted inserted replaced
215:f3d5068cbd43 216:2dac67e9d18b
6 var argtype = 'normal'; 6 var argtype = 'normal';
7 var includes = ['.']; 7 var includes = ['.'];
8 var basedir = ''; 8 var basedir = '';
9 var debugmode = false; 9 var debugmode = false;
10 var backend = 'C'; 10 var backend = 'C';
11 var macroonly = false;
11 for (var i = 0; i < arguments.length; i++) { 12 for (var i = 0; i < arguments.length; i++) {
12 switch (argtype) { 13 switch (argtype) {
13 case 'normal': 14 case 'normal':
14 switch (arguments[i]) { 15 switch (arguments[i]) {
15 case '-basedir': 16 case '-basedir':
17 case '-backend': 18 case '-backend':
18 argtype = arguments[i]; 19 argtype = arguments[i];
19 break; 20 break;
20 case '-compilerdebug': 21 case '-compilerdebug':
21 debugmode = true; 22 debugmode = true;
23 break;
24 case '-m':
25 macroonly = true;
22 break; 26 break;
23 default: 27 default:
24 if (arguments[i].charAt(0) == '-') { 28 if (arguments[i].charAt(0) == '-') {
25 print("unrecognized switch", arguments[i]); 29 print("unrecognized switch", arguments[i]);
26 quit(1); 30 quit(1);
104 var parsed = parseFile(filename); 108 var parsed = parseFile(filename);
105 if (debugmode) { 109 if (debugmode) {
106 debugprint = print; 110 debugprint = print;
107 } 111 }
108 parsed = parsed.macroexpand(new topenv(includes)); 112 parsed = parsed.macroexpand(new topenv(includes));
109 toplevel = new topsymbols(includes); 113 if (macroonly) {
110 switch(backend) 114 print(''+parsed);
111 { 115 } else {
112 case 'C': 116 toplevel = new topsymbols(includes);
113 var c = parsed.toCModule(); 117 switch(backend)
114 break; 118 {
115 case 'IL': 119 case 'C':
116 var c = parsed.toILModule(); 120 var c = parsed.toCModule();
117 case 'JS': 121 break;
118 var c = makeJSProg(parsed); 122 case 'IL':
119 break; 123 var c = parsed.toILModule();
120 default: 124 case 'JS':
121 print('Backend', backend, ' not recognized'); 125 var c = makeJSProg(parsed);
122 quit(1); 126 break;
127 default:
128 print('Backend', backend, ' not recognized');
129 quit(1);
130 }
131 print(c);
123 } 132 }
124 print(c);
125 } 133 }