Package org.antlr.runtime.tree
Class DOTTreeGenerator
- java.lang.Object
-
- org.antlr.runtime.tree.DOTTreeGenerator
-
public class DOTTreeGenerator extends 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);
-
-
Constructor Summary
Constructors Constructor Description DOTTreeGenerator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected StringfixString(String in)protected intgetNodeNumber(Object t)protected org.antlr.stringtemplate.StringTemplategetNodeST(TreeAdaptor adaptor, Object t)org.antlr.stringtemplate.StringTemplatetoDOT(Object tree, TreeAdaptor adaptor)org.antlr.stringtemplate.StringTemplatetoDOT(Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate _treeST, org.antlr.stringtemplate.StringTemplate _edgeST)org.antlr.stringtemplate.StringTemplatetoDOT(Tree tree)Generate DOT (graphviz) for a whole tree not just a node.protected voidtoDOTDefineEdges(Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate treeST)protected voidtoDOTDefineNodes(Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate treeST)
-
-
-
Method Detail
-
toDOT
public org.antlr.stringtemplate.StringTemplate toDOT(Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate _treeST, org.antlr.stringtemplate.StringTemplate _edgeST)
-
toDOT
public org.antlr.stringtemplate.StringTemplate toDOT(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(Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate treeST)
-
toDOTDefineEdges
protected void toDOTDefineEdges(Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate treeST)
-
getNodeST
protected org.antlr.stringtemplate.StringTemplate getNodeST(TreeAdaptor adaptor, Object t)
-
getNodeNumber
protected int getNodeNumber(Object t)
-
-