// 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 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 */ } } }