Example #1
0
        public static void inicializar()
        {
            tabla.Add("ON", ComponenteLexico.crear("ON", Categoria.PALABRA_RESERVADA_ON));
            tabla.Add("OFF", ComponenteLexico.crear("OFF", Categoria.PALABRA_RESERVADA_OFF));
            tabla.Add("SHUTDOWN", ComponenteLexico.crear("SHUTDOWN", Categoria.PALABRA_RESERVADA_SHUTDOWN));
            tabla.Add("IN", ComponenteLexico.crear("IN", Categoria.PALABRA_RESERVADA_IN));
            tabla.Add("R", ComponenteLexico.crear("RANKINE", Categoria.PALABRA_RESERVADA_RANKINE));
            tabla.Add("F", ComponenteLexico.crear("FARENHEIT", Categoria.PALABRA_RESERVADA_FARENHEIT));
            tabla.Add("FAIL", ComponenteLexico.crear("FAIL", Categoria.PALABRA_RESERVADA_FAIL));
            tabla.Add("RESTART", ComponenteLexico.crear("RESTART", Categoria.PALABRA_RESERVADA_RESTART));
            tabla.Add("SUCCESS", ComponenteLexico.crear("SUCCESS", Categoria.PALABRA_RESERVADA_SUCCESS));
            tabla.Add("STATUS", ComponenteLexico.crear("STATUS", Categoria.PALABRA_RESERVADA_STATUS));
            tabla.Add("START", ComponenteLexico.crear("START", Categoria.PALABRA_RESERVADA_START));
            tabla.Add("GET", ComponenteLexico.crear("GET", Categoria.PALABRA_RESERVADA_GET));
            tabla.Add("DOWN", ComponenteLexico.crear("DOWN", Categoria.PALABRA_RESERVADA_DOWN));
            tabla.Add("UP", ComponenteLexico.crear("UP", Categoria.PALABRA_RESERVADA_UP));
            tabla.Add("OUT", ComponenteLexico.crear("OUT", Categoria.PALABRA_RESERVADA_OUT));
            tabla.Add("C", ComponenteLexico.crear("CENTIGRADOS", Categoria.PALABRA_RESERVADA_CENTIGRADOS));
            tabla.Add("K", ComponenteLexico.crear("KELVIN", Categoria.PALABRA_RESERVADA_KELVIN));

            //agregar
        }
Example #2
0
        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 (".".Equals(caracterActual))
                    {
                        lexemareserva += caracterActual;
                        //lexema = lexema + caracterActual;
                        estadoActual = 1;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 40;
                    }
                    else if (caracterActual.Equals("/"))
                    {
                        //lexema = lexema + " ";
                        lexemareserva += caracterActual;
                        estadoActual   = 78;
                    }
                    else if ("@EOF@".Equals(caracterActual))
                    {
                        estadoActual = 77;
                    }
                    else if ("@FL@".Equals(caracterActual))
                    {
                        //lexema = lexema + caracterActual;
                        estadoActual = 76;
                    }
                    else
                    {
                        lexemareserva += caracterActual;
                        lexema        += caracterActual;
                        estadoActual   = 39;
                    }
                    break;

                case 1:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 2;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 3;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 4;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 2:
                    //leerSiguienteCaracter();
                    lexema = lexema + 'E';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 3:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 5;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 6;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 18;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 4:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 25;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 26;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 27;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 5:
                    leerSiguienteCaracter();
                    lexema = lexema + 'I';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 6:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 7;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 8;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 14;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 7:
                    leerSiguienteCaracter();
                    lexema = lexema + 'S';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 8:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 9;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 10;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 12;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 9:
                    leerSiguienteCaracter();
                    lexema = lexema + 'H';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 10:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 11;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 11:
                    leerSiguienteCaracter();
                    lexema = lexema + '5';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 12:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 13:
                    leerSiguienteCaracter();
                    lexema = lexema + '4';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 14:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 15;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 39;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 16;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 15:
                    leerSiguienteCaracter();
                    lexema = lexema + 'V';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 16:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 17;
                    }
                    else
                    {
                        estadoActual = 39;
                    }

                    break;

                case 17:
                    leerSiguienteCaracter();
                    lexema = lexema + '3';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 18:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 19;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 20;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 22;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 19:
                    leerSiguienteCaracter();
                    lexema = lexema + 'U';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 20:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 21;
                    }
                    else
                    {
                        estadoActual = 39;
                    }

                    break;

                case 21:
                    leerSiguienteCaracter();
                    lexema = lexema + 'F';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 22:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 39;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 39;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 23;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 23:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 24;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 24:
                    leerSiguienteCaracter();
                    lexema = lexema + '2';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 25:
                    leerSiguienteCaracter();
                    lexema = lexema + 'A';
                    devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 26:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 28;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 29;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 39;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 27:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 31;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 32;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 33;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 28:
                    leerSiguienteCaracter();
                    lexema = lexema + 'R';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 29:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 30;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 30:
                    leerSiguienteCaracter();
                    lexema = lexema + 'L';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 31:
                    leerSiguienteCaracter();
                    lexema = lexema + 'W';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 32:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 36;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 33:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 37;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 34;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 34:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 35;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 35:
                    leerSiguienteCaracter();
                    lexema = lexema + '1';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 36:
                    leerSiguienteCaracter();
                    lexema = lexema + 'P';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 37:
                    leerSiguienteCaracter();
                    lexema = lexema + 'J';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 38:    // el / retorna Lexema


                    leerSiguienteCaracter();
                    break;

                case 39:     // ESTADO DE ERROR

                    bool control = controlExcepcion(caracterActual);
                    while (!control)
                    {
                        leerSiguienteCaracter();

                        control = controlExcepcion(caracterActual);
                        if (!control)
                        {
                            lexemareserva += caracterActual;
                        }
                    }

                    //devolverPuntero();
                    Error r = Error.crear(lexemareserva, "LEXICOS", "ERROR CADENA", "No se reconoce ninguna letra con la cadena ingresada", 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);


                    continuarAnalisis = false;

                    break;

                case 40:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 41;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 47;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 42;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 41:
                    leerSiguienteCaracter();
                    lexema = lexema + 'T';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 42:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 43;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 49;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 44;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 43:
                    leerSiguienteCaracter();
                    lexema = lexema + 'M';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 44:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 45;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 69;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 46;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 45:
                    leerSiguienteCaracter();
                    lexema = lexema + 'O';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 46:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 70;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 72;
                    }
                    break;

                case 47:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 48;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 57;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 58;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 48:
                    leerSiguienteCaracter();
                    lexema = lexema + 'N';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 49:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 50;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 51;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 55;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 50:
                    leerSiguienteCaracter();
                    lexema = lexema + 'G';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 51:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 52;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 53;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 39;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 52:
                    leerSiguienteCaracter();
                    lexema = lexema + 'Z';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 53:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 54;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 54:
                    leerSiguienteCaracter();
                    lexema = lexema + '7';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 55:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 56;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 56:
                    leerSiguienteCaracter();
                    lexema = lexema + 'Q';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 57:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 59;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 60;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 61;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 58:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 66;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 67;
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 79;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 59:
                    leerSiguienteCaracter();
                    lexema = lexema + 'D';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 60:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 62;
                    }
                    else if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 63;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 61:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 65;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 62:
                    leerSiguienteCaracter();
                    lexema = lexema + 'B';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 63:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 64;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 64:
                    leerSiguienteCaracter();
                    lexema = lexema + '6';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 65:
                    leerSiguienteCaracter();
                    lexema = lexema + 'X';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 66:
                    leerSiguienteCaracter();
                    lexema = lexema + 'K';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 67:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 68;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 68:
                    leerSiguienteCaracter();
                    lexema = lexema + 'C';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 69:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals("."))
                    {
                        lexemareserva += caracterActual;
                        estadoActual   = 74;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 70:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 71;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 71:
                    leerSiguienteCaracter();
                    lexema = lexema + '9';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 72:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 73;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 73:
                    leerSiguienteCaracter();
                    lexema = lexema + '0';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 74:
                    leerSiguienteCaracter();
                    if (caracterActual.Equals(" "))
                    {
                        estadoActual = 75;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 75:
                    leerSiguienteCaracter();
                    lexema = lexema + '8';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Número", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 76:
                    //Salto de línea
                    continuarAnalisis = true;
                    estadoActual      = 0;
                    lexema            = lexema + " ";
                    cargarNuevaLinea();
                    break;

                case 77:
                    //Cargar componente
                    continuarAnalisis = false;
                    estadoActual      = 0;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "FIN DE ARCHIVO", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 78:
                    leerSiguienteCaracter();
                    continuarAnalisis = true;
                    estadoActual      = 0;
                    lexema            = lexema + " ";
                    //devolverPuntero();
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Espacio", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;

                case 79:
                    leerSiguienteCaracter();
                    if (" ".Equals(caracterActual))
                    {
                        estadoActual = 80;
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                    break;

                case 80:
                    //leerSiguienteCaracter();
                    lexema = lexema + 'Y';
                    devolverPuntero();

                    continuarAnalisis = false;
                    componente        = ComponenteLexico.crear(lexemareserva, lexema, "Letra", numeroLineaActual, puntero - lexemareserva.Length, puntero - 1);
                    AgregarComponente(componente);
                    break;
                }
            }

            return(componente);
        }
Example #3
0
 public static void inicializar()
 {
     tabla.Add("int", ComponenteLexico.crear("int", Categoria.PALABRA_RESERVADA_ON));
     tabla.Add("on", ComponenteLexico.crear("on", Categoria.PALABRA_RESERVADA_OFF));
     tabla.Add("off", ComponenteLexico.crear("off", Categoria.PALABRA_RESERVADA_OFF));
 }
Example #4
0
        public ComponenteLexico Analizar()
        {
            ComponenteLexico componenteLexico = new ComponenteLexico();

            limpiarLexema();
            int  estadoActual      = 0;
            bool continuarAnalisis = true;

            while (continuarAnalisis)
            {
                if (estadoActual == 0)
                {
                    LeerSiguienteCaracter();
                    DevorarEspaciosBlanco();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "#")
                    {
                        estadoActual = 6;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "K")
                    {
                        estadoActual = 60;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "C")
                    {
                        estadoActual = 58;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "I")
                    {
                        estadoActual = 7;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "O")
                    {
                        estadoActual = 9;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "U")
                    {
                        estadoActual = 15;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "D")
                    {
                        estadoActual = 17;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "G")
                    {
                        estadoActual = 21;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "S")
                    {
                        estadoActual = 24;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "R")
                    {
                        estadoActual = 46;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "F")
                    {
                        estadoActual = 54;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "@FL@")
                    {
                        estadoActual = 61;
                    }
                    else if (CaracterActual == "@EOF@")
                    {
                        estadoActual = 62;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 1)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 2;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 96;
                    }
                }

                else if (estadoActual == 2)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 96;
                    }
                }
                else if (estadoActual == 3)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 5;
                    }
                }
                else if (estadoActual == 4)
                {
                    estadoActual = 64;
                }

                else if (estadoActual == 5)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.VALOR_ENVIO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 6)
                {
                    estadoActual = 65;
                }

                else if (estadoActual == 7)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "N")
                    {
                        estadoActual = 8;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 83;
                    }
                }
                else if (estadoActual == 8)
                {
                    estadoActual = 78;
                }
                else if (estadoActual == 9)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "U")
                    {
                        estadoActual = 10;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "N")
                    {
                        estadoActual = 12;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "F")
                    {
                        estadoActual = 13;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 10)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 11;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 85;
                    }
                }
                else if (estadoActual == 11)
                {
                    estadoActual = 66;
                }
                else if (estadoActual == 12)
                {
                    estadoActual = 67;
                }
                else if (estadoActual == 13)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "F")
                    {
                        estadoActual = 14;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 86;
                    }
                }
                else if (estadoActual == 14)
                {
                    estadoActual = 68;
                }
                else if (estadoActual == 15)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "P")
                    {
                        estadoActual = 16;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 88;
                    }
                }
                else if (estadoActual == 16)
                {
                    estadoActual = 69;
                }
                else if (estadoActual == 17)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "O")
                    {
                        estadoActual = 18;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 89;
                    }
                }
                else if (estadoActual == 18)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "W")
                    {
                        estadoActual = 19;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 89;
                    }
                }
                else if (estadoActual == 19)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "N")
                    {
                        estadoActual = 20;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 89;
                    }
                }
                else if (estadoActual == 20)
                {
                    estadoActual = 70;
                }
                else if (estadoActual == 21)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "E")
                    {
                        estadoActual = 22;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 90;
                    }
                }
                else if (estadoActual == 22)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 23;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 90;
                    }
                }
                else if (estadoActual == 23)
                {
                    estadoActual = 71;
                }
                else if (estadoActual == 24)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 25;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "H")
                    {
                        estadoActual = 32;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "U")
                    {
                        estadoActual = 40;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 25)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "A")
                    {
                        estadoActual = 26;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 26)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "R")
                    {
                        estadoActual = 27;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "T")
                    {
                        estadoActual = 29;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 27)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 28;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 92;
                    }
                }
                else if (estadoActual == 28)
                {
                    estadoActual = 79;
                }
                else if (estadoActual == 29)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "U")
                    {
                        estadoActual = 30;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 93;
                    }
                }
                else if (estadoActual == 30)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 31;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 93;
                    }
                }
                else if (estadoActual == 31)
                {
                    estadoActual = 72;
                }
                else if (estadoActual == 32)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "U")
                    {
                        estadoActual = 33;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 33)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 34)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "D")
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 35)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "O")
                    {
                        estadoActual = 36;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 36)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "W")
                    {
                        estadoActual = 37;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 37)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "N")
                    {
                        estadoActual = 38;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 38)
                {
                    estadoActual = 80;
                }

                else if (estadoActual == 39)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.FARENHEIT, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 40)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "C")
                    {
                        estadoActual = 41;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 41)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "C")
                    {
                        estadoActual = 42;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 42)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "E")
                    {
                        estadoActual = 43;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 43)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 44;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 44)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 45;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 45)
                {
                    estadoActual = 73;
                }

                else if (estadoActual == 46)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "E")
                    {
                        estadoActual = 47;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 53;
                    }
                }
                else if (estadoActual == 47)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 48;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 48)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 49;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 49)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "A")
                    {
                        estadoActual = 50;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 50)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "R")
                    {
                        estadoActual = 51;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 51)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 52;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 52)
                {
                    estadoActual = 74;
                }
                else if (estadoActual == 53)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.RANKINE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }

                else if (estadoActual == 54)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "A")
                    {
                        estadoActual = 55;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                }
                else if (estadoActual == 55)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "I")
                    {
                        estadoActual = 56;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 91;
                    }
                }
                else if (estadoActual == 56)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "L")
                    {
                        estadoActual = 57;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 91;
                    }
                }
                else if (estadoActual == 57)
                {
                    estadoActual = 75;
                }
                else if (estadoActual == 58)
                {
                    estadoActual = 76;
                }
                else if (estadoActual == 59)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.KELVIN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 60)
                {
                    estadoActual = 59;
                }
                else if (estadoActual == 61)
                {
                    CargarNuevaLinea();
                    limpiarLexema();
                    estadoActual = 0;
                }
                else if (estadoActual == 62)
                {
                    estadoActual = 77;
                }
                else if (estadoActual == 64)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.VALOR_RETORNO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 65)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.SEPARADOR, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 66)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.OUT, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 72)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.STATUS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 73)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.SUCCESS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 74)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.RESTART, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //eof
                else if (estadoActual == 77)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.EOF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    limpiarLexema();
                }
                else if (estadoActual == 78)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.IN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 67)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.ON, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 68)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.OFF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 69)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.UP, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 70)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.DOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 71)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.GET, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 75)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.FAIL, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 76)
                {
                    continuarAnalisis = false;;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.CENTIGRADOS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 79)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.START, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 80)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.SHUTDOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }

                //stopper
                else if (estadoActual == 63)
                {
                    Error error = Error.CrearErrorLexico(
                        CaracterActual,
                        Categoria.CARACTER_NO_VALIDO, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Caracter no reconocido", "Leí " + CaracterActual,
                        "Asegurese que el caracter sera valido");

                    GestorErrores.Reportar(error);

                    throw new Exception("Se ha presentado un error de tipo STOPPER durante el análisis lexico. Por favor verifique la consola de errores");
                }
                else if (estadoActual == 83)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.IN, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "IN no válido",
                        "Leí " + lexema + " y se esperaba un IN",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("IN", Categoria.IN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 85)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.OUT, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "OUT no válido",
                        "Leí " + lexema + " y se esperaba un OUT",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("OUT", Categoria.OUT, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 86)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.OFF, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "OFF no válido",
                        "Leí " + lexema + " y se esperaba un OFF",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("OFF", Categoria.OFF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 88)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.UP, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "UP no válido",
                        "Leí " + lexema + " y se esperaba un UP",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("UP", Categoria.UP, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 89)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.DOWN, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "DOWN no válido",
                        "Leí " + lexema + " y se esperaba un DOWN",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("DOWN", Categoria.DOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 90)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.GET, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "GET no válido",
                        "Leí " + lexema + " y se esperaba un GET",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("GET", Categoria.GET, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 92)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.START, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "START no válido",
                        "Leí " + lexema + " y se esperaba un START",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("START", Categoria.START, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 93)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.STATUS, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "STATUS no válido",
                        "Leí " + lexema + " y se esperaba un STATUS",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("STATUS", Categoria.STATUS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 94)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.SHUTDOWN, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "SHUTDOWN no válido",
                        "Leí " + lexema + " y se esperaba un SHUTDOWN",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("SHUTDOWN", Categoria.SHUTDOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 95)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.SUCCESS, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "SUCCESS no válido",
                        "Leí " + lexema + " y se esperaba un SUCCESS",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("SUCCESS", Categoria.SUCCESS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 87)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.RESTART, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "RESTART no válido",
                        "Leí " + lexema + " y se esperaba un RESTART",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("RESTART", Categoria.RESTART, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 91)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.FAIL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "FAIL no válido",
                        "Leí " + lexema + " y se esperaba un FAIL",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("FAIL", Categoria.FAIL, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 96)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.VALOR_ENVIO, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "VALOR_ENVIO no válido",
                        "Leí " + lexema + " y se esperaba un VALOR_ENVIO",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("000", Categoria.VALOR_ENVIO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
            }

            return(componenteLexico);
        }
Example #5
0
        public ComponenteLexico Analizar()
        {
            ComponenteLexico componenteLexico = new ComponenteLexico();

            limpiarLexema();
            int  estadoActual      = 0;
            bool continuarAnalisis = true;

            while (continuarAnalisis)
            {
                if (estadoActual == 0)
                {
                    LeerSiguienteCaracter();
                    DevorarEspaciosBlanco();

                    if (EsLetra(CaracterActual) || CaracterActual.Equals("$") || CaracterActual.Equals("_"))
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else if (EsDigito(CaracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("+"))
                    {
                        estadoActual = 5;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("-"))
                    {
                        estadoActual = 6;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 7;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("/"))
                    {
                        estadoActual = 8;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("("))
                    {
                        estadoActual = 10;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(")"))
                    {
                        estadoActual = 11;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("@EOF@"))
                    {
                        estadoActual = 12;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("="))
                    {
                        estadoActual = 19;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("<"))
                    {
                        estadoActual = 20;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(">"))
                    {
                        estadoActual = 21;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(":"))
                    {
                        estadoActual = 22;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("!"))
                    {
                        estadoActual = 30;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 18;
                    }
                }
                else if (estadoActual == 1)
                {
                    LeerSiguienteCaracter();

                    if (EsDigito(CaracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(","))
                    {
                        estadoActual = 2;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 14;
                    }
                }
                else if (estadoActual == 2)
                {
                    LeerSiguienteCaracter();
                    if (EsDigito(CaracterActual))
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 17;
                    }
                }
                else if (estadoActual == 3)
                {
                    LeerSiguienteCaracter();
                    if (EsDigito(CaracterActual))
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 15;
                    }
                }
                else if (estadoActual == 4)
                {
                    LeerSiguienteCaracter();
                    if (EsLetraODigito(CaracterActual) || CaracterActual.Equals("$") || CaracterActual.Equals("_"))
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 16;
                    }
                }
                else if (estadoActual == 5)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.SUMA, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 6)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.RESTA, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 7)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MULTIPLICACION, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 8)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("/"))
                    {
                        estadoActual = 36;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 33;
                    }
                }
                else if (estadoActual == 9)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MODULO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 10)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.PARENTESIS_ABRE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 11)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.PARENTESIS_CIERRA, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //fin de archivo
                else if (estadoActual == 12)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.EOF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    //TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //cargar nueva linea
                else if (estadoActual == 13)
                {
                    CargarNuevaLinea();
                    limpiarLexema();
                    estadoActual = 0;
                }

                else if (estadoActual == 14)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.ENTERO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 15)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.NUMERO_DECIMAL, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 16)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.IDENTIFICADOR, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 17)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.NUMERO_DECIMAL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Numero decimal no válido", "Leí" + CaracterActual + "y esperaba un digito del cero al 9",
                        "asegurese que el caracter que reciba sea un caracter del 0 al 9");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.NUMERO_DECIMAL;
                    componenteLexico.Lexema          = lexema + "0";
                    componenteLexico.NumeroLinea     = NumeroLineaActual;
                    componenteLexico.PosicionInicial = Puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = Puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;
                    MensajeRetorno(componenteLexico);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 18)
                {
                    Error error = Error.CrearErrorLexico(
                        CaracterActual,
                        Categoria.CARACTER_NO_VALIDO, NumeroLineaActual,
                        Puntero - 1, Puntero - 1,
                        "Caracter no reconocido", "Leí" + CaracterActual,
                        "Asegurese que el caracter sera valido");

                    GestorErrores.Reportar(error);

                    throw new Exception("Se ha presentado un error de tipo STOPPER durante el analisis lexico. Por favor verifique la consola de errores");
                }
                else if (estadoActual == 19)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = NumeroLineaActual;
                    componenteLexico.PosicionInicial = Puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = Puntero - 1;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 20)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals(">"))
                    {
                        estadoActual = 23;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("="))
                    {
                        estadoActual = 24;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 24;
                    }
                }
                else if (estadoActual == 21)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("="))
                    {
                        estadoActual = 26;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 27;
                    }
                }
                else if (estadoActual == 22)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("="))
                    {
                        estadoActual = 28;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 29;
                    }
                }
                else if (estadoActual == 23)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.DIFERENTE_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 24)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MENOR_IGUAL_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 25)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MENOR_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 26)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MAYOR_IGUAL_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 27)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MAYOR_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 28)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.ASIGNACION, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    MensajeRetorno(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 29)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.NUMERO_DECIMAL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Asignación no válida", "Leí" + CaracterActual + " y esperaba =",
                        "asegurese que el caracter que reciba sea =");

                    GestorErrores.Reportar(error);
                }
                else if (estadoActual == 30)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("="))
                    {
                        estadoActual = 31;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 32;
                    }
                }
                else if (estadoActual == 31)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.DIFERENTE_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    MensajeRetorno(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 32)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.NUMERO_DECIMAL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Asignación no válida", "Leí" + CaracterActual + " y esperaba *",
                        "asegurese que el caracter que reciba sea *");

                    GestorErrores.Reportar(error);
                }
                else if (estadoActual == 33)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.DIVISION, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //revisar
                else if (estadoActual == 34)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 37;
                        CargarNuevaLinea();
                    }
                    else if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 35)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("/"))
                    {
                        estadoActual = 0;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 36)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 36;
                    }
                }
                //estado para arreglar
                else if (estadoActual == 37)
                {
                    CargarNuevaLinea();

                    if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 34;
                    }
                }
            }

            return(componenteLexico);
        }
        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);
        }
Example #7
0
 private static void inicializar()
 {
     tabla.Add("INT", ComponenteLexico.crear("INT", Categoria.PALABRA_RESERVADA_INT));
     tabla.Add("ON", ComponenteLexico.crear("ON", Categoria.PALABRA_RESERVADA_ON));
     tabla.Add("OFF", ComponenteLexico.crear("OFF", Categoria.PALABRA_RESERVADA_OFF));
 }