checkpoint
authoradam <adam@megacz.com>
Thu, 12 Jan 2006 07:38:59 +0000 (02:38 -0500)
committeradam <adam@megacz.com>
Thu, 12 Jan 2006 07:38:59 +0000 (02:38 -0500)
darcs-hash:20060112073859-5007d-f841bab3579b9265f6bd960aafbd89845c1682a7.gz

src/edu/berkeley/sbp/tib/TibDoc.java

index e753933..1a2fe23 100644 (file)
@@ -11,7 +11,7 @@ import edu.berkeley.sbp.util.*;
 import java.util.*;
 import java.io.*;
 
-public class TibDoc extends ReflectiveWalker {
+public class TibDoc {
     
     public static void main(String[] s) throws Exception {
         System.out.println("parsing " + s[0]);
@@ -23,21 +23,38 @@ public class TibDoc extends ReflectiveWalker {
         System.out.println("\nparsing " + s[1]);
         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));
-        System.out.println(((Tree)new TibDoc().walk(f.expand1())).toPrettyString());
+        //System.out.println(((Tree)new StringifyWalker().walk(f.expand1())).toPrettyString());
+        System.out.println(((Tree)new HTMLWalker().walk(f.expand1())).toPrettyString());
     }
 
-    //public void header() { throw new Error(); }
-    public Object walk(String head, Object[] children) {
-        if ("stringify".equals(head)) {
-            StringBuffer ret = new StringBuffer();
-            for(Tree<String> t : (Tree<String>)children[0]) ret.append(t);
-            return new Tree<String>(null, ret.toString());
+    public static class StringifyWalker extends ReflectiveWalker {
+        public Object walk(String head, Object[] children) {
+            if ("stringify".equals(head)) {
+                StringBuffer ret = new StringBuffer();
+                for(Tree<String> t : (Tree<String>)children[0]) ret.append(t);
+                return new Tree<String>(null, ret.toString());
+            }
+            if (children.length==0) return new Tree<String>(null, head, new Tree[0]);
+            return new Tree<String>(null, head, (Tree<String>[])Reflection.lub(children));
         }
-        if (children.length==0) return new Tree<String>(null, head, new Tree[0]);
-        return new Tree<String>(null, head, (Tree<String>[])Reflection.lub(children));
     }
 
+    public static class HTMLWalker extends ReflectiveWalker {
+        public void stringify() { /*mode = HEADER;*/throw new Error(); }
+        public Object walk(Tree<String> t) {
+            String head = t.head();
+            if ("stringify".equals(head)) {
+                StringBuffer ret = new StringBuffer();
+                for(Tree<String> child : t.child(0)) ret.append(child);
+                return new Tree<String>(null, ret.toString());
+            }
+            return super.walk(t);
+        }
+        public Object walk(String head, Object[] children) {
+            if (children.length==0) return new Tree<String>(null, head, new Tree[0]);
+            return new Tree<String>(null, head, (Tree<String>[])Reflection.lub(children));
+        }
+    }
 
     /*
     public static enum Style { H, UL, TT, SO, IT, Q, B, PRE, LIST, EMDASH; }