You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ChocoPy/src/main/java/chocopy/pa3/StudentCodeGen.java

35 lines
1.2 KiB

package chocopy.pa3;
import chocopy.common.astnodes.Program;
import chocopy.common.codegen.CodeGenBase;
import chocopy.common.codegen.RiscVBackend;
/** Interface to code generator. */
public class StudentCodeGen {
/**
* Perform code generation from PROGRAM, assumed to be well-typed, to RISC-V, returning the
* assembly code. DEBUG iff --debug was on the command line.
*/
public static String process(Program program, boolean debug) {
/* Emit code into a ByteOutputStream, and convert to a string.
* If you need instructions not provided by RiscVBackend, simply
* use an extension of it. */
try {
RiscVBackend backend = new RiscVBackend();
CodeGenBase cgen = new CodeGenImpl(backend);
cgen.generate(program);
return backend.toString();
} catch (IllegalStateException | IllegalArgumentException e) {
System.err.println(
"Error performing code generation. "
+ "Re-run with --debug to see stack trace.");
if (debug) {
e.printStackTrace();
}
return null;
}
}
}