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); } }
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); } }
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"); }