Select Git revision
Compiler.java
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Compiler.java 5.27 KiB
import lParser.parser.*;
import lParser.lexer.*;
import lParser.node.*;
import java.io.*;
import sc.*;
import sa.*;
import ts.*;
import c3a.*;
import nasm.*;
import fg.*;
import ig.*;
import util.Error;
public class Compiler
{
private static String baseName = null;
private static String inputFileName = null;
private static int verboseLevel = 0;
private static Start scRoot = null;
private static SaProg saRoot = null;
private static Ts tableGlobale = null;
private static C3a c3a = null;
private static Nasm nasm = null;
private static Fg flowGraph = null;
private static FgSolution flowGraphSolution = null;
private static Ig interferenceGraph = null;
public static void main(String[] args) {
processCommandLine(args);
System.out.println("[BUILD SC] ");
buildSc();
/* System.out.println("[BUILD SA] ");
buildSa();
System.out.println("[BUILD TS] ");
buildTs();
System.out.println("[TYPE CHECKING]");
typeCheck();
System.out.println("[BUILD C3A] ");
buildC3a();
System.out.println("[BUILD PRE NASM] ");
buildPreNasm();
System.out.println("[BUILD FLOW GRAPH] ");
buildFg();
System.out.println("[SOLVE FLOW GRAPH]");
solveFg();
System.out.println("[BUILD INTERFERENCE GRAPH] ");
buildIg();
System.out.println("[ALLOCATE REGISTERS]");
interferenceGraph.allocateRegisters();
System.out.println("[PRINT NASM]");
nasm.afficheNasm(baseName);
System.exit(Error.NOERROR.code());*/
}
private static void processCommandLine(String[] args) {
for (int i = 0; i < args.length; i++) {
if (args[i].equals("-v")) {
verboseLevel = Integer.parseInt(args[++i]);
} else {
inputFileName = args[i];
baseName = removeSuffix(inputFileName, ".l");
}
}
if (inputFileName == null) {
System.out.println("java Compiler input_file -v verbose_level");
System.exit(1);
}
}