Class DOTTreeGenerator


  • public class DOTTreeGenerator
    extends java.lang.Object
    A utility class to generate DOT diagrams (graphviz) from arbitrary trees. You can pass in your own templates and can pass in any kind of tree or use Tree interface method. I wanted this separator so that you don't have to include ST just to use the org.antlr.runtime.tree.* package. This is a set of non-static methods so you can subclass to override. For example, here is an invocation: CharStream input = new ANTLRInputStream(System.in); TLexer lex = new TLexer(input); CommonTokenStream tokens = new CommonTokenStream(lex); TParser parser = new TParser(tokens); TParser.e_return r = parser.e(); Tree t = (Tree)r.tree; System.out.println(t.toStringTree()); DOTTreeGenerator gen = new DOTTreeGenerator(); StringTemplate st = gen.toDOT(t); System.out.println(st);
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static org.antlr.stringtemplate.StringTemplate _edgeST  
      static org.antlr.stringtemplate.StringTemplate _nodeST  
      static org.antlr.stringtemplate.StringTemplate _treeST  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.String fixString​(java.lang.String in)  
      protected int getNodeNumber​(java.lang.Object t)  
      protected org.antlr.stringtemplate.StringTemplate getNodeST​(TreeAdaptor adaptor, java.lang.Object t)  
      org.antlr.stringtemplate.StringTemplate toDOT​(java.lang.Object tree, TreeAdaptor adaptor)  
      org.antlr.stringtemplate.StringTemplate toDOT​(java.lang.Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate _treeST, org.antlr.stringtemplate.StringTemplate _edgeST)  
      org.antlr.stringtemplate.StringTemplate toDOT​(Tree tree)
      Generate DOT (graphviz) for a whole tree not just a node.
      protected void toDOTDefineEdges​(java.lang.Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate treeST)  
      protected void toDOTDefineNodes​(java.lang.Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate treeST)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • _treeST

        public static org.antlr.stringtemplate.StringTemplate _treeST
      • _nodeST

        public static org.antlr.stringtemplate.StringTemplate _nodeST
      • _edgeST

        public static org.antlr.stringtemplate.StringTemplate _edgeST
    • Constructor Detail

      • DOTTreeGenerator

        public DOTTreeGenerator()
    • Method Detail

      • toDOT

        public org.antlr.stringtemplate.StringTemplate toDOT​(java.lang.Object tree,
                                                             TreeAdaptor adaptor,
                                                             org.antlr.stringtemplate.StringTemplate _treeST,
                                                             org.antlr.stringtemplate.StringTemplate _edgeST)
      • toDOT

        public org.antlr.stringtemplate.StringTemplate toDOT​(java.lang.Object tree,
                                                             TreeAdaptor adaptor)
      • toDOT

        public org.antlr.stringtemplate.StringTemplate toDOT​(Tree tree)
        Generate DOT (graphviz) for a whole tree not just a node. For example, 3+4*5 should generate: digraph { node [shape=plaintext, fixedsize=true, fontsize=11, fontname="Courier", width=.4, height=.2]; edge [arrowsize=.7] "+"->3 "+"->"*" "*"->4 "*"->5 } Return the ST not a string in case people want to alter. Takes a Tree interface object.
      • toDOTDefineNodes

        protected void toDOTDefineNodes​(java.lang.Object tree,
                                        TreeAdaptor adaptor,
                                        org.antlr.stringtemplate.StringTemplate treeST)
      • toDOTDefineEdges

        protected void toDOTDefineEdges​(java.lang.Object tree,
                                        TreeAdaptor adaptor,
                                        org.antlr.stringtemplate.StringTemplate treeST)
      • getNodeST

        protected org.antlr.stringtemplate.StringTemplate getNodeST​(TreeAdaptor adaptor,
                                                                    java.lang.Object t)
      • getNodeNumber

        protected int getNodeNumber​(java.lang.Object t)
      • fixString

        protected java.lang.String fixString​(java.lang.String in)