// Main class for running the parser

import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

// needs: java-cup-v11a.jar
import java_cup.runtime.Symbol;

public class Test {
    // turn this on to get lots of messages from JavaCUP
    public static final boolean do_debug_parse = false;

    // Usage: java -classpath /soft/IFI/lang/java-cup/java-cup-v11a.jar:. Test <file.mj>
    public static void main(String[] args) {
	String filename = args[0];
	java.io.InputStream inp;

	try {
	    inp = new FileInputStream(filename);
	} catch (FileNotFoundException e) {
	    throw new Error("File not found: " + filename);
	}
      
      /* create a parsing object */
      MJParse_parse parser_obj = new MJParse_parse(new MJLex(inp));

      try {
	java_cup.runtime.Symbol parse_tree = null;
	PPVisProgram pretty_print =  new PPVisProgram();
	System.out.println("// --------------------------------------------------");
	System.out.println("// Parsing...");
        if (do_debug_parse)
          parse_tree = parser_obj.debug_parse();
        else
          parse_tree = parser_obj.parse();
	  System.out.println("// The AST looks like this:\n" + pretty_print.visit((Prg)parse_tree.value));
	  
      } catch (Throwable e) {
	e.printStackTrace();
	throw new Error(e.toString());
      } finally {
	/* do close out here */
      }
  }
}