package org.bergmanlab.martscript; import java.util.*; import org.antlr.runtime.*; import org.antlr.runtime.debug.DebugEventSocketProxy; import org.biomart.common.resources.*; import org.bergmanlab.martscript.*; public class MartScript implements SystemExitConstants { private static final int MODE_VERIFY = 0; private static final int MODE_EXECUTE = 1; private static int mode = MODE_VERIFY; public MartScript() { } public void processScript(List script) { switch (mode) { case MODE_VERIFY: if (new MartScriptStaticChecker().isErroneous(script)) { System.exit(EXIT_ERROR); } break; case MODE_EXECUTE: new MartScriptInterpreter().runScript(script); break; default: System.out.println("Woops.. an interesting error has occurred. Please contact the MartScript developers."); break; } } public static void main(String args[]) throws Exception { if(args.length != 1) { System.out.println("Usage: java -Xmx1024M org.bergmanlab.martscript.MartScript script.mscr"); System.exit(EXIT_ERROR); } Settings.setApplication(Settings.MARTBUILDER); Resources.setResourceLocation("org/biomart/builder/resources"); MartScriptLexer lex = new MartScriptLexer(new ANTLRFileStream(args[0])); CommonTokenStream tokens = new CommonTokenStream(lex); System.out.println("Beginning syntactic and semantic verification..."); MartScriptParser g = new MartScriptParser(tokens); try { g.script(); } catch (RecognitionException e) { e.printStackTrace(); } mode = MODE_EXECUTE; lex = new MartScriptLexer(new ANTLRFileStream(args[0])); tokens = new CommonTokenStream(lex); System.out.println("Beginning script execution..."); g = new MartScriptParser(tokens); try { g.script(); } catch (RecognitionException e) { e.printStackTrace(); } System.exit(0); } }