checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / RegressionTests.java
index b31d5c3..8af63a2 100644 (file)
@@ -26,12 +26,11 @@ public class RegressionTests {
             //mg0.walk(MetaGrammar.meta);
             //System.out.println(mg0);
             Tree<String> res = new CharParser(MetaGrammar.make()).parse(new FileInputStream(s[0])).expand1();
-            MetaGrammar mg = (MetaGrammar)new MetaGrammar().walk(res);
             //System.out.println(mg);
-            Union meta = mg.done();
+            Union meta = MetaGrammar.make();
             SequenceInputStream sis = new SequenceInputStream(new FileInputStream(s[0]), new FileInputStream(s[1]));
             res = new CharParser(meta).parse(sis).expand1();
-            Union testcasegrammar = ((MetaGrammar)new MetaGrammar("ts").walk(res)).done("ts");
+            Union testcasegrammar = MetaGrammar.make(res, "ts");
             if (testcasegrammar==null) return;
             CharParser parser = new CharParser(testcasegrammar);
 
@@ -81,9 +80,14 @@ public class RegressionTests {
         }
         public boolean execute() throws Exception {
             if (jav) {
-                Tree<Object> tree = new CharParser(grammar).parse(new StringReader(input)).expand1();
-                System.out.println(tree);
-                System.out.println(JavaGrammar.build(tree));
+                Forest<String> tree = new CharParser(grammar).parse(new StringReader(input));
+                FileOutputStream fos = new FileOutputStream("/Users/megacz/Desktop/out.dot");
+                PrintWriter p = new PrintWriter(new OutputStreamWriter(fos));
+                GraphViz gv = new GraphViz();
+                tree.toGraphViz(gv);
+                gv.dump(p);
+                p.flush();
+                p.close();
                 return true;
             }
             Forest<String> res = null;
@@ -132,19 +136,18 @@ public class RegressionTests {
         }
     }
 
-    public static class TestCaseBuilder extends MetaGrammar {
+    public static class TestCaseBuilder extends StringWalker {
         public Object walk(Tree<String> tree) {
             try {
-                if ("grammar".equals(tree.head())) { walkChildren(tree); return done("s"); }
-                else if ("output".equals(tree.head())) return string(tree.children());
-                else if ("input".equals(tree.head())) return string(tree.children());
+                if ("grammar".equals(tree.head())) return MetaGrammar.make(tree, "s");
+                else if ("output".equals(tree.head())) return MetaGrammar.string(tree.children());
+                else if ("input".equals(tree.head())) return MetaGrammar.string(tree.children());
                 else if ("javacase".equals(tree.head()) || "tibcase".equals(tree.head()) || "testcase".equals(tree.head())) {
-                    String input = string(tree.child(0));
+                    String input = MetaGrammar.string(tree.child(0));
                     String[] output = tree.numChildren()>2 ? ((String[])walk(tree, 1)) : new String[0];
                     boolean tib = "tibcase".equals(tree.head());
                     boolean jav = "javacase".equals(tree.head());
-                    MetaGrammar gram = jav ? new JavaGrammar() : tib ? new Tib.Grammar() : new MetaGrammar();
-                    Union grammar = (Union)((MetaGrammar)(gram.walk(tree, tree.numChildren()-1))).done("s");
+                    Union grammar = MetaGrammar.make(tree.child(tree.numChildren()-1), "s");
                     return new TestCase(input, output, grammar, tib, jav);
                 } else if ("ts".equals(tree.head())) return walk(tree, 0);
                 else return super.walk(tree);
@@ -153,7 +156,7 @@ public class RegressionTests {
             }
         }
     }
-
+    /*
     public static class JavaGrammar extends MetaGrammar {
         public Object convertLabel(String label) { return new ClassMark(label); }
         public Object convertFieldLabel(String label) { return new FieldMark(label); }
@@ -242,7 +245,7 @@ public class RegressionTests {
         }
 
     }
-
+    */
     private static String pad(int i,String s) { return s.length() >= i ? s : pad(i-1,s)+" "; }
 }