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"); } }
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 { } }