viernes, 24 de abril de 2009

Algoritmo para pasar un AFD hacer Analizador Lexico

Hoy escribire de como se puede mapear un AFD (Automata Finito Deterministico) hacia un analizador Lexico, les dare el algoritmo basico para esto: 

Primer Paso:

Realizar el método del árbol, con sus expresiones regulares unidas por or “|” para llegar a su AFD

Segundo Paso:

Reglas:

  • Cada estado se convierte en un Case
  • Cada transición se convierte en un If el cual debe estar dentro de un case.
  • En cada estado de aceptación, se agrega un else if para aceptar el lexema.


Tercer Paso:

Variables

Estado: el cual nos indicara en que estado nos encontramos. Es el valor que se utiliza en el switch de comparación.
Índice: nos dice la posición en la cual nos estamos moviendo dentro de nuestro archivo de entrada.
Lexema: será la variable donde estaremos concatenando la información leída del archivo de entrada.
Archivo Entrada: el cual contendrá lo que leamos del archivo de entrada.

Cuarto Paso:

Algoritmo Básico

Inicializar Variables {

  Mientras No sea EOF{

   Incrementamos índice

   Leemos carácter del Archivo de Entrada en la posición índice

    Switch ( estado ) { 
        En caso que sea 1
            Si (carácter es igual a transicion1)
                Cambiar estado
                Lexema se le agrega el nuevo carácter
            Sino Si (carácter es igual a transicion2)
                Cambiar estado
                Lexema se le agrega el nuevo carácter
                ….
            Sino Si (carácter es igual a transiciónN)
                Cambiar estado
                Lexema se le agrega el nuevo carácter
            Sino es ninguna de las anteriores
                Es error lexico
    En caso que sea 2
            Si (carácter es igual a transicion1)
            Sino Si (carácter es igual a transicion2)
            ….
            Sino Si (carácter es igual a transiciónN)
                En caso que sea 3 y este sea un estado aceptación
                Aceptar Lexema asociado a Token
                Reiniciar estado
                Limpiar el Lexema
                Retroceder el indice.

}//Fin Switch

 }//Fin Mientras

}//Fin de Metodo



Espero les sirva este algoritmo, muy pronto estare subiendo ejemplos de como llegar al AFD y de como implementar el analizador lexico en java. 

Exitos!!!! 

8 comentarios:

  1. Hola Alexandrita, nunca me imagine que las ingenieras en sistemas fueran tan preciosas, :D, me parece muy interesante tu blog

    ResponderEliminar
  2. Muchas gracias por tu explicación tan detallada Axelandrita me ha servido mucho para mi proyecto de Lenguajes

    ResponderEliminar
  3. Gracias por el comentario Chivo ;) que bueno ser de ayuda!!!

    ResponderEliminar
  4. Gracias por la información, tambien soy de la USAC.
    Buen blog. Salu2!

    ResponderEliminar
  5. Hola como estas, te felicito por tu blog tiene buena info, con lo del algoritmo, ne tendras algun ejemplo en c/c++ de eso. Tengo que hacer un proyecto igual a este pero no se mucho de programacion en c/c++, solo lo quiero para guiarme para hacer hacer un analizador lexico.
    Saludos

    ResponderEliminar
  6. hola diskulpa de kasualidad me podrias proporcionar tu codigo en java del analizador lexico sk tengo k entregar un trabajo con un tipo minimanual de un analizador lexico, graxias

    ResponderEliminar
  7. hola compañera!! sinceramente te agradezco infinitamente por tu algoritmo, enserio me has conquistado con esto! te felicito, yo tambien soy estudiante de sistemas de la USAC, y pues he pasado buscando esta info por todos lados hasta que cai aqui sin querer, y pues enserio te repito infinitas gracias te mereces un 100!

    ResponderEliminar
  8. Hola, podrías ayudarme a realizar un analizador léxico-sintáctico a partir de cierta gramática, me urge y no sé como empezar, pro favor.....

    ResponderEliminar