package me.hammerle.snuviscript; import me.hammerle.code.ISnuviLogger; import me.hammerle.code.ISnuviScheduler; import me.hammerle.code.Script; import me.hammerle.code.SnuviParser; import me.hammerle.exceptions.PreScriptException; import me.hammerle.math.Fraction; public class SnuviScript { public static void main(String[] args) { ISnuviLogger logger = new ISnuviLogger() { @Override public void printException(Exception ex, String function, Script s, int line) { System.out.println("Exception " + ex); System.out.println("function " + function); System.out.println("Line: " + line); } @Override public void printException(Exception ex, String function, String s, int line) { System.out.println("Exception " + ex + " " + s + " " + line); System.out.println("function " + function); } @Override public void printWarning(String s) { System.out.println("Warning: " + s); } @Override public void printInfo(String s) { System.out.println("Info: " + s); } }; SnuviParser parser = new SnuviParser(logger, new ISnuviScheduler() { @Override public int scheduleTask(Runnable r) { System.out.println("Schedule"); return 0; } @Override public int scheduleTask(Runnable r, long delay) { System.out.println("Schedule"); return 0; } }); parser.registerConsumer("print", (o, sc) -> System.out.println(o[0])); parser.registerFunction("get", (o, sc) -> new Fraction(1)); //parser.registerFunction("ggv", (o, sc) -> o[0]); //parser.registerFunction("read.item", (o, sc) -> o[0]); /*for(int j = 1; j < Integer.MAX_VALUE; j *= 2) { System.out.println("Size " + j); StringBuilder sb = new StringBuilder("error(); wusi = 1;\n"); sb.append("time = time.get();"); int counter = 0; for(int i = 0; i < j; i++) { switch(counter) { case 0: sb.append("wusi += 1;\n"); break; case 1: sb.append("wusi *= 2;\n"); break; case 2: sb.append("wusi = wusi - 1;\n"); break; case 3: sb.append("wusi /= 2;\n"); break; case 4: sb.append("wusi += 1;\n"); break; } counter++; if(counter >= 5) { counter = 0; } } sb.append("debug(wusi);"); sb.append("debug(concat(\"time \", time.get() - time));");*/ /*String s = "debug(\"Start\");\n" + "wusi = time.get();\n" + "if(wusi >= 0)\n" + "{\n" + " debug(\"ja\");\n" + " while(wusi < 10)\n" + " {\n" + " hallo = wusi;\n" + " while(hallo < 3)\n" + " {\n" + " debug(\"hallo\");\n" + " hallo += 1;\n" + " }\n" + " debug(wusi);\n" + " wusi += 1;\n" + " }\n" + "}\n" + "else\n" + "{\n" + " debug(\"nein\");\n" + "}\n" + "debug(\"Ende\");";*/ //String s = "wusi = 3; wusi /= 2; debug(wusi);"; // array.set("wusi", 1, arrays.get("wusi", 1) + 4) //String s = "debug(wusi[1]);"; /*String s = "print(\"wusi\");\n" + "print(hallo(1, 3, 5));\n" + "term();\n" + "\n" + "@hallo;\npopArg(); \n" + "pushArg(popArg() + popArg() + popArg());\n" + "return;";*/ //String s = "print(1 + 2 * 3 * 5 + 2);"; //String s = "print(1 + get(3 - 2) + 1);"; //String s = "print(1 + get(1, 2) == 1 || get() == 1);"; //String s = "print(12 + 234 == 32 || 4 == 45);"; //String s = "setvar(\"test\", 3); print(test + get(2, 5 + get(9, 8 + 3) + 6) == 4);"; //String s = "print(array[2 + 3]);"; //String s = "a = 3; a++; print(a);"; //String s = "array[2 + 3] = 5;"; //String s = "a(1+b(2), c(3) + 3, d(7,e(10 + 3)))"; //String s = "++wusi[1];"; String s = "array.new(\"wusi\", 10); wusi[2] = 3; wusi[2]++; print(wusi[2]);"; //String s = "print(1 + get() == 1);"; System.out.println(s); System.out.println(); //String s = "i = 0; while(i++ < 10) { debug(i);}"; //String s = "error(); debug(1+1);"; //System.out.println(s); //System.out.println("___________"); //parser.startScript(Script.class, "test", sb.toString(), true); try { parser.startScript("test", s.toString()); } catch(PreScriptException ex) { logger.printException(ex, "none" , "test", ex.getLine()); } //} //parser.getScript(0).runCode(); //Fraction f = Fraction.fromDouble(Fraction.PI.doubleValue()); //Object o = Code.convertInput("32.323"); //System.out.println(o + " " + o.getClass().getSimpleName()); //System.out.println(Fraction.fromDouble(0.324234235)); } }