Example #1
0
 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();
     }
 }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }