SnuviScript.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package me.hammerle.snuviscript;
  2. import me.hammerle.code.ISnuviLogger;
  3. import me.hammerle.code.ISnuviScheduler;
  4. import me.hammerle.code.Script;
  5. import me.hammerle.code.SnuviParser;
  6. import me.hammerle.exceptions.PreScriptException;
  7. import me.hammerle.math.Fraction;
  8. public class SnuviScript
  9. {
  10. public static void main(String[] args)
  11. {
  12. ISnuviLogger logger = new ISnuviLogger()
  13. {
  14. @Override
  15. public void printException(Exception ex, String function, Script s, int line)
  16. {
  17. System.out.println("Exception " + ex);
  18. System.out.println("function " + function);
  19. System.out.println("Line: " + line);
  20. }
  21. @Override
  22. public void printException(Exception ex, String function, String s, int line)
  23. {
  24. System.out.println("Exception " + ex + " " + s + " " + line);
  25. System.out.println("function " + function);
  26. }
  27. @Override
  28. public void printWarning(String s)
  29. {
  30. System.out.println("Warning: " + s);
  31. }
  32. @Override
  33. public void printInfo(String s)
  34. {
  35. System.out.println("Info: " + s);
  36. }
  37. };
  38. SnuviParser parser = new SnuviParser(logger, new ISnuviScheduler()
  39. {
  40. @Override
  41. public int scheduleTask(Runnable r)
  42. {
  43. System.out.println("Schedule");
  44. return 0;
  45. }
  46. @Override
  47. public int scheduleTask(Runnable r, long delay)
  48. {
  49. System.out.println("Schedule");
  50. return 0;
  51. }
  52. });
  53. parser.registerConsumer("print", (o, sc) -> System.out.println(o[0]));
  54. parser.registerFunction("get", (o, sc) -> new Fraction(1));
  55. //parser.registerFunction("ggv", (o, sc) -> o[0]);
  56. //parser.registerFunction("read.item", (o, sc) -> o[0]);
  57. /*for(int j = 1; j < Integer.MAX_VALUE; j *= 2)
  58. {
  59. System.out.println("Size " + j);
  60. StringBuilder sb = new StringBuilder("error(); wusi = 1;\n");
  61. sb.append("time = time.get();");
  62. int counter = 0;
  63. for(int i = 0; i < j; i++)
  64. {
  65. switch(counter)
  66. {
  67. case 0: sb.append("wusi += 1;\n"); break;
  68. case 1: sb.append("wusi *= 2;\n"); break;
  69. case 2: sb.append("wusi = wusi - 1;\n"); break;
  70. case 3: sb.append("wusi /= 2;\n"); break;
  71. case 4: sb.append("wusi += 1;\n"); break;
  72. }
  73. counter++;
  74. if(counter >= 5)
  75. {
  76. counter = 0;
  77. }
  78. }
  79. sb.append("debug(wusi);");
  80. sb.append("debug(concat(\"time \", time.get() - time));");*/
  81. /*String s = "debug(\"Start\");\n" +
  82. "wusi = time.get();\n" +
  83. "if(wusi >= 0)\n" +
  84. "{\n" +
  85. " debug(\"ja\");\n" +
  86. " while(wusi < 10)\n" +
  87. " {\n" +
  88. " hallo = wusi;\n" +
  89. " while(hallo < 3)\n" +
  90. " {\n" +
  91. " debug(\"hallo\");\n" +
  92. " hallo += 1;\n" +
  93. " }\n" +
  94. " debug(wusi);\n" +
  95. " wusi += 1;\n" +
  96. " }\n" +
  97. "}\n" +
  98. "else\n" +
  99. "{\n" +
  100. " debug(\"nein\");\n" +
  101. "}\n" +
  102. "debug(\"Ende\");";*/
  103. //String s = "wusi = 3; wusi /= 2; debug(wusi);";
  104. // array.set("wusi", 1, arrays.get("wusi", 1) + 4)
  105. //String s = "debug(wusi[1]);";
  106. /*String s = "print(\"wusi\");\n" +
  107. "print(hallo(1, 3, 5));\n" +
  108. "term();\n" +
  109. "\n" +
  110. "@hallo;\npopArg(); \n" +
  111. "pushArg(popArg() + popArg() + popArg());\n" +
  112. "return;";*/
  113. //String s = "print(1 + 2 * 3 * 5 + 2);";
  114. //String s = "print(1 + get(3 - 2) + 1);";
  115. //String s = "print(1 + get(1, 2) == 1 || get() == 1);";
  116. //String s = "print(12 + 234 == 32 || 4 == 45);";
  117. //String s = "setvar(\"test\", 3); print(test + get(2, 5 + get(9, 8 + 3) + 6) == 4);";
  118. //String s = "print(array[2 + 3]);";
  119. //String s = "a = 3; a++; print(a);";
  120. //String s = "array[2 + 3] = 5;";
  121. //String s = "a(1+b(2), c(3) + 3, d(7,e(10 + 3)))";
  122. //String s = "++wusi[1];";
  123. String s = "array.new(\"wusi\", 10); wusi[2] = 3; wusi[2]++; print(wusi[2]);";
  124. //String s = "print(1 + get() == 1);";
  125. System.out.println(s);
  126. System.out.println();
  127. //String s = "i = 0; while(i++ < 10) { debug(i);}";
  128. //String s = "error(); debug(1+1);";
  129. //System.out.println(s);
  130. //System.out.println("___________");
  131. //parser.startScript(Script.class, "test", sb.toString(), true);
  132. try
  133. {
  134. parser.startScript("test", s.toString());
  135. }
  136. catch(PreScriptException ex)
  137. {
  138. logger.printException(ex, "none" , "test", ex.getLine());
  139. }
  140. //}
  141. //parser.getScript(0).runCode();
  142. //Fraction f = Fraction.fromDouble(Fraction.PI.doubleValue());
  143. //Object o = Code.convertInput("32.323");
  144. //System.out.println(o + " " + o.getClass().getSimpleName());
  145. //System.out.println(Fraction.fromDouble(0.324234235));
  146. }
  147. }