Exemple #1
0
        private void compilarToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            dgvTokens.Rows.Clear();
            string Entrada = txtCodigo.Text + " ";
            Lexico lexico  = new Lexico();
            //List<ERRORES> error = new List<ERRORES>();
            List <Tokens> tokens = lexico.Detecta(Entrada);

            foreach (var item in tokens)
            {
                NodoLexemen.Add(crearNodo(item.getTipoToken().ToString(), item.getValor().ToString(), Convert.ToInt32(item.getRenglon()), Convert.ToInt32(item.getnumeroToken())));
            }
            foreach (NodoLexema lexema in NodoLexemen)
            {
                if (lexema.Linea >= 400)
                {
                    dgvErrores.Rows.Add(lexema.TextoLexema, lexema.Descripcion, lexema.Token, lexema.Linea);
                }
                else
                {
                    dgvTokens.Rows.Add(lexema.TextoLexema, lexema.Descripcion, lexema.Token, lexema.Linea);
                }
            }

            Sintactico sintactico = new Sintactico(NodoLexemen);

            MessageBox.Show(sintactico.Termino);
            listBox1.Items.Add(ERRORES.Display());

            NodoLexemen.Clear();
        }
Exemple #2
0
        private void buttonCompilar_Click(object sender, EventArgs e)
        {
            Program.limpiarListas();
            bool resultado = true;

            foreach (TabPage pestana in tabControl.TabPages)
            {
                String entrada = ((RichTextBox)pestana.Controls[0]).Text;
                bool   res     = Sintactico.analizar(entrada, pestana.Name);
                if (!res)
                {
                    resultado = false;
                }
            }

            if (resultado)
            {
                AlertaAnalisis alerta = new AlertaAnalisis();
                alerta.Show();
            }
            else
            {
                AlertaErrores alerta = new AlertaErrores();
                alerta.Show();
            }

            Program.pestanaActual = tabControl.SelectedTab.Name;
            cerrarSubmenu();
        }
Exemple #3
0
        /**
         * AGREGAR ERROR SINTACTICO
         */
        public void agregarError(string lexema, string descripcion, int fila, int columna)
        {
            Sintactico token = new Sintactico(idSintactico, lexema, descripcion, columna, fila);

            arrayListSintactico.Add(token);
            idSintactico++;
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string     entrada = txtEntrada.Text;
            Sintactico sin     = new Sintactico();

            sin.Analizar(entrada);
        }
Exemple #5
0
        static void Main(string[] args)
        {
            string     text   = System.IO.File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\input", "entrada.txt"));
            Sintactico sintac = new Sintactico();

            sintac.analizar(text);
        }
Exemple #6
0
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //

            analisis = new Sintactico();
        }
Exemple #7
0
        void Button1Click(object sender, EventArgs e)
        {
            Semantico.variables.Clear();

            string copia;
            int    indice;

            analisis = new Sintactico();
            analisis.setCadena(textBox1.Text);
            answerLabel.Text = analisis.Estado();

            copia = textBox1.Text;

            listView1.Items.Clear();
            listView2.Items.Clear();

            foreach (Error a in analisis.erroresDeCodigo())
            {
                ListViewItem lvi = new ListViewItem();
                lvi.Text = (a.indice.ToString());
                lvi.SubItems.Add(a.tipo);
                listView1.Items.Add(lvi);
            }

            indice = 0;
            string lineas = textBox1.Text;

            string[] partes = lineas.Split('\n');
            foreach (string linea in partes)
            {
                copia = linea;
                copia = copia.Replace("\r", "");
                indice++;
                ListViewItem lvi = new ListViewItem();
                lvi.Text = ((indice).ToString());
                lvi.SubItems.Add(copia);
                listView2.Items.Add(lvi);
            }

            foreach (Error a in analisis.erroresDeCodigo())
            {
                listView2.Items[a.indice - 1].BackColor = Color.Red;
            }

//			foreach(Variable a in Semantico.variables){
//				ListViewItem lvi = new ListViewItem();
//				lvi.Text = (a.tipo);
//				lvi.SubItems.Add(a.nombre);
//				listView1.Items.Add(lvi);
//			}
        }
Exemple #8
0
        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox2.Text = "";
            String inputLanguage = richTextBox1.Text;
            Regex  r             = new Regex("\\n");

            string[] lines = r.Split(inputLanguage);
            foreach (string l in lines)
            {
                ParseLine(l);
            }
            Gramatica     gramatica = new Gramatica();
            LanguageData  lenguaje  = new LanguageData(gramatica);
            Parser        parser    = new Parser(lenguaje);
            ParseTree     arbol     = parser.Parse(richTextBox1.Text);
            ParseTreeNode resultado = arbol.Root;

            Sintactico.generarImagen(resultado);
            Sintactico.generarOtraImagen(resultado);
            if (resultado != null)
            {
                label1.Text           = "La cadena es correcta";
                dataGridView1.Visible = false;
            }
            else
            {
                label1.Text = "La cadena es incorrecta";
                DataTable error = new DataTable();
                error.Clear();
                error.Columns.Add("No.");
                error.Columns.Add("Error");
                error.Columns.Add("Fila");
                error.Columns.Add("Columna");
                DataRow fila;
                for (int i = 0; i < arbol.ParserMessages.Count; i++)
                {
                    fila            = error.NewRow();
                    fila["No."]     = i + 1;
                    fila["Error"]   = arbol.ParserMessages[i].Message.ToString();
                    fila["Fila"]    = (arbol.ParserMessages[i].Location.Line + 1).ToString();
                    fila["Columna"] = (arbol.ParserMessages[i].Location.Column + 1).ToString();
                    error.Rows.Add(fila);
                }
                dataGridView1.DataSource = error;
                dataGridView1.Visible    = true;
            }
        }
Exemple #9
0
 private void buttonAnalizar_Click(object sender, EventArgs e)
 {
     resultado = Sintactico.analizar(richTextBoxCaja.Text);
     if (resultado != null)
     {
         try
         {
             MessageBox.Show("Analisis exitoso");
             Sintactico.generarImagen(resultado);
             MessageBox.Show("AST generado");
         }
         catch (Exception ex)
         {
             throw;
         }
     }
 }
        private void tsrEjecutarAnalizadorSintactico_Click(object sender, EventArgs e)
        {
            string nombreTabpageseleccionada = tabControl1.SelectedTab.Name.ToString();
            string indiceparacontroleditort  = nombreTabpageseleccionada.Substring(nombreTabpageseleccionada.Length - 1, 1);

            var controles = tabControl1.Controls.OfType <TabPage>().Where(x => x.Name.StartsWith(nombreTabpageseleccionada));

            foreach (var ctrl in controles)
            {
                var controleseditor = ctrl.Controls.OfType <EditorTexto>().Where(x => x.Name.StartsWith("editorTexto" + indiceparacontroleditort));

                foreach (var ctrleditor in controleseditor)
                {
                    string     codigofuente = ctrleditor.Texto();
                    Lexico     _lex         = new Lexico();
                    Sintactico _sin         = new Sintactico();
                    if (codigofuente.Length > 0)
                    {
                        List <Token> lista = new List <Token>();
                        lista = _lex.EjecutarLexico(codigofuente);
                        int[]     Tokensparasintactico = new int[500];
                        string [] lexemaParaSintactico = new string[500];
                        int       cantidaddetokens = 0, ubicacion = 0;
                        for (int i = 0; i < lista.Count; i++)
                        {
                            if (lista[i].token != -41 && lista[i].token != -39)
                            {
                                Tokensparasintactico[ubicacion] = lista[i].token;
                                lexemaParaSintactico[ubicacion] = lista[i].lexema;
                                cantidaddetokens++;
                                ubicacion++;
                            }
                        }
                        Tokensparasintactico[cantidaddetokens] = -99;
                        //MessageBox.Show(Convert.ToString(Tokensparasintactico[0])+" "+ Convert.ToString(Tokensparasintactico[1]));

                        _sin.EjecutarSintactico(Tokensparasintactico, lexemaParaSintactico);
                    }
                    else
                    {
                        MessageBox.Show("Escribe algo primero :v");
                    }
                }
            }
        }
        private void AnalisisDeExtends(List <String> Extends)
        {
            foreach (TabPage t in tabControl1.TabPages)
            {
                foreach (String name in Extends)
                {
                    if (name + ".lz" == t.Text)
                    {
                        Sintactico.raizDeArbol = null;
                        Sintactico.errores.Clear();
                        TabPage     aux    = t;
                        RichTextBox aux1   = (RichTextBox)t.Controls[0].Controls[1];
                        bool        result = Sintactico.analizar(aux1.Text);
                        if (result)
                        {
                            if (Sintactico.errores.Count() > 0)//SI EXISTEN ERRORES
                            {
                                foreach (ErrorEnAnalisis er in Sintactico.errores)
                                {
                                    this.Errores.Add(er);
                                }
                            }
                            Tabla_Simbolos tabla = new Tabla_Simbolos(Sintactico.raizDeArbol);
                            tabla.generarme_tabla();

                            Lienzo nuevo = new Lienzo(tabla.getProcedimientos(), tabla.getFunciones(), tabla.getVariables(), tabla.getExtends(), tabla.getNombre(), tabla.getVisibilidad());

                            this.LienzosCompilados.Add(nuevo);

                            AnalisisDeExtends(tabla.getExtends());

                            MeterDatosAListasGenerales(tabla.semanticos(), tabla.getTable());
                        }
                        else
                        {
                            foreach (ErrorEnAnalisis er in Sintactico.errores)//ERRORES FALTALES
                            {
                                this.Errores.Add(er);
                            }
                        }
                    }
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            bool resultado = Sintactico.analizar(Entrada.Text);

            if (resultado)
            {
                Salida.Text = "Entrada valida";
            }
            else
            {
                Salida.Text = "Entrada invalida";
            }
            List <ErrorEnAnalisis> errores = Sintactico.err;

            foreach (ErrorEnAnalisis error in errores)
            {
                MessageBox.Show("ERROR: " + error.getError() + " Col: " + error.getColumna() + " Lin: " + error.getLinea());
            }
        }
Exemple #13
0
        private void button2_Click(object sender, EventArgs e)
        {
            //Console.WriteLine("se clickeo el ejecutar");
            Manejador.Maestra.getInstancia.clear();
            string     entrada    = richTextBox1.Text;
            Sintactico sintactico = new Sintactico();
            bool       salida     = sintactico.Analizar(entrada);

            if (salida)
            {
                var result = MessageBox.Show("Analisis correcto");

                richTextBox2.Text = Maestra.getInstancia.getOutput();
            }
            else
            {
                var result = MessageBox.Show("Analisis incorrecto");
                richTextBox2.Text = Maestra.getInstancia.getOutput();
            }
            Manejador.Maestra.getInstancia.ReccorerErrores();
        }
Exemple #14
0
        private void analizar_entrada()
        {
            string ruta = @"C:\Users\Luis\Desktop\AST\prueba_2.xform";

            // try {
            System.IO.StreamReader sr = new System.IO.StreamReader(ruta);
            analisis = new Sintactico("traduccion.xform");
            ParseTreeNode raiz = analisis.analizar(sr.ReadToEnd());

            sr.Close();
            //manipulamos la raiz
            EjecucionXform ejecutar = new EjecucionXform(consola);

            ejecutar.capturarClases(raiz);
            ejecutar.capturarClaseImport(raiz);
            ejecutar.capturarClasePrincipal();
            graf.generarImg(raiz, "prue_2");
            Console.WriteLine("Archivo Cargado correctamente.");
            //}catch(Exception e){
            //Console.WriteLine(e.Message);
            //}
        }
Exemple #15
0
        private void btnEjecutar_Click(object sender, EventArgs e)

        {
            Sintactico sintactico = new Sintactico();
            Acciones   acciones   = new Acciones();

            if (txtEntrada.Text != null)
            {
                ParseTreeNode raiz = sintactico.analizar(txtEntrada.Text.ToString());
                if (raiz != null)
                {
                    String salida = "Analisis Realizado correctamente \n Resultado ="
                                    + Convert.ToString(acciones.realizarAccion(raiz));
                    txtSalida.Text = salida;
                }
                else
                {
                    txtSalida.Text = "Entrada no valida";
                }
            }

            sintactico.analizar(txtEntrada.ToString());
        }
        public void analisis()
        {
            //bool resultado = Sintactico.analizarCHISON("");//enviar cadena de entrada
            //bool resultado = Sintactico.analizarLUP("");

            tableuser.Columns.Add(new DataColumn("user", Type.GetType("System.String")));
            tableuser.Columns.Add(new DataColumn("pass", Type.GetType("System.String")));
            basesys.Tables.Add(tableuser);

            tablerol.Columns.Add(new DataColumn("user", Type.GetType("System.String")));
            tablerol.Columns.Add(new DataColumn("db", Type.GetType("System.String")));
            basesys.Tables.Add(tablerol);

            DataRow userAdmin = tableuser.NewRow();

            userAdmin["user"] = "******";
            userAdmin["pass"] = "******";
            tableuser.Rows.Add(userAdmin);

            DataRow rolAdmin = tablerol.NewRow();

            rolAdmin["user"] = "******";
            rolAdmin["db"]   = "System";
            tablerol.Rows.Add(rolAdmin);

            Sintactico.basesDatos.Add(basesys);
            bool resultado = Sintactico.analizarCQL("List<int> persona = {2,3,4,5};");

            if (resultado)
            {
                Console.WriteLine("Resultado exitoso");
            }
            else
            {
                Console.WriteLine("No funciono");
            }
        }
Exemple #17
0
 private void btnCompilar_Click(object sender, EventArgs e)
 {
     if (tabControl.TabCount != 0)
     {
         String           ruta        = tabControl.SelectedTab.Text;
         String           texto       = tabControl.SelectedTab.Controls["texto"].Text;
         String           busqueda    = "Pestaña";
         StringComparison comparasion = StringComparison.InvariantCultureIgnoreCase;
         if (!ruta.StartsWith(busqueda, comparasion))
         {
             String     path       = Path.GetDirectoryName(ruta);
             String     archivo    = Path.GetFileName(ruta);
             Sintactico sintactico = new Sintactico();
             Sintactico.Analizar(texto);
         }
     }
     //bool resultado = Sintactico.Analizar(txtEntrada.Text);
     //if (resultado) {
     //    txtConsola.Text = "La cadena es Correcta.";
     //}
     //else {
     //    txtConsola.Text = "La cadena es Incorrecta.";
     //}
 }
Exemple #18
0
        public MostrarAST(ParseTreeNode most)
        {
            InitializeComponent();

            pictureBox1.Image = Sintactico.getImage(most);
        }
Exemple #19
0
 private void XFORM_Load(object sender, EventArgs e)
 {
     graf     = new DibujaArbol();
     analisis = new Sintactico("traduccion.xform");
     treeView1.AfterSelect += treeView1_AfterSelect;
 }
        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            if (tabControl1.TabPages.Count > 0)
            {
                this.Errores.Clear();
                this.TablaGenera.Clear();
                this.LienzosCompilados.Clear();
                Sintactico.raizDeArbol = null;
                Sintactico.errores.Clear();
                TabPage     tab             = (TabPage)tabControl1.TabPages[tabControl1.SelectedIndex];
                RichTextBox EntradaAnalizar = (RichTextBox)tabControl1.TabPages[tabControl1.SelectedIndex].Controls[0].Controls[1];
                bool        restult         = Sintactico.analizar(EntradaAnalizar.Text);
                if (restult)
                {
                    Resultado.Text      = "Válido";
                    Resultado.ForeColor = Color.Green;
                    if (Sintactico.errores.Count > 0)
                    {
                        MessageBox.Show("El analisis del archivo aun contiene errores", "Errores en Entrada", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        Tabla_Simbolos tabla = new Tabla_Simbolos(Sintactico.raizDeArbol);
                        tabla.generarme_tabla();
                        //List<Simbolo> simbolos = tabla.getTable();

                        //TablaSimbolosHTML reporte = new TablaSimbolosHTML(simbolos);
                        //reporte.generarTablaHTML();

                        Lienzo l = new Lienzo(tabla.getProcedimientos(), tabla.getFunciones(), tabla.getVariables(), tabla.getExtends(), tabla.getNombre(), tabla.getVisibilidad());
                        this.LienzosCompilados.Add(l);
                        AnalisisDeExtends(tabla.getExtends());
                        //Reporte re = new Reporte();
                        //re.ReporteDeErrores(tabla.semanticos(), "Errores");
                        MeterDatosAListasGenerales(tabla.semanticos(), tabla.getTable());

                        if (this.Errores.Count() > 0)
                        {
                            InfoErr.Text = "Existen Errores Semanticos";
                        }
                        else
                        {
                            Ejecucion  ej    = new Ejecucion(this.LienzosCompilados, this.TablaGenera);
                            AreaImagen nuevo = new AreaImagen();
                            nuevo.Show();
                            ej.IniciarEjecucion();
                            if (ej.getErrores().Count() > 0)
                            {
                                InfoErr.Text = "Existen Errores Semánticos";
                                foreach (ErrorEnAnalisis er in ej.getErrores())
                                {
                                    this.Errores.Add(er);
                                }
                            }
                            else
                            {
                                InfoErr.Text     = "Compilación Terminada";
                                this.TablaGenera = ej.getTablaNueva();
                                nuevo.Visible    = true;
                            }
                        }

                        /*MessageBox.Show("Lienzos Compilados: " + this.LienzosCompilados.Count());
                         * foreach (Lienzo h in this.LienzosCompilados)
                         * {
                         *  h.ReporteDeLienzo();
                         * }*/
                    }
                }
                else
                {
                    Resultado.Text = "Inválido";
                    MessageBox.Show("El analisis del archivo aun contiene errores sin recuperación", "Errores en Entrada", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Resultado.ForeColor = Color.Red;
                }
            }
            else
            {
                MessageBox.Show("No hay Pestañas abiertas", "Error al Ejecutar", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #21
0
 private void btncompilar_Click(object sender, EventArgs e)
 {
     consola.Clear();
     Sintactico.analizar(TextArea.Text);
 }
Exemple #22
0
        private void tsrEjecutarAnalizadorSintactico_Click(object sender, EventArgs e)
        {
            string nombreTabpageseleccionada = tabControl1.SelectedTab.Name.ToString();
            string indiceparacontroleditort  = nombreTabpageseleccionada.Substring(nombreTabpageseleccionada.Length - 1, 1);

            var controles = tabControl1.Controls.OfType <TabPage>().Where(x => x.Name.StartsWith(nombreTabpageseleccionada));

            foreach (var ctrl in controles)
            {
                var controleseditor = ctrl.Controls.OfType <EditorTexto>().Where(x => x.Name.StartsWith("editorTexto" + indiceparacontroleditort));

                foreach (var ctrleditor in controleseditor)
                {
                    string     codigofuente = ctrleditor.Texto();
                    Lexico     _lex         = new Lexico();
                    Sintactico _sin         = new Sintactico();
                    if (codigofuente.Length > 0)
                    {
                        List <Token> lista             = new List <Token>();
                        List <Token> listaTablaSimbolo = new List <Token>();
                        //var ObjArbol = new Arboles(MiLi)
                        lista = _lex.EjecutarLexico(codigofuente);
                        int[]    Tokensparasintactico = new int[500];
                        string[] lexemaParaSintactico = new string[500];
                        int      cantidaddetokens = 0, ubicacion = 0;
                        for (int i = 0; i < lista.Count; i++)
                        {
                            if (lista[i].token != -41 && lista[i].token != -39)
                            {
                                Tokensparasintactico[ubicacion] = lista[i].token;
                                lexemaParaSintactico[ubicacion] = lista[i].lexema;
                                listaTablaSimbolo.Add(lista[i]);
                                cantidaddetokens++;
                                ubicacion++;
                            }
                        }
                        Tokensparasintactico[cantidaddetokens] = -99;
                        //MessageBox.Show(Convert.ToString(Tokensparasintactico[0])+" "+ Convert.ToString(Tokensparasintactico[1]));

                        TablaSimbolos.ListaErroresSemanticos = new List <ErrorSemanticoDGV>();
                        TablaSimbolos.TablaSimbolosClase     = new Dictionary <string, NodoClase>();
                        _sin.EjecutarSintactico(Tokensparasintactico, lexemaParaSintactico, listaTablaSimbolo);

                        dgvErrores.DataSource = null;
                        dgvErrores.Rows.Clear();

                        dgvTablaSimbolo.DataSource = null;
                        dgvTablaSimbolo.Rows.Clear();

                        Arboles arbolSintactico = new Arboles(listaTablaSimbolo);
                        arbolSintactico.CrearArbolSintacticoAbstracto();

                        if (TablaSimbolos.ListaErroresSemanticos.Count > 0)
                        {
                            dgvErrores.DataSource = TablaSimbolos.ListaErroresSemanticos;
                        }
                        else
                        {
                            dgvTablaSimbolo.DataSource = TablaSimbolos.ObtenerListaClases();
                        }
                    }
                    else
                    {
                        dgvTablaSimbolo.DataSource = "";
                        MessageBox.Show("Escribe algo primero :v");
                    }
                }
            }
        }
Exemple #23
0
        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox2.Text = "";
            richTextBox3.Text = "Analizando...";
            Gramatica     gramatica = new Gramatica();
            LanguageData  lenguaje  = new LanguageData(gramatica);
            Parser        parser    = new Parser(lenguaje);
            ParseTree     arbol     = parser.Parse(richTextBox1.Text);
            ParseTreeNode resultado = arbol.Root;

            Sintactico.generarImagen(resultado);
            if (resultado != null)
            {
                label1.Text = "La cadena es correcta";
                Programa p = new Programa(richTextBox2, richTextBox3, resultado);
                if (erroresSem.Count == 0)
                {
                    dataGridView1.Visible = false;
                }
                else
                {
                    DataTable error = new DataTable();
                    error.Clear();
                    error.Columns.Add("No.");
                    error.Columns.Add("Error");
                    error.Columns.Add("Fila");
                    error.Columns.Add("Columna");
                    DataRow      filaa;
                    StreamWriter sw = new StreamWriter("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/Reporte.html");
                    sw.WriteLine("<html>");
                    sw.WriteLine("<title>Reporte de Errores</title>");
                    sw.WriteLine("<body background=" + "\"" + "large-background-1024x724.jpg" + "\"" + ">");
                    sw.WriteLine("<h1><center>Reporte de Errores</center></h1>");
                    sw.WriteLine("<center><table border=\"2\">");
                    sw.WriteLine("<tr>");
                    sw.WriteLine("<th>No.</th>");
                    sw.WriteLine("<th>Error</th>");
                    sw.WriteLine("<th>Fila</th>");
                    sw.WriteLine("<th>Columna</th>");
                    sw.WriteLine("</tr>");
                    for (int i = 0; i < erroresSem.Count; i++)
                    {
                        filaa            = error.NewRow();
                        filaa["No."]     = i + 1;
                        filaa["Error"]   = "Semantico: " + erroresSem[i];
                        filaa["Fila"]    = fila[i];
                        filaa["Columna"] = columna[i];
                        error.Rows.Add(filaa);
                        sw.WriteLine("<tr>");
                        sw.WriteLine("<th>" + (i + 1) + "</th>");
                        sw.WriteLine("<th>" + "Semantico: " + erroresSem[i] + "</th>");
                        sw.WriteLine("<th>" + fila[i] + "</th>");
                        sw.WriteLine("<th>" + columna[i] + "</th>");
                        sw.WriteLine("</tr>");
                    }
                    sw.WriteLine("</table></center>");
                    sw.WriteLine("</body>");
                    sw.WriteLine("</html>");
                    sw.Close();
                    dataGridView1.DataSource = error;
                    dataGridView1.Visible    = true;
                    erroresSem.Clear();
                    fila.Clear();
                    columna.Clear();
                }
                Bitmap myBitmap = new Bitmap("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/[Compi1]Proyecto2/imagenes/AST.png");
                //Image im = Image.FromFile("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/[Compi1]Proyecto2/imagenes/AST.png");
                myBitmap.SetResolution(20, 20);
                Bitmap pp = new Bitmap(myBitmap);
                Clipboard.SetImage(pp);
                richTextBox4.Paste();
            }
            else
            {
                label1.Text = "La cadena es incorrecta";
                DataTable error = new DataTable();
                error.Clear();
                error.Columns.Add("No.");
                error.Columns.Add("Error");
                error.Columns.Add("Fila");
                error.Columns.Add("Columna");
                DataRow      filaa;
                StreamWriter sw = new StreamWriter("C:/Users/pablo/Desktop/CompiJunio/[Compi1]Proyecto2/Reporte.html");
                sw.WriteLine("<html>");
                sw.WriteLine("<title>Reporte de Errores</title>");
                sw.WriteLine("<body background=" + "\"" + "large-background-1024x724.jpg" + "\"" + ">");
                sw.WriteLine("<h1><center>Reporte de Errores</center></h1>");
                sw.WriteLine("<center><table border=\"2\">");
                sw.WriteLine("<tr>");
                sw.WriteLine("<th>No.</th>");
                sw.WriteLine("<th>Error</th>");
                sw.WriteLine("<th>Fila</th>");
                sw.WriteLine("<th>Columna</th>");
                sw.WriteLine("</tr>");
                int j = 0;
                for (int i = 0; i < arbol.ParserMessages.Count; i++)
                {
                    filaa            = error.NewRow();
                    filaa["No."]     = i + 1;
                    filaa["Error"]   = arbol.ParserMessages[i].Message.ToString();
                    filaa["Fila"]    = (arbol.ParserMessages[i].Location.Line + 1).ToString();
                    filaa["Columna"] = (arbol.ParserMessages[i].Location.Column + 1).ToString();
                    error.Rows.Add(filaa);
                    j = i + 1;
                    sw.WriteLine("<tr>");
                    sw.WriteLine("<th>" + j + "</th>");
                    sw.WriteLine("<th>" + arbol.ParserMessages[i].Message.ToString() + "</th>");
                    sw.WriteLine("<th>" + (arbol.ParserMessages[i].Location.Line + 1).ToString() + "</th>");
                    sw.WriteLine("<th>" + (arbol.ParserMessages[i].Location.Line + 1).ToString() + "</th>");
                    sw.WriteLine("</tr>");
                }
                for (int i = 0; i < erroresSem.Count; i++)
                {
                    filaa            = error.NewRow();
                    filaa["No."]     = j + 1;
                    filaa["Error"]   = "Semantico: " + erroresSem[i];
                    filaa["Fila"]    = fila[i];
                    filaa["Columna"] = columna[i];
                    error.Rows.Add(filaa);
                    sw.WriteLine("<tr>");
                    sw.WriteLine("<th>" + (j + 1) + "</th>");
                    sw.WriteLine("<th>" + "Semantico: " + erroresSem[i] + "</th>");
                    sw.WriteLine("<th>" + fila[i] + "</th>");
                    sw.WriteLine("<th>" + columna[i] + "</th>");
                    sw.WriteLine("</tr>");
                }
                sw.WriteLine("</table></center>");
                sw.WriteLine("</body>");
                sw.WriteLine("</html>");
                sw.Close();
                dataGridView1.DataSource = error;
                dataGridView1.Visible    = true;
                erroresSem.Clear();
                fila.Clear();
                columna.Clear();
            }
        }