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]);
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; }