added GraphViz support
[sbp.git] / src / edu / berkeley / sbp / tib / TibDoc.java
index 553397b..f3195ec 100644 (file)
@@ -13,27 +13,40 @@ import java.io.*;
 public class TibDoc {
 
     public static void main(String[] s) throws Exception {
-        System.out.println("parsing " + s[0]);
-        Tree<String> res = new CharParser(MetaGrammar.make()).parse(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]);
-        Forest f = new CharParser(mg).parse(new Tib(new FileInputStream(s[1])));
-
-        System.out.println();
-        System.out.println(f);
-        System.out.println();
-        System.out.println(((Tree)new StringifyWalker().walk(f.expand1())).toPrettyString());
-
-        String st = new HTMLWalker().walk(f.expand1()).toString();
-        System.out.println(st);
-        FileOutputStream fos = new FileOutputStream("out.html");
-        PrintWriter p = new PrintWriter(new OutputStreamWriter(fos));
-        p.println(st);
-        p.flush();
-        p.close();
+        try {
+            System.out.println("parsing " + s[0]);
+            Tree<String> res = new CharParser(MetaGrammar.make()).parse(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]);
+            Forest f = new CharParser(mg).parse(new Tib(new FileInputStream(s[1])));
+            
+            System.out.println();
+            System.out.println(f);
+            System.out.println();
+            System.out.println(((Tree)new StringifyWalker().walk(f.expand1())).toPrettyString());
+            
+            String st = new HTMLWalker().walk(f.expand1()).toString();
+            System.out.println(st);
+            FileOutputStream fos = new FileOutputStream("out.html");
+            PrintWriter p = new PrintWriter(new OutputStreamWriter(fos));
+            p.println(st);
+            p.flush();
+            p.close();
+        } catch (Ambiguous a) {
+            FileOutputStream fos = new FileOutputStream("/Users/megacz/Desktop/out.dot");
+            PrintWriter p = new PrintWriter(new OutputStreamWriter(fos));
+            GraphViz gv = new GraphViz();
+            a.ambiguity.toGraphViz(gv);
+            gv.dump(p);
+            p.flush();
+            p.close();
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     public static class StringifyWalker extends ReflectiveWalker {