Exemplo n.º 1
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);
            }
        }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 3
0
        public async Task <string> Compilar()
        {
            await Task.Yield();

            this.ResultadosCompilacion.Clear();
            //try
            //{
            //Fase 1 Analisis Lexico
            Analizador analizador
                = new AnalizadorLexico(this.Document, this.ResultadosCompilacion);

            analizador.Analizar();
            if (analizador.EsValido)
            {
                //Fase 2 Analisis Sintactico
                analizador =
                    new AnalizadorSintactico((AnalizadorLexico)analizador, this.Document, this.ResultadosCompilacion);
                analizador.Analizar();
                if (analizador.EsValido)
                {
                    //        //Fase 4 Sintetizador
                    analizador =
                        new Sintesis((AnalizadorSintactico)analizador, this.Document, this.ResultadosCompilacion);
                    analizador.Analizar();
                    if (analizador.EsValido)
                    {
                        CodigoMaquina maquina = new CodigoMaquina((Sintesis)analizador);
                        maquina.Generar();
                        this.CodigoMaquina = maquina.Codigo;
                        this.Compilado     = true;
                        this.CodeSegment   = maquina.CodeSegment;
                        return("Compilación exitosa");
                    }
                }
            }
            this.Compilado = false;
            return("Se encontrarón errores previos a la compilación\n");
        }