Пример #1
0
        public void Validacion_ER(string id)
        {
            Parea(Token.Tipo.S_DOS_PUNTOS);
            string lexema = tokenActual.GetValor();

            lexema = lexema.Remove(0, 1);
            lexema = lexema.Remove(lexema.Length - 1, 1);
            int filaInicio    = tokenActual.GetFila();
            int columnaInicio = tokenActual.GetColumna() + 1;

            Parea(Token.Tipo.CADENA);
            Parea(Token.Tipo.S_PUNTO_Y_COMA);
            //Aqui continua la validacion del lexema.
            consola += "**Evaluando Expresion Regular: " + id + "**\n";
            try
            {
                Simbolo simbolo = tablaSimbolos[id];    //Posible Exception.
                if (!simbolo.GetTipo().Equals("Estado"))
                {
                    throw new KeyNotFoundException();   //Como no es compatible el tipo entonces no se puede trabajar con él. Se manda Exception.
                }
                Cerradura estado   = (Cerradura)simbolo.GetValor();
                int       contador = 0;
                if (estado.Validar(lexema, ref contador, ref filaInicio, ref columnaInicio, ref ListaTokensAnalizados))
                {
                    consola += "El lexema: \"" + lexema + "\", es válido para la Expresion Regular: " + id + "\n";
                }
                else
                {
                    consola += "El lexema: \"" + lexema + "\", no es válido para la Expresion Regular: " + id + "\n";
                }
            }
            catch (KeyNotFoundException)
            {
                consola += "No se pudo validar el lexema: " + lexema + ", no se encontró su expresión regular\n**Fin evaluacion**\n";
            }
        }