package de.fuberlin.commons; import de.fuberlin.projectF.CodeGenerator.CodeGenerator; public class DragonCompiler { // project a public static String generateLLVMCode(String program) { // plug here project bi, bii, ci, cii into main return program; } // project e private static String optimizeLLVMCode(String llvmCode) { return llvmCode; } // project f private static String generateGASAssembler(String llvmCode) { boolean debug = false; boolean guiFlag = false; String assemblerType="gnu"; return CodeGenerator.generateCode(llvmCode, assemblerType, debug, guiFlag); } // project ci with bi or bii @SuppressWarnings("unused") private static void genParseTreeCi(String program) { return; } // project cii with bii or bi @SuppressWarnings("unused") private static void genParseTreeCii(String program) { return; } public static String compile(String program) { String llvmCode = generateLLVMCode(program); llvmCode = optimizeLLVMCode(llvmCode); String gasCode = generateGASAssembler(llvmCode); return gasCode; } public static void main(String[] args) { String file = args[0]; String machineCode = compile(file); System.out.println(machineCode); } }