Example #1
0
        private void botonCargarInfo_Click_1(object sender, EventArgs e)
        {
            String        ruta          = textRuta.Text;
            StreamReader  lector        = new StreamReader(@"" + ruta);
            List <String> lineasEntrada = new List <string>();

            String lineaActual;

            while ((lineaActual = lector.ReadLine()) != null)
            {
                lineasEntrada.Add(lineaActual);
            }
            salidaDatos.Lines = lineasEntrada.ToArray();

            Resetear();
            for (int i = 0; i < lineasEntrada.Count(); i++)
            {
                Cache.obtenerCache().AgregarLinea(lineasEntrada[i]);
            }
            try
            {
                AnalizadorLexico analizador = new AnalizadorLexico();
                ComponenteLexico componente = analizador.Analizador(opcion);
                while (!componente.ObtenerCategoria().Equals(Categoria.FIN_DE_ARCHIVO))
                {
                    //MessageBox.Show(componente.ToString());

                    componente = analizador.Analizador(opcion);
                }
                LlenarTablas();
                if (ManejadorErrores.HayErrores())
                {
                    MessageBox.Show("Hay problemas de compilacion. Revise la información de los errores encontrados...");
                }
                else if (Categoria.FIN_DE_ARCHIVO.Equals(componente.ObtenerCategoria()))
                {
                    MessageBox.Show("El programa se encuentra bien escrito");
                }
                else
                {
                    MessageBox.Show("Aunque el programa se encuentra bien escrito, faltaron componente por evaluar...");
                }
            }
            catch (Exception ex)
            {
                LlenarTablas();
                MessageBox.Show(ex.Message);
            }
        }
Example #2
0
 private void Form1_Load(object sender, EventArgs e)
 {
     //Resetear
     Resetear();
     //Cargar a cacher los datos
     try
     {
         //Disparar el proesamiento a nivel de analizador lexico
         //Cache.ObtenerCache().AgregarLinea("1");
         AnalizadorLexico analisisLexico = new AnalizadorLexico();
         ComponenteLexico componente     = analisisLexico.Analizar();
         while (!componente.ObtenerCategoria().Equals(Categoria.FIN_ARCHIVO))
         {
             MessageBox.Show(componente.ToString());
             componente = analisisLexico.Analizar();
         }
         if (ManejadorErrores.HayErrores())
         {
             MessageBox.Show("El proceso de compilación ha finalizado con errores");
         }
         else
         {
             MessageBox.Show("El proceso de compilación ha finalizado de forma exitosa");
         }
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message);
     }
 }
Example #3
0
        public static ComponenteLexico SincronizarTabla(ComponenteLexico Componente)
        {
            if (Componente != null)
            {
                Componente = TablaPalabrasReservadas.ComprobarPalabraReservada(Componente);
                switch (Componente.ObtenerCategoria())
                {
                case TipoComponente.DUMMY:
                    TablaDummys.Agregar(Componente);
                    break;

                case TipoComponente.PALABRA_RESERVADA:
                    TablaPalabrasReservadas.Agregar(Componente);
                    break;

                case TipoComponente.LITERAL:
                    TablaLiterales.Agregar(Componente);
                    break;

                case TipoComponente.SIMBOLO:
                    TablaSimbolos.Agregar(Componente);
                    break;
                }
            }
            return(Componente);
        }
Example #4
0
        private void cargarInfoConsola_Click_1(object sender, EventArgs e)
        {
            String[] lineasEntradas = entradaDatosConsola.Lines;
            //salidaDatos.Lines = lineasEntradas;
            Resetear();
            for (int i = 0; i < lineasEntradas.Length; i++)
            {
                Cache.obtenerCache().AgregarLinea(lineasEntradas[i]);
            }
            try
            {
                //AnalizadorLexico analizador = new AnalizadorLexico();
                AnalizadorSintactico        AnaSin     = new AnalizadorSintactico();
                Dictionary <string, object> Resultados = AnaSin.Analizar(depurar);
                ComponenteLexico            Componente = (ComponenteLexico)Resultados["COMPONENTE"];
                Stack <double> Pila = (Stack <double>)Resultados["PILA"];

                //while (!Componente.ObtenerCategoria().Equals(Categoria.FIN_DE_ARCHIVO))
                //{
                //    //MessageBox.Show(componente.ToString());

                //    Componente = analizador.Analizar();


                //}
                LlenarTablas();

                if (ManejadorErrores.HayErrores())
                {
                    MessageBox.Show("Hay problemas de compilacion. Revise la información de los errores encontrados...");
                }
                else if (Categoria.FIN_DE_ARCHIVO.Equals(Componente.ObtenerCategoria()))
                {
                    MessageBox.Show("El programa se encuentra bien escrito");

                    if (Pila.Count == 1)
                    {
                        string Resultado = Convert.ToString(Pila.Pop());
                        MessageBox.Show("La operación arrojó como resultado: " + Resultado);
                        salidaDatos.Text = Resultado;
                    }
                    else
                    {
                        MessageBox.Show("Faltaron números por evaluar");
                    }
                }
                else
                {
                    MessageBox.Show("Aunque el programa se encuentra bien escrito, faltaron componente por evaluar...");
                }
            }
            catch (Exception ex)
            {
                LlenarTablas();
                MessageBox.Show(ex.Message);
            }
        }
Example #5
0
        private void cargarInfoConsola_Click_1(object sender, EventArgs e)
        {
            String[] lineasEntradas = entradaDatosConsola.Lines;
            salidaDatos.Lines = lineasEntradas;
            Resetear();
            for (int i = 0; i < lineasEntradas.Length; i++)
            {
                Cache.obtenerCache().AgregarLinea(lineasEntradas[i]);
            }
            try
            {
                //AnalizadorLexico analizador = new AnalizadorLexico();
                AnalizadorSintactico AnaSin     = new AnalizadorSintactico();
                ComponenteLexico     componente = AnaSin.Analizar(depurar, opcion);

                //while (!componente.ObtenerCategoria().Equals(Categoria.FIN_DE_ARCHIVO))
                //{
                //    //MessageBox.Show(componente.ToString());

                //    componente = analizador.Analizador(opcion);


                //}
                LlenarTablas();

                if (ManejadorErrores.HayErrores())
                {
                    MessageBox.Show("Hay problemas de compilacion. Revise la información de los errores encontrados...");
                }
                else if (Categoria.FIN_DE_ARCHIVO.Equals(componente.ObtenerCategoria()))
                {
                    MessageBox.Show("El programa se encuentra bien escrito");
                }
                else
                {
                    MessageBox.Show("Aunque el programa se encuentra bien escrito, faltaron componente por evaluar...");
                }
            }
            catch (Exception ex)
            {
                LlenarTablas();
                MessageBox.Show(ex.Message);
            }
        }
Example #6
0
        private void cargarInfoConsola_Click(object sender, EventArgs e)
        {
            String[] lineasEntradas = entradaDatosConsola.Lines;
            String[] lineasSalidas  = lineasEntradas;
            for (int i = 0; i < lineasEntradas.Length; i++)
            {
                lineasSalidas[i] = i + " -> " + lineasEntradas[i];
            }
            salidaDatos.Lines = lineasSalidas;
            Resetear();
            for (int i = 0; i < lineasEntradas.Count(); i++)
            {
                Linea.Crear(i + 1, lineasEntradas[i]);
            }
            try
            {
                AnalizadorLexico analizador = new AnalizadorLexico();
                ComponenteLexico componente = analizador.Analizar();
                while (!componente.ObtenerCategoria().Equals(Categoria.FIN_DE_ARCHIVO))
                {
                    MessageBox.Show(componente.ToString());

                    componente = analizador.Analizar();
                }
                if (ManejadorErrores.HayErrores())
                {
                    MessageBox.Show("El proceso de compilacion ha finalizado con errores");
                }
                else
                {
                    MessageBox.Show("El proceso de compilacion ha finalizado exitosamente");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            salidaDatos.Lines = lineasSalidas.ToArray();
        }
        private void ExpresionPrima(int Jerarquia)
        {
            TrazarEntrada("<ExpresionPrima>", Jerarquia);

            if (Categoria.SUMA.Equals(Componente.ObtenerCategoria()))
            {
                Avanzar();
                Termino(Jerarquia + 1);

                double derecho = Pila.Pop();
                TrazarPop(Jerarquia, derecho);

                double izquierdo = Pila.Pop();
                TrazarPop(Jerarquia, izquierdo);

                double Valor = izquierdo + derecho;
                TrazarSalida(izquierdo + " + " + derecho + " = " + Valor, Jerarquia);
                Pila.Push(Valor);
                TrazarPush(Jerarquia, Valor);
                ExpresionSinTerminoFactor(Jerarquia + 1);
            }
            else if (Categoria.RESTA.Equals(Componente.ObtenerCategoria()))
            {
                Avanzar();
                Termino(Jerarquia + 1);

                double derecho = Pila.Pop();
                TrazarPop(Jerarquia, derecho);

                double izquierdo = Pila.Pop();
                TrazarPop(Jerarquia, izquierdo);

                double Valor = izquierdo - derecho;
                TrazarSalida(izquierdo + " - " + derecho + " = " + Valor, Jerarquia);
                Pila.Push(Valor);
                TrazarPush(Jerarquia, Valor);
                ExpresionSinTerminoFactor(Jerarquia + 1);
            }

            TrazarSalida("</ExpresionPrima>", Jerarquia);
        }
Example #8
0
 //<morseSec> :: <morse>|epsilon {., ,-}
 private void MorseSec()
 {
     if (!Categoria.FIN_DE_ARCHIVO.Equals(Componente.ObtenerCategoria()))
     {
         Morse();
     }
 }