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:
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!!!!
Hola Alexandrita, nunca me imagine que las ingenieras en sistemas fueran tan preciosas, :D, me parece muy interesante tu blog
ResponderEliminarMuchas gracias por tu explicación tan detallada Axelandrita me ha servido mucho para mi proyecto de Lenguajes
ResponderEliminarGracias por el comentario Chivo ;) que bueno ser de ayuda!!!
ResponderEliminarGracias por la información, tambien soy de la USAC.
ResponderEliminarBuen blog. Salu2!
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.
ResponderEliminarSaludos
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
ResponderEliminarhola 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!
ResponderEliminarHola, 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