// package programs;

import AST.Start;
import java.io.File;
import java.io.PrintStream;

public class GenCompiler extends Parser {
	public static void main(String args[]) {
		Start ast = parse(args);

		// Dump the AST
// 		ast.dumpTree("  ", System.out);


		File siarasDir = new File("siaras");
		if (!siarasDir.isDirectory()) {
			siarasDir.mkdir();
		}
		
		String fileName = null;
		try {
			// Generate JastAdd abstract grammar
			fileName = "siaras/Siaras.ast";
			PrintStream pStream = new PrintStream(new File(fileName));
			ast.genAbsGrammar(pStream);

			// Generate JavaCC configuration
// 			fileName = "siaras/Siaras.jjt";
// 			pStream = new PrintStream(new File(fileName));
// 			ast.genJavaCC(pStream);

			// Generate Parser.java
			fileName = "siaras/Parser.java";
			pStream = new PrintStream(new File(fileName));
			ast.genParser(pStream);

			// Generate Rewrites
			fileName = "siaras/Rewrites.jrag";
			pStream = new PrintStream(new File(fileName));
			ast.genRewrites(pStream);

			// Generate PrettyPrinter
			fileName = "siaras/PrettyPrinter.jrag";
			pStream = new PrintStream(new File(fileName));
			ast.genPrettyPrinter("",pStream);
		} catch (java.io.FileNotFoundException e) {
			System.out.println("Could not create file: "+fileName);
			e.printStackTrace();
		}
	}
}