public void DibujarExpresion() { String a = Expresion.GenerarArbolGraphics(); try { String ruta = RutaImagen + "\\"; String rutatxt = ruta + "EXP_" + (TitusNotifiaciones.ListaImagenes.Images.Count + 1).ToString() + ".txt"; String rutaimg = ruta + "EXP_" + (TitusNotifiaciones.ListaImagenes.Images.Count + 1).ToString() + ".png"; String nombreimg = "EXP_" + (TitusNotifiaciones.ListaImagenes.Images.Count + 1).ToString() + ".png"; /*if (File.Exists(rutaimg)) * { * File.Delete(rutaimg); * }*/ File.WriteAllText(rutatxt, a); ProcessStartInfo startInfo = new ProcessStartInfo("dot.exe"); startInfo.Arguments = "-Tjpg " + @rutatxt + " -o " + @rutaimg; Process.Start(startInfo); System.Threading.Thread.Sleep(3000); TitusNotifiaciones.MeterImagen(nombreimg, rutaimg); } catch { } }
private String DibujarAST(int linea, int columna) { String cadena = ""; List <Variables> lista = TablaVariables.BuscarMetodo(Id); if (lista.Count > 0) { foreach (Variables metodo in lista) { int i = 0; int actual = i; cadena = "digraph G{\n\tgraph[rankir = \"LR\"];\n\tnode[shape = box, fontsize = 16, fontname = \"Arial\", style = filled, fillcolor = grey88];\n\t"; cadena = cadena + "\t\tnodo" + actual.ToString() + "[label=\"" + metodo.Tipo + ": " + metodo.Nombre + "("; FFuncion parametros = (FFuncion)metodo.Valor; String aux = ""; String para = ""; foreach (Simbolo p in parametros.Parametros) { para = aux + p.Tipo; aux = para + ", "; } cadena = cadena + para + ")\"]\n"; if (metodo.Ambito != null) { foreach (Simbolo simbolo in metodo.Ambito.TablaSimbolo) { i++; int actualambito = i; cadena = cadena + GenerarArbolGraphics(ref i, simbolo); cadena = cadena + "\t\tnodo" + actual.ToString() + "->nodo" + actualambito.ToString() + "\n"; } } cadena = cadena + "\n}"; try { String ruta = RutaImagen + "\\"; String rutatxt = ruta + "AST_" + metodo.Nombre + "_" + (TitusNotifiaciones.ListaImagenes.Images.Count + 1).ToString() + ".txt"; String rutaimg = ruta + "AST_" + metodo.Nombre + "_" + (TitusNotifiaciones.ListaImagenes.Images.Count + 1).ToString() + ".png"; String nombreimg = "AST_" + metodo.Nombre + "_" + (TitusNotifiaciones.ListaImagenes.Images.Count + 1).ToString() + ".png"; /*if (File.Exists(rutaimg)) * { * File.Delete(rutaimg); * }*/ File.WriteAllText(rutatxt, cadena); ProcessStartInfo startInfo = new ProcessStartInfo("dot.exe"); startInfo.Arguments = "-Tjpg " + @rutatxt + " -o " + @rutaimg; Process.Start(startInfo); System.Threading.Thread.Sleep(3000); TitusNotifiaciones.MeterImagen(nombreimg, rutaimg); } catch { } } } else { TabError error = new TabError(); error.InsertarFila(Constante.ErroEjecucion, "No se encontro ningun metodo con el nombre " + Id, RutaArchivo, linea.ToString(), columna.ToString()); TitusNotifiaciones.setDatosErrores(error); } return(cadena); }