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