STEPS
1.
Write a class implements Backend
2.
Write method invoke() in that class
define the arguments
design necessary visitors
3.
Write visitors to traverse ASTs
4. Add flags to compiler
command-line
public class Compiler {
public static void
main (String[ ] args) {
inspectArgs(args);
initCompiler();
asts =
compileSources();
backend.invoke(
backendArgs, asts );
}
public static void
inspectArgs(String[] args) {
for (int i = 0;
i < args.length; i++) {
String
current = args[i];
....
if (current.equals(-simulator)) {
backend = new SimulatorBackend();
backendArgs = .... ;
}
}
}
}
protected static Backend backend = null;
protected static List backendArgs = new LinkedList();
protected static String[ ] helpMessage = { , };
protected static String[ ] usageMessage = { , };