/** * This function takes a string script, and returns an equivalent, optimized script. * * @param script * @return * @throws ConfigCompileException */ public static String optimize(String script, File source) throws ConfigCompileException { ParseTree tree = MethodScriptCompiler.compile(MethodScriptCompiler.lex(script, source, true)); StringBuilder b = new StringBuilder(); // The root always contains null. for (ParseTree child : tree.getChildren()) { b.append(optimize0(child)); } return b.toString(); }
/** * Compiles the script, converting it into mid level object code, or in the case of a language * compiler, the other language's source code. * * @param script * @param platform * @return */ public static String compile(String script, api.Platforms platform, File file) throws ConfigCompileException { // First, we optimize. The "core" functions are always run through // the native interpreter's compiler for optimization. ParseTree tree = MethodScriptCompiler.compile(MethodScriptCompiler.lex(script, file, true)); StringBuilder b = new StringBuilder(); for (ParseTree node : tree.getChildren()) { go(node, b, platform); } return b.toString(); }