public static string graficarNodo(NodoSintactico nodo) { string cadena = ""; foreach (NodoSintactico hijos in nodo.getHijos()) { String nodoPadre = ""; String nodoHijo = ""; if (nodo.getValor() != null) { nodoPadre = "\"" + nodo.getNumNodo() + "_" + nodo.getNombre() + "\"" + "[label = \"" + nodo.getValor() + "\"];"; } else { nodoPadre = "\"" + nodo.getNumNodo() + "_" + nodo.getNombre() + "\"" + "[label = \"" + nodo.getNombre() + "\"];"; } if (hijos.getValor() != null) { nodoHijo = "\"" + hijos.getNumNodo() + "_" + hijos.getNombre() + "\"" + "[label = \"" + hijos.getValor() + "\"];"; } else { nodoHijo = "\"" + hijos.getNumNodo() + "_" + hijos.getNombre() + "\"" + "[label = \"" + hijos.getNombre() + "\"];"; } String apuntadorPadre = "\"" + nodo.getNumNodo() + "_" + nodo.getNombre() + "\""; String apuntadorHijo = "\"" + hijos.getNumNodo() + "_" + hijos.getNombre() + "\""; cadena += nodoPadre + "\n" + nodoHijo + "\n" + apuntadorPadre + "->" + apuntadorHijo + ";\n"; cadena += graficarNodo(hijos); } return(cadena); }
public static String getDot(ParseTreeNode raiz, int tipo, NodoSintactico root) { grafo = "digraph G{\n"; grafo += "node[shape=\"box\"];\n"; contador = 1; if (tipo == 0) { grafo += "nodo0[label=\"" + escapar(raiz.ToString()) + "\"];\n"; recorrerAST("nodo0", raiz); } else if (tipo == 1) { grafo += graficarNodo(root); } grafo += "\n}"; return(grafo); }
public static void crearImagen(ParseTreeNode raiz, NodoSintactico root, int tipo) { String grafoDot = Arbol.getDot(raiz, tipo, root); try { // Create the file. if (tipo == 0) { using (FileStream fs = File.Create(@"C:\compiladores2\ArbolIrony.dot")) { Byte[] info = new UTF8Encoding(true).GetBytes(grafoDot); fs.Write(info, 0, info.Length); } } else if (tipo == 1) { using (FileStream fs = File.Create(@"C:\compiladores2\ArbolModificado.dot")) { Byte[] info = new UTF8Encoding(true).GetBytes(grafoDot); fs.Write(info, 0, info.Length); } } Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; if (tipo == 0) { startInfo.Arguments = "/C dot -Tpng C:/compiladores2/ArbolIrony.dot -o C:/compiladores2/ArbolIrony.png"; } else { startInfo.Arguments = "/C dot -Tpng C:/compiladores2/ArbolModificado.dot -o C:/compiladores2/ArbolModificado.png"; } process.StartInfo = startInfo; process.Start(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }