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