コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
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
            {
            }
        }