changeset 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 f3d5068cbd43
children adad61ea2f3a
files tpc.js
diffstat 1 files changed, 23 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/tpc.js	Sat Dec 21 12:06:10 2013 -0800
+++ b/tpc.js	Sat Dec 21 12:07:00 2013 -0800
@@ -8,6 +8,7 @@
 var basedir = '';
 var debugmode = false;
 var backend = 'C';
+var macroonly = false;
 for (var i = 0; i < arguments.length; i++) {
 	switch (argtype) {
 	case 'normal':
@@ -20,6 +21,9 @@
 		case '-compilerdebug':
 			debugmode = true;
 			break;
+		case '-m':
+			macroonly = true;
+			break;
 		default:
 			if (arguments[i].charAt(0) == '-') {
 				print("unrecognized switch", arguments[i]);
@@ -106,20 +110,24 @@
 		debugprint = print;
 	}
   parsed = parsed.macroexpand(new topenv(includes));
-	toplevel = new topsymbols(includes);
-	switch(backend)
-	{
-	case 'C':
-		var c = parsed.toCModule();
-		break;
-	case 'IL':
-		var c = parsed.toILModule();
-	case 'JS':
-		var c = makeJSProg(parsed);
-		break;
-	default:
-		print('Backend', backend, ' not recognized');
-		quit(1);
+	if (macroonly) {
+		print(''+parsed);
+	} else {
+		toplevel = new topsymbols(includes);
+		switch(backend)
+		{
+		case 'C':
+			var c = parsed.toCModule();
+			break;
+		case 'IL':
+			var c = parsed.toILModule();
+		case 'JS':
+			var c = makeJSProg(parsed);
+			break;
+		default:
+			print('Backend', backend, ' not recognized');
+			quit(1);
+		}
+		print(c);
 	}
-	print(c);
 }