private void toolStripButton4_Click(object sender, EventArgs e)
 {
     if (Estatico.NumeroErroes() > 0 || Estatico.NumeroAdvertencias() > 0)
     {
         ErrorReport errorRep = new ErrorReport(Estatico.errores);
         bool        aux      = errorRep.writeReport();
         if (aux)
         {
             errorRep.openReport();
         }
         else
         {
             MessageBox.Show("No se Pudo generar el Reporte!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
     else
     {
         MessageBox.Show("No Existen Errores o Advertencias", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        private void CapturarInformacion(Analizador an, Hashtable clasesPreanalizadas)
        {
            List <ClasePreAnalizada> clases = an.clases;

            Progreso.Value = 80;
            System.Threading.Thread.Sleep(200);
            foreach (ClasePreAnalizada a in clases)
            {
                if (!clasesPreanalizadas.Contains(a.id))
                {
                    Clase aux = a.obtenerClase();
                    clasesPreanalizadas.Add(a.id, a);//METO LAS CLASES AL HASHTABLE PARA LUEGO LAS PREANALIZADAS LLEVARLAS A ANALIZARLAS
                    Estatico.clasesDisponibles.addClass(aux);
                }
                else
                {
                    Estatico.errores.Add(new TError("Advertencia", "Se encontro una nueva definicion de la clase: " + a.id + " En el archivo: " + a.archivoOringen + ", Por lo que Se descarto", 0, 0, true));
                }
            }
            if (Estatico.NumeroErroes() > 0)//SI HAY ERRORES REVISAR
            {
                MessageBox.Show("Existen: " + Estatico.NumeroErroes() + " en La cadena! Revisalos en el reporte", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                //EN ESTE PUNTO YA TENGO LAS CLASES CON SU AST..... AHORA DEBERIA DE EMPEZAR LA EJECUCION DEL PROGRAMA
                Clase inicio = Estatico.clasesDisponibles.getFirstClassWithMain();
                if (inicio != null)
                {
                    Ambito am = new Ambito(null, inicio.idClase.ToLower(), inicio.ArchivoOrigen);

                    am = (Ambito)inicio.Ejecutar(am);
                    inicio.ejecutaMain(am);

                    //am.ImprimeAmbito();
                }
            }
        }
        //PERMITE LA GENERACION DEL FORMULARIO
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            StatusControl.Text = "Estatus";
            Estatico.setUp(Consola);
            Hashtable clasesPreanalizadas = new Hashtable();

            if (Editor.TabCount > 0)
            {
                //RichTextBox principal = (RichTextBox)Editor.TabPages[Editor.SelectedIndex].Controls[0].Controls[1];
                this.archivo = Editor.TabPages[Editor.SelectedIndex].Name;

                FastColoredTextBox principal = (FastColoredTextBox)Editor.TabPages[Editor.SelectedIndex].Controls[0].Controls[0];
                String             cadena    = principal.Text;//PARA QUE TODO ESTE EN MINUSCULAS Y NO TENGA CLAVOS CON LA COMPROBACION DE NOMBRES
                Progreso.Value     = 40;
                StatusControl.Text = "Iniciando Proceso...";
                System.Threading.Thread.Sleep(200);
                Analizador an = new Analizador(cadena, this.ProyectoPath, archivo);
                if (an.analizar())//SI SE ANALIZA LA CADENA...
                {
                    // PROCEDE A INTENTAR CAPTURAR LA INFO...
                    if (Estatico.NumeroErroes() > 0) //SO EXISTEN ERRORES ANTES DE CAPTURAR LA INFO...
                    {
                        //REVISAR...
                        Progreso.Value     = 0;
                        StatusControl.Text = "Proceso Interrumpido!";
                        Estatico.consolaSalida.AppendText("\n>> Proceso detenido, Errores detectados...");
                        MessageBox.Show("Existen: " + Estatico.NumeroErroes() + " en La cadena! Revisalos en el reporte", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else//SINO PROCEDER A CAPTURA LA INFORMACION
                    {
                        CapturarInformacion(an, clasesPreanalizadas);
                        ///////////////////////////////////////////////////////
                        Progreso.Value     = 100;
                        StatusControl.Text = "Proceso Terminado!";
                        System.Threading.Thread.Sleep(200);
                        Progreso.Value = 0;
                        ///////////////////////////////////////////////////////
                        if (Estatico.resps.Count > 0)
                        {
                            String nombre = Microsoft.VisualBasic.Interaction.InputBox("Nombre Del Formulario A Guardar: ", "Nuevo Form", "", 100, 100);
                            if (!nombre.Equals(""))
                            {
                                SavedForm s = new SavedForm(nombre, Estatico.resps);
                                if (s.writeForm())
                                {
                                    MessageBox.Show("Formulario: " + nombre + " Almacenado!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                }
                                else
                                {
                                    MessageBox.Show("No se almaceno el formulario!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                            }
                        }
                        //AQUI DEBO DE PREGUNTAR SI EN CASO HAY UN PROBLEMA CON LAS ADVERTENCIAS
                    }
                }
                else//SI NO SE PUEDE, ENTONCES EL ERROR ES FATAL... REVISAR
                {
                    MessageBox.Show("No se logro Analizar la cadena de entrada", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                errorLabel.Text    = Convert.ToString(Estatico.NumeroErroes());
                warningsLabel.Text = Convert.ToString(Estatico.NumeroAdvertencias());
            }
        }