Top Description Fields Constructors Methods
org.antlr.runtime.tree

public Class DOTTreeGenerator

extends Object
Class Inheritance
Imports
org.antlr.stringtemplate.StringTemplate, java.util.HashMap

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

Modifier and TypeField and Description
public static StringTemplate
public static StringTemplate
public static StringTemplate
pack-priv int
nodeNumber

Track node number so we can get unique node names

pack-priv HashMap<Object, Integer>
nodeToNumberMap

Track node to number mapping so we can get proper node name back

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
protected String
protected int
protected StringTemplate
public StringTemplate
toDOT(Object tree, TreeAdaptor adaptor, StringTemplate _treeST, StringTemplate _edgeST)

public StringTemplate
toDOT(Object tree, TreeAdaptor adaptor)

public StringTemplate
toDOT(Tree tree)

Generate DOT (graphviz) for a whole tree not just a node.

protected void
protected void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

_edgeSTback to summary
public static StringTemplate _edgeST
_nodeSTback to summary
public static StringTemplate _nodeST
_treeSTback to summary
public static StringTemplate _treeST
nodeNumberback to summary
pack-priv int nodeNumber

Track node number so we can get unique node names

nodeToNumberMapback to summary
pack-priv HashMap<Object, Integer> nodeToNumberMap

Track node to number mapping so we can get proper node name back

Constructor Detail

DOTTreeGeneratorback to summary
public DOTTreeGenerator()

Method Detail

fixStringback to summary
protected String fixString(String in)
getNodeNumberback to summary
protected int getNodeNumber(Object t)
getNodeSTback to summary
protected StringTemplate getNodeST(TreeAdaptor adaptor, Object t)
toDOTback to summary
public StringTemplate toDOT(Object tree, TreeAdaptor adaptor, StringTemplate _treeST, StringTemplate _edgeST)
toDOTback to summary
public StringTemplate toDOT(Object tree, TreeAdaptor adaptor)
toDOTback to summary
public 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.

toDOTDefineEdgesback to summary
protected void toDOTDefineEdges(Object tree, TreeAdaptor adaptor, StringTemplate treeST)
toDOTDefineNodesback to summary
protected void toDOTDefineNodes(Object tree, TreeAdaptor adaptor, StringTemplate treeST)