private void BorrarPestañas() { if (tabControl1.TabPages.Count > 1) { tabControl1.TabPages.Remove(tabControl1.TabPages[1]); tabControl1.TabPages.Remove(tabControl1.TabPages[1]); tabControl1.TabPages.Remove(tabControl1.TabPages[1]); tabControl1.TabPages.Remove(tabControl1.TabPages[1]); TablaSimbolos.TablaSimbolos.Limpiar(); TablaDummys.Limpiar(); TablaLiterales.Limpiar(); TablaPalabrasReservadas.Limpiar(); GestorErrores.BorrarTablaErrores(); } }
private void button1_Click(object sender, EventArgs e) { try { //AnalizadorLexico anaLex = new AnalizadorLexico(); //ComponenteLexico componete = anaLex.Analizar(); TablaPalabrasReservadas.inicializar(); AnalizadorSintactico anaSin = new AnalizadorSintactico(); anaSin.analizar(); CrearPestañaDeComponentes(); CrearPestañaDeErrores(); CrearPestañaDePalabrasReservadas(); CrearPestañaDeLiterales(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void CrearPestañaDePalabrasReservadas() { TabPage newPage = new TabPage("Tabla_Palabras_Reservadas"); tabControl1.TabPages.Add(newPage); DataGrid dataGridPalabrasReservadas = new DataGrid() { DataSource = TablaPalabrasReservadas.ObtenerTodosLosSimbolos(), Location = new System.Drawing.Point(16, 78), Width = 656, Height = 150, PreferredColumnWidth = 104 }; Label tablaPalabrasReservadas = new Label() { Text = "Tabla de palabras reservadas", Location = new System.Drawing.Point(13, 33) }; newPage.Controls.Add(tablaPalabrasReservadas); newPage.Controls.Add(dataGridPalabrasReservadas); }
public ComponenteLexico Analizar() { ComponenteLexico componente = null; lexema = ""; int estadoActual = 0; bool continuarEvaluacion = true; while (continuarEvaluacion) { switch (estadoActual) { case 0: LeerSiguienteCaracter(); while (" ".Equals(caracterActual)) { LeerSiguienteCaracter(); } if ((char.IsLetter(caracterActual.ToCharArray()[0]) || "$".Equals(caracterActual) || "_".Equals(caracterActual)) && (!"O".Equals(caracterActual) && !"Y".Equals(caracterActual))) { estadoActual = 4; lexema += caracterActual; } else if ("Y".Equals(caracterActual)) { estadoActual = 34; lexema += caracterActual; } else if ("O".Equals(caracterActual)) { estadoActual = 35; lexema += caracterActual; } else if (";".Equals(caracterActual)) { estadoActual = 13; // lexema += caracterActual; } else if ("+".Equals(caracterActual)) { estadoActual = 5; lexema += caracterActual; } else if (char.IsDigit(caracterActual.ToCharArray()[0])) { estadoActual = 1; lexema += caracterActual; } else if ("-".Equals(caracterActual)) { estadoActual = 6; lexema += caracterActual; } else if ("*".Equals(caracterActual)) { estadoActual = 7; lexema += caracterActual; } else if ("/".Equals(caracterActual)) { estadoActual = 8; lexema += caracterActual; } else if ("%".Equals(caracterActual)) { estadoActual = 9; lexema += caracterActual; } else if ("(".Equals(caracterActual)) { estadoActual = 10; lexema += caracterActual; } else if (")".Equals(caracterActual)) { estadoActual = 11; lexema += caracterActual; } else if ("@EOF@".Equals(caracterActual)) { estadoActual = 12; lexema += caracterActual; } else if ("=".Equals(caracterActual)) { estadoActual = 19; lexema += caracterActual; } else if ("<".Equals(caracterActual)) { estadoActual = 20; lexema += caracterActual; } else if (">".Equals(caracterActual)) { estadoActual = 21; lexema += caracterActual; } else if (":".Equals(caracterActual)) { estadoActual = 22; lexema += caracterActual; } else if ("!".Equals(caracterActual)) { estadoActual = 30; lexema += caracterActual; } else if ("@FL@".Equals(caracterActual)) { estadoActual = 13; lexema += ""; } else if ("[".Equals(caracterActual)) { estadoActual = 32; lexema += caracterActual; } else if ("]".Equals(caracterActual)) { estadoActual = 33; lexema += caracterActual; } else if ("\"".Equals(caracterActual)) { estadoActual = 38; lexema += caracterActual; } else { estadoActual = 18; } break; case 1: LeerSiguienteCaracter(); if (char.IsDigit(caracterActual.ToCharArray()[0])) { estadoActual = 1; lexema += caracterActual; } else if (",".Equals(caracterActual)) { estadoActual = 2; lexema = lexema + caracterActual; } else { estadoActual = 14; } break; case 2: LeerSiguienteCaracter(); if (char.IsDigit(caracterActual.ToCharArray()[0])) { estadoActual = 3; lexema += caracterActual; } else { estadoActual = 17; } break; case 3: LeerSiguienteCaracter(); if (char.IsDigit(caracterActual.ToCharArray()[0])) { estadoActual = 3; lexema += caracterActual; } else { estadoActual = 15; } break; case 4: LeerSiguienteCaracter(); if (char.IsLetter(caracterActual.ToCharArray()[0]) || "$".Equals(caracterActual) || "_".Equals(caracterActual)) { estadoActual = 4; lexema += caracterActual; } else if (" ".Equals(caracterActual) || "@FL@".Equals(caracterActual) || "@EOF@".Equals(caracterActual)) { estadoActual = 16; } else { estadoActual = 18; } break; case 5: int posicionInicial = (Puntero - 1) - lexema.Length; int numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "SUMA"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 6: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "RESTA"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 7: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "MULTIPLICACIÓN"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 8: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "DIVISIÓN"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 9: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "MODULO"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 10: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "PARENTESIS ABRE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 11: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "PARENTESIS CIERRA"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 12: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "FIN DE ARCHIVO"); continuarEvaluacion = false; break; case 13: estadoActual = 0; lexema = ""; CargarLinea(); break; case 14: DevolverPuntero(); posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "NUMERO ENTERO"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 15: DevolverPuntero(); posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "NUMERO DECIMAL"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 16: DevolverPuntero(); string categoria = null; posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; if (TablaPalabrasReservadas.obtenerTablaPalabrasReservadas().EsPalabraReservada(lexema)) { ComponenteLexico palabraReservada = TablaPalabrasReservadas.obtenerTablaPalabrasReservadas().ObtenerPalabraReservada(lexema); componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, palabraReservada.Categoria); } else { categoria = "IDENTIFICADOR"; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, categoria); } TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 17: DevolverPuntero(); String MensajeError17 = "Numero decimal no valido"; Error ErrorNumeroDecimal = Error.CREATE(lineaActual.Numero, (Puntero - 1) - lexema.Length, caracterActual, MensajeError17, "LEXICO"); ManejadorErrores.ObtenerManejadorErrores().AgregarError(ErrorNumeroDecimal); lexema += "0"; componente = ComponenteLexico.CREATE(lineaActual.Numero, (Puntero - 1) - lexema.Length, lexema, "NUMERO DECIMAL DUMMY"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); Form.errores(ErrorNumeroDecimal); continuarEvaluacion = false; break; case 18: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; string MensajeError18 = "Símbolo no válido"; Error ErrorSimboloInvalido = Error.CREATE(lineaActual.Numero, (Puntero - 1) - lexema.Length, caracterActual, MensajeError18, "LEXICO"); ManejadorErrores.ObtenerManejadorErrores().AgregarError(ErrorSimboloInvalido); componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, caracterActual, "SIMBOLO NO VALIDO"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.errores(ErrorSimboloInvalido); lexema += "_"; estadoActual = 4; break; case 19: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "IGUAL QUE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 20: LeerSiguienteCaracter(); if (">".Equals(caracterActual)) { estadoActual = 23; lexema += caracterActual; } else if ("=".Equals(caracterActual)) { estadoActual = 24; lexema += caracterActual; } else { estadoActual = 25; lexema += caracterActual; } break; case 21: LeerSiguienteCaracter(); if ("=".Equals(caracterActual)) { estadoActual = 26; lexema += caracterActual; } else { estadoActual = 27; lexema += caracterActual; } break; case 22: LeerSiguienteCaracter(); if ("=".Equals(caracterActual)) { estadoActual = 28; lexema += caracterActual; } else { estadoActual = 29; lexema += caracterActual; } break; case 23: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "DIFERENTE QUE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 24: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "MENOR O IGUAL QUE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 25: DevolverPuntero(); posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "MENOR QUE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 26: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "MAYOR O IGUAL QUE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 27: DevolverPuntero(); posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "MAYOR QUE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 28: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "ASIGNACION"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 29: DevolverPuntero(); posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; string MensajeError29 = "Símbolo no válido"; Error ErrorAsignacionInvalido = Error.CREATE(lineaActual.Numero, (Puntero - 1) - lexema.Length, caracterActual, MensajeError29, "LEXICO"); ManejadorErrores.ObtenerManejadorErrores().AgregarError(ErrorAsignacionInvalido); componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, caracterActual, "ASIGNACION NO VALIDA"); Form.errores(ErrorAsignacionInvalido); continuarEvaluacion = false; break; case 30: LeerSiguienteCaracter(); if ("=".Equals(caracterActual)) { estadoActual = 31; lexema += caracterActual; } break; case 31: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "DIFERENTE QUE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 32: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "CORCHETE ABRE"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 33: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "CORCHETE CIERRA"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 34: LeerSiguienteCaracter(); if (char.IsLetter(caracterActual.ToCharArray()[0]) || "$".Equals(caracterActual) || "_".Equals(caracterActual)) { estadoActual = 4; lexema += caracterActual; } else { estadoActual = 36; } break; case 35: LeerSiguienteCaracter(); if (char.IsLetter(caracterActual.ToCharArray()[0]) || "$".Equals(caracterActual) || "_".Equals(caracterActual)) { estadoActual = 4; lexema += caracterActual; } else { estadoActual = 37; } break; case 36: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "OPERADOR Y"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 37: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "OPERADOR O"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.datos(componente); continuarEvaluacion = false; break; case 38: LeerSiguienteCaracter(); if ("\\".Equals(caracterActual)) { estadoActual = 39; } else if ("\"".Equals(caracterActual)) { estadoActual = 41; lexema += caracterActual; } else if ("@FL@".Equals(caracterActual)) { CargarLinea(); lexema += " "; } else if ("@EOF@".Equals(caracterActual)) { estadoActual = 42; } else { lexema += caracterActual; } break; case 39: LeerSiguienteCaracter(); if ("\"".Equals(caracterActual)) { estadoActual = 40; lexema += caracterActual; } else if ("\\".Equals(caracterActual)) { lexema += caracterActual; } else if ("@FL@".Equals(caracterActual)) { CargarLinea(); lexema += " "; } else if ("@EOF@".Equals(caracterActual)) { estadoActual = 42; } else { estadoActual = 38; lexema += caracterActual; } break; case 40: LeerSiguienteCaracter(); if ("\"".Equals(caracterActual)) { estadoActual = 41; lexema += caracterActual; } else if ("\\".Equals(caracterActual)) { estadoActual = 39; } else if ("@FL@".Equals(caracterActual)) { CargarLinea(); lexema += " "; } else if ("@EOF@".Equals(caracterActual)) { estadoActual = 42; } else { lexema += caracterActual; } break; case 41: posicionInicial = (Puntero - 1) - lexema.Length; numeroLinea = lineaActual.Numero; componente = ComponenteLexico.CREATE(numeroLinea, posicionInicial, lexema, "LITERAL"); TablaLiterales.obtenerTablaLiterales().AgregarLiteral(componente); Form.literales(componente); continuarEvaluacion = false; break; case 42: DevolverPuntero(); String MensajeError = "Se esperaba cerrar comillas"; Error ErrorComillas = Error.CREATE(lineaActual.Numero, (Puntero - 1) - lexema.Length, caracterActual, MensajeError, "LEXICO"); ManejadorErrores.ObtenerManejadorErrores().AgregarError(ErrorComillas); lexema += "\""; componente = ComponenteLexico.CREATE(lineaActual.Numero, (Puntero - 1) - lexema.Length, lexema, "LITERAL DUMMY"); TablaSimbolos.obtenerTablaSimbolos().AgregarSimbolo(componente); Form.literales(componente); Form.errores(ErrorComillas); continuarEvaluacion = false; break; } } return(componente); }
private void button1_Click(object sender, EventArgs e) { /*BorrarPestañas(); * try * { * TablaPalabrasReservadas.inicializar(); * AnalizadorLexico anaLex = new AnalizadorLexico(); * anaLex.Analizar(); * } * catch (Exception ex) * { * MessageBox.Show(ex.Message); * } * CrearPestañaDeComponentes(); * CrearPestañaDeErrores(); * CrearPestañaDePalabrasReservadas(); * CrearPestañaDeLiterales(); * Entrada.LimpiarLineas();*/ /*BorrarPestañas(); * TablaPalabrasReservadas.inicializar(); * AnalizadorSintactico anaSin = new AnalizadorSintactico(); * anaSin.Analizar(); * CrearPestañaDeComponentes(); * CrearPestañaDeErrores(); * CrearPestañaDePalabrasReservadas(); * CrearPestañaDeLiterales(); * Entrada.LimpiarLineas();*/ /*try * { * BorrarPestañas(); * TablaPalabrasReservadas.inicializar(); * AnalizadorLexico anaLex = new AnalizadorLexico(); * ComponenteLexico componente = anaLex.Analizar(); * * while (componente.Lexema != "@EOF@") * { * componente = anaLex.Analizar(); * } * * CrearPestañaDeComponentes(); * CrearPestañaDeErrores(); * CrearPestañaDePalabrasReservadas(); * CrearPestañaDeLiterales(); * Entrada.LimpiarLineas(); * } * catch(Exception error) * { * MessageBox.Show(error.Message); * }*/ try { BorrarPestañas(); TablaPalabrasReservadas.inicializar(); AnalizadorSintactico anaSin = new AnalizadorSintactico(); anaSin.Analizar(); CrearPestañaDeComponentes(); CrearPestañaDeErrores(); CrearPestañaDePalabrasReservadas(); CrearPestañaDeLiterales(); Entrada.LimpiarLineas(); } catch (Exception ex) { CrearPestañaDeComponentes(); CrearPestañaDeErrores(); CrearPestañaDePalabrasReservadas(); CrearPestañaDeLiterales(); Entrada.LimpiarLineas(); MessageBox.Show(ex.Message); } }
public ComponenteLexico devolverComponenteLexico() { int estadoActual = 0; string lexema = ""; string lexemareserva = ""; bool continuarAnalisis = true; ComponenteLexico componente = null; while (continuarAnalisis) { switch (estadoActual) { case 0: leerSiguienteCaracter(); while (" ".Equals(caracterActual)) { leerSiguienteCaracter(); } if ("A".Equals(caracterActual) || "a".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 1; } else if ("B".Equals(caracterActual) || "b".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 2; } else if ("C".Equals(caracterActual) || "c".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 3; } else if ("D".Equals(caracterActual) || "d".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 4; } else if ("E".Equals(caracterActual) || "e".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 5; } else if ("F".Equals(caracterActual) || "f".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 6; } else if ("G".Equals(caracterActual) || "g".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 7; } else if ("H".Equals(caracterActual) || "h".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 8; } else if ("I".Equals(caracterActual) || "i".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 9; } else if ("J".Equals(caracterActual) || "j".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 10; } else if ("K".Equals(caracterActual) || "k".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 11; } else if ("L".Equals(caracterActual) || "l".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 12; } else if ("M".Equals(caracterActual) || "m".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 13; } else if ("N".Equals(caracterActual) || "n".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 14; } else if ("O".Equals(caracterActual) || "o".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 15; } else if ("P".Equals(caracterActual) || "p".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 16; } else if ("Q".Equals(caracterActual) || "q".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 17; } else if ("R".Equals(caracterActual) || "r".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 18; } else if ("@EOF@".Equals(caracterActual)) { estadoActual = 20; } else if ("@FL@".Equals(caracterActual)) { lexemareserva = lexemareserva + caracterActual; estadoActual = 21; } else if ("S".Equals(caracterActual) || "s".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 22; } else if ("T".Equals(caracterActual) || "t".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 23; } else if ("U".Equals(caracterActual) || "u".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 24; } else if ("V".Equals(caracterActual) || "v".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 25; } else if ("W".Equals(caracterActual) || "w".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 26; } else if ("X".Equals(caracterActual) || "x".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 27; } else if ("Y".Equals(caracterActual) || "y".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 28; } else if ("Z".Equals(caracterActual) || "z".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 29; } else if ("0".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 30; } else if ("1".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 31; } else if ("2".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 32; } else if ("3".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 33; } else if ("4".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 34; } else if ("5".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 35; } else if ("6".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 36; } else if ("7".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 37; } else if ("8".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 38; } else if ("9".Equals(caracterActual)) { lexemareserva = caracterActual; estadoActual = 39; } else { lexemareserva = caracterActual; estadoActual = 19; } break; case 1: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 2: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 3: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 4: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 5: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 6: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 7: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 8: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 9: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 10: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 11: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 12: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 13: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 14: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 15: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 16: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 17: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 18: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 19: continuarAnalisis = false; Error r = Error.crear(lexemareserva, "LEXICOS", "Caracter no valido.", "Ingrese una letra o un numero.", numeroLineaActual, puntero - lexemareserva.Length, (puntero - 1)); ManejadorErrores.obtenerManejadorErrores().reportarError(r); componente = ComponenteLexico.crear(lexemareserva, lexema, "ERROR SINTACTICO", numeroLineaActual, puntero - lexemareserva.Length, (puntero - 1)); //TablaSimbolos.ObtenerInstancia().agregar(componente); TablaErrores.ObtenerInstancia().agregar(r); break; case 20: continuarAnalisis = false; estadoActual = 0; lexemareserva = ""; lexema = ""; //Console.WriteLine("FIN DE ARCHIVO"); componente = ComponenteLexico.crear(lexemareserva, lexema, "FIN DE ARCHIVO", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 21: // Salto de linea continuarAnalisis = true; estadoActual = 0; lexema = lexema + " "; cargarNuevaLinea(); break; case 22: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 23: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 24: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 25: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 26: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 27: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 28: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 29: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 30: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 31: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 32: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 33: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 34: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 35: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 36: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 37: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 38: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; case 39: //leerSiguienteCaracter(); lexema = TablaPalabrasReservadas.ObtenerInstancia().obtenerPalabraReservada(lexemareserva); continuarAnalisis = false; componente = ComponenteLexico.crear(lexemareserva, lexema, "Numero", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1); AgregarComponente(componente); break; } } return(componente); }