org.antlr.runtime.tree
Class DOTTreeGenerator

java.lang.Object
  extended by org.antlr.runtime.tree.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
static org.antlr.stringtemplate.StringTemplate _edgeST
           
static org.antlr.stringtemplate.StringTemplate _nodeST
           
static org.antlr.stringtemplate.StringTemplate _treeST
           
 
Constructor Summary
DOTTreeGenerator()
           
 
Method Summary
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)


Copyright © 2013. All Rights Reserved.