public class sjc {

    public static void main(String args[]) {
	simplejava parser;
	if (args.length < 1) {
	    System.out.print("Usage: java sjc <filename>");
	    return;
	} 
	try {  
	    parser = new simplejava(new java.io.FileInputStream(args[0]));
	} catch (java.io.FileNotFoundException e) {
	    System.out.println("File " + args[0] + " not found."); 
	    return;
	} 
	try {
	    ASTProgram prog = parser.program();
	    ASTPrintTree pt = new ASTPrintTree();
	    AATPrintTree pat = new AATPrintTree();
	    SemanticAnalyzer sa = new SemanticAnalyzer();
	    CodeGenerator cg = new CodeGenerator(args[0] + ".s");
	    System.out.println("Parsing Successful");
	    prog.Accept(pt);
	    AATStatement assem = (AATStatement) prog.Accept(sa);
	    if (!CompError.anyErrors()) {
		assem.Accept(pat); 
		assem.Accept(cg);
		cg.GenerateLibrary();
	    }
	} catch (ParseException e) {
	    System.out.println(e.getMessage());
	    System.out.println("Parsing Failed");
	}
    }


}