示例#1
0
  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();
  }