public String ToDot() { String r = ""; Set<SemiTagNode> visited = new HashSet<SemiTagNode>(); Queue<SemiTagNode> worklist = new LinkedList<SemiTagNode>(); worklist.addAll(heads); visited.addAll(heads); StringBuilder b = new StringBuilder("digraph HtmlTree {\n"); b.append(" rankdir = LR;\n"); int count = 0; for (SemiTagNode node : allnodes) { SemiTagNode current = node; String tagname = "\"" + "" + current.getId() + current.toString() + "\""; b.append(" ").append(tagname); b.append("[shape=box];\n"); for (SemiTagEdge e : current.outegdes) { SemiTagNode suc = e.target; b.append(" "); // System.out.println(tagname); b.append(tagname + " -> \"" + "" + suc.getId() + suc.toString() + "\""); String cutmethodsig; if (e.methodsig.length() > 26) cutmethodsig = e.methodsig.substring(16, 25); else cutmethodsig = e.methodsig; b.append("[label = \"" + cutmethodsig + "\"]"); // b.append(" ").append(current.Value.getFiniteStrings()); } } /*while(!worklist.isEmpty()) { SemiTagNode current=worklist.poll(); String tagname="\""+""+current.getId()+current.toString()+"\""; b.append(" ").append(tagname); b.append("[shape=box];\n"); for (SemiTagEdge e : current.outegdes) { SemiTagNode suc=e.target; if(!visited.contains(suc)) { visited.add(suc); worklist.add(suc); } b.append(" "); //System.out.println(tagname); b.append(tagname+" -> \""+""+suc.getId()+suc.toString()+"\""); String cutmethodsig; if(e.methodsig.length()>26) cutmethodsig=e.methodsig.substring(16, 25); else cutmethodsig=e.methodsig; b.append("[label = \""+cutmethodsig+"\"]"); //b.append(" ").append(current.Value.getFiniteStrings()); } count++; }*/ return b.append("}\n").toString(); }