Package org.antlr.runtime.tree
Class DOTTreeGenerator
- java.lang.Object
-
- 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
Fields Modifier and Type Field Description static org.antlr.stringtemplate.StringTemplate
_edgeST
static org.antlr.stringtemplate.StringTemplate
_nodeST
static org.antlr.stringtemplate.StringTemplate
_treeST
(package private) int
nodeNumber
Track node number so we can get unique node names(package private) java.util.HashMap<java.lang.Object,java.lang.Integer>
nodeToNumberMap
Track node to number mapping so we can get proper node name back
-
Constructor Summary
Constructors Constructor Description DOTTreeGenerator()
-
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)
-
-
-
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
-
nodeToNumberMap
java.util.HashMap<java.lang.Object,java.lang.Integer> nodeToNumberMap
Track node to number mapping so we can get proper node name back
-
nodeNumber
int nodeNumber
Track node number so we can get unique node names
-
-
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)
-
-