예제 #1
0
        public void Generar_UML(string uml, int no_uml)
        {
            try
            {
                Analizador   analiza = new Analizador();
                String       grafica = "Digraph UML{\nsize=\"50,50\"\nnode[shape=record,style=filled,fillcolor=gray95]\nedge[dir=back, arrowtail=empty]\n\n" + uml + "\n\n}";
                FileStream   stream  = new FileStream("UML" + no_uml + ".dot", FileMode.Create, FileAccess.Write);
                StreamWriter writer  = new StreamWriter(stream);
                writer.WriteLine(grafica);
                writer.Close();
                //Ejecuta el codigo
                var command       = string.Format("dot -Tjpg UML" + no_uml + ".dot -o UML" + no_uml + ".jpg");
                var procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/C " + command);
                var proc          = new System.Diagnostics.Process();
                proc.StartInfo = procStartInfo;
                proc.Start();
                proc.WaitForExit();

                //Thread.Sleep(2000);
                //Process.Start(@"UML.jpg");
            }
            catch (Exception x)
            {
                MessageBox.Show("Error inesperado cuando se intento graficar: " + x.ToString(), "error");
            }
        }
예제 #2
0
        private void button1_Analizar_Click(object sender, EventArgs e)
        {
            errores.Clear();
            tokens.Clear();
            tmp.Error.Clear();
            tmp.Tokens.Clear();



            /*int selectedTab = tabControl1.SelectedIndex;
             * Control ctrl = tabControl1.Controls[selectedTab].Controls[0];
             * TextBox richtext = ctrl as TextBox;
             *
             * if (richtext.Text != "")
             * {
             *
             *  Analizador analizarArchibo = new Analizador();
             *
             *  Gramatica gramatica = new Gramatica();
             *  Parser parser = new Parser(gramatica);
             *
             *  String entrada = richtext.Text;
             *  arbol = parser.Parse(entrada);
             *  //analizarArchibo.analizar(richtext.Text);
             *
             *  ParseTreeNode raiz = Sintactico.analizar(tabControl1.SelectedTab.Controls[0].Text);
             *
             *  if (arbol.Root != null && raiz != null )
             *  {
             *      MessageBox.Show("Analisis completado");
             *
             *      //GraficarAST.GraficarArbol(arbol.Root);
             *      debug += analizarArchibo.RecorrerAST(arbol.Root);
             *      //textBox1.Text = debug+"\n";
             *
             *
             *  }
             *  else
             *  {
             *      errores = tmp.Error;
             *      MessageBox.Show("Existe error lexico o sintactico");
             *      toolStripButton2_Reportes.PerformClick();
             *      debug = "";
             *      instruccionesNo = "";
             *      Analizador.instrucciones.Clear();
             *  }
             * }
             * else
             * {
             *  MessageBox.Show("Seleccione un archivo .java para analizar");
             * }*/
            try
            {
                for (int i = 0; i < treeView1.SelectedNode.GetNodeCount(true); i++)
                {
                    MessageBox.Show(PathTree + treeView1.SelectedNode.Nodes[i].FullPath);
                    //MessageBox.Show(treeView1.SelectedNode.FullPath);
                    TreeNode node = treeView1.SelectedNode;
                    // Set the tree view's PathSeparator property.
                    //MessageBox.Show(string.Format(PathTree +"\\"+ treeView1.SelectedNode.FullPath));
                    try
                    {
                        TabPage tp = new TabPage(treeView1.SelectedNode.Nodes[i].Text);
                        tabControl1.TabPages.Add(tp);
                        TextBox tb = new TextBox();
                        tb.Text       = File.ReadAllText(PathTree + "\\" + treeView1.SelectedNode.Nodes[i].FullPath);
                        tb.Dock       = DockStyle.Fill;
                        tb.Multiline  = true;
                        tb.AcceptsTab = true;
                        tb.ScrollBars = ScrollBars.Both;
                        tp.Controls.Add(tb);
                    }
                    catch (Exception ea)
                    {
                    }
                }
                for (int i = 0; i < treeView1.SelectedNode.GetNodeCount(true); i++)
                {
                    int     selectedTab = i;
                    Control ctrl        = tabControl1.Controls[selectedTab].Controls[0];
                    TextBox richtext    = ctrl as TextBox;

                    if (richtext.Text != "")
                    {
                        Analizador analizarArchibo = new Analizador();

                        Gramatica gramatica = new Gramatica();
                        Parser    parser    = new Parser(gramatica);

                        String entrada = richtext.Text;
                        arbol = parser.Parse(entrada);
                        //analizarArchibo.analizar(richtext.Text);

                        ParseTreeNode raiz = Sintactico.analizar(tabControl1.SelectedTab.Controls[0].Text);

                        arbol = parser.Parse(entrada);

                        if (arbol.Root != null && raiz != null)
                        {
                            MessageBox.Show("Analisis completado");
                            debug += analizarArchibo.RecorrerAST(arbol.Root);
                            //GraficarAST.GraficarArbol(arbol.Root);
                        }
                        else
                        {
                            errores = tmp.Error;
                            MessageBox.Show("Existe error lexico o sintactico");
                            toolStripButton2_Reportes.PerformClick();
                            debug           = "";
                            instruccionesNo = "";
                            Analizador.instrucciones.Clear();
                            toolStripButton2_Reportes.PerformClick();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Seleccione un archivo .java para analizar");
                    }
                }
            }
            catch
            {
            }
        }