import java.nio.file.Files; import java.nio.file.Paths; import frontend.lexer.Lexer; import frontend.lexer.TokenStream; import frontend.parser.Parser; import midend.Midend; import midend.errorhandle.ErrorHandler; import error.Errors; import midend.symbol.SymbolManager; public class Compiler { public static void main(String[] args) { Errors errors = new Errors(); try { String content = new String(Files.readAllBytes(Paths.get("testfile.txt"))); String llvmFile = "llvm_ir.txt"; String errorFile = "error.txt"; Lexer lexer = new Lexer(content); lexer.lex(errors); TokenStream ts = new TokenStream(lexer.getTokens()); Parser parser = new Parser(ts); parser.parse(errors); ErrorHandler errorHandler = new ErrorHandler(parser.getCompUnit()); errorHandler.visit(errors); // for (int i : SymbolManager.getSequence()) { // System.out.print(i + " "); // } // System.out.println(); // TODO:debug if (errors.size() > 0) { StringBuilder sb = errors.toStringBuilder(); Files.write(Paths.get(errorFile), sb.toString().getBytes()); } else { Midend midend = new Midend(parser.getCompUnit()); midend.generateLLvmIr(); midend.writeToFile(llvmFile); } } catch (Exception e) { e.printStackTrace(); } } }