Class DOTTreeGenerator
java.lang.Object
org.antlr.runtime.tree.DOTTreeGenerator
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 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected Stringprotected intprotected 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.StringTemplateGenerate 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)
-
Field Details
-
_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 Details
-
DOTTreeGenerator
public DOTTreeGenerator()
-
-
Method Details
-
toDOT
public org.antlr.stringtemplate.StringTemplate toDOT(Object tree, TreeAdaptor adaptor, org.antlr.stringtemplate.StringTemplate _treeST, org.antlr.stringtemplate.StringTemplate _edgeST) -
toDOT
-
toDOT
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
-
getNodeNumber
-
fixString
-