llvmir some opt
This commit is contained in:
42
Compiler.java
Normal file
42
Compiler.java
Normal file
@@ -0,0 +1,42 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user