cleanup Walk a bit
[sbp.git] / src / edu / berkeley / sbp / tib / TibDoc.java
index b44678f..a262191 100644 (file)
@@ -14,14 +14,27 @@ public class TibDoc {
     
     public static void main(String[] s) throws Exception {
         System.out.println("parsing " + s[0]);
-        Tree<String> res = new Parser(MetaGrammar.make(), CharToken.top()).parse1(new CharToken.Stream(new FileInputStream(s[0])));
+        Tree<String> res = new CharToken.CharToStringParser(MetaGrammar.make()).parse(new CharToken.Stream(new FileInputStream(s[0]))).expand1();
         MetaGrammar gram = (MetaGrammar)new Tib.Grammar().walk(res);
         //System.out.println(gram);
         Union mg = gram.done();
         
         System.out.println("\nparsing " + s[1]);
-        res = new Parser(mg, CharToken.top()).parse1(new Tib(new FileInputStream(s[1])));
-        System.out.println(res);
+        Forest f = new CharToken.CharToStringParser(mg).parse(new Tib(new FileInputStream(s[1])));
+        System.out.println(f);
+        System.out.println(((Tree)walk(f.expand1())).toString(0, 0, 120));
+    }
+
+    public static Tree<String> walk(Tree<String> tree) {
+        String head = tree.head();
+        if ("stringify".equals(head)) {
+            String ret = "";
+            for(Tree<String> t : tree.child(0)) ret += t;
+            return new Tree<String>(null, ret);
+        }
+        Tree<String>[] children = new Tree[tree.numChildren()];
+        for(int i=0; i<children.length; i++) children[i] = walk(tree.child(i));
+        return new Tree<String>(null, head, children);
     }