public bool analizar(String entrada) { Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(entrada); ParseTreeNode raiz = arbol.Root; if (raiz == null || arbol.ParserMessages.Count > 0 || arbol.HasErrors()) { //---------------------> Hay Errores //---------------------> Hay Errores MessageBox.Show("Hay Errores"); errores.Append("hay errores:\n"); foreach (var item in arbol.ParserMessages) { errores.Append(item.Location.Line + " "); errores.Append(item.Location.Column + " "); errores.Append(item.Message + "\n"); } return(false); } //RecorrerAST(raiz); return(true); }
public static ParseTreeNode analizar(String cadena) { Gramatica gramatica = new Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parse = new Parser(lenguaje); ParseTree arbol = parse.Parse(cadena); ParseTreeNode raiz = arbol.Root; if (gramatica.Error.Count > 0 || raiz == null) { errores = gramatica.Error; return(null); } else { token = arbol.Tokens; return(raiz); } }
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 { } }