Compiladores.
Enviado por Jerry • 27 de Febrero de 2018 • 1.814 Palabras (8 Páginas) • 323 Visitas
...
el desarrollo de un compilador es bueno analizar a profundidad cada una de sus fases si nos enfocamos en la primera fase, la de análisis, es bueno entender todo lo que compete al análisis lexicográfico como habíamos dicho que su función es la de dividir el programa fuente en los componentes básicos y asociarlos a la categoría que pertenezca su proceso conlleva muchas actividades a realizarse, aquí entra mucho la teoría de autómatas, expresiones regulares etc., además de algunos nuevos términos a tomar en cuenta.
El análisis lexicográfico al ser la primera fase a la que llega el compilador es encargada de leer todos los caracteres de entrada para así poderlos agrupar en lexemas y producir como salida una secuencia de tokens , el flujo de estos tokens son enviados al analizador sintáctico para proceder con su análisis, pero eso no es todo lo que compete al analizador lexicográfico, él también es el encargado de eliminar comentarios y espacios en blanco, entiéndase como espacio en blanco a caracteres de espacio, nueva línea, tabulador y tal vez otros caracteres que se utilicen para separar tokens en la entrada; también es el encargado de correlacionar los mensajes de error generados por el compilador con el programa fuente. En base a esto se pudo decir que los analizadores léxicos se dividen en dos procesos, el primero encargado de escanear procesos simples que no requieren la determinación de tokens, y el segundo que sería el propio análisis léxico siendo esta la parte más compleja, aquí se producen la secuencia de tokens de salida
Existen tres términos distintos pero que se relacionan dentro de este proceso de análisis, dos de ellos ya nombrados tokens y lexemas el tercer término es el patrón los cuales los definiremos a continuación:
Token: Componente léxico que cuenta con un nombre de token y un valor atributo opcional.
Patrón: Es una descripción de la forma que pueden tomar los lexemas.
Lexema: Secuencia de caracteres en el programa fuente, que coinciden con el patrón para un token y que el analizador léxico identifica como una instancia de ese token.
Para construir un analizador léxico tendríamos que especificar absolutamente todos los tokens del lenguaje y aquí es donde puede ocurrir problemas, dado el patrón que describe a los lexemas de un token el reconocimiento de los lexemas que debería resultar muy sencillo, pero en algunos lenguajes no los es tomemos como ejemplo de nuevo a Fortran, en el formato fijo todavía permitido en Fortran 90. En la siguiente instrucción:
DO 5 I = 1 .2 5
no es evidente que el primer lexema e s D05I, u na instancia del token identificador, hasta que vemos el punto que va después del 1. Observe que los espacios en blanco en el lenguaje Fortran de formato fijo se ignoran (una convención arcaica). Si hubiéramos visto una coma en vez del punto, tendríamos una instrucción do:
DO 5 I = 1 ,2 5
en donde el primer lexema es la palabra clave DO.
Existen situaciones en las que el analizador léxico no pude proceder , por el hecho de que ninguno de los patrones para los tokens coincide con algún prefijo del resto de entrada cuando ocurre esto se le llama Errores Léxicos, para esto existen diversas estrategias de recuperación para llevar a cabo una de ellas es la de modo pánico que consiste en eliminar caracteres sucesivos del resto de entrada, hasta encontrar un token bien formado al principio de la que haya quedado de entrada, el uso de esta técnica puede confundir al analizador sintáctico, pero en si sería lo más adecuado a seguir, otras acciones que se puede llevar a cabo son las de eliminar un carácter del resto de la entrada, insertar un carácter faltante en el resto de la entrada entre otras.
Existen diferentes métodos para llevar a cabo la construcción de un analizador léxico como el de utilizar un generador, escribir el analizador léxico a mano con un lenguaje de alto nivel, escribir el analizador léxico a mano con un lenguaje ensamblador.
Para llevar a cabo la construcción manual del analizador léxico es necesario saber acerca de autómatas, grafos, expresiones regulares entre otras, el uso de autómatas finitos deterministas es muy importante en este proceso existen varias cuestiones de implementación que tomar en cuenta, como palabras reservadas, el reconocimiento mismo de los tokens para esto utiliza acciones semánticas varias, gestión de buffer y diferentes algoritmos, teniendo en cuenta todos estos aspectos y aplicándolos de manera correcta podemos llevar a cabo la construcción de un analizador lexicográfico.
Como hemos visto la creación de traductores a facilitado mucho la comunicación máquina-persona ahorrándonos tiempo al trabajar con ellas como al momento de diseñarlos, el proceso de diseño de un compilador requiere de muchos conocimientos previos y una exactitud al aplicarlos, a pesar de que el diseño de un compilador conste solo de dos fases hemos visto que cada una cuenta con su debida dificultad, el hecho de explicar cómo funciona el analizador lexicográfico es un ejemplo de ello, es por eso que tener conocimientos previos acerca de lo que es autómatas por ejemplo, es muy importante para poder llevar a cabo el desarrollo de un compilador
Bibliografía
Aho, A. V. (2008). Compiladores principios, tecnicas y herramientas. mexico: Pearson.
Documentos recibidos en clase.
Linkografia:
http://www.dtic.upf.edu/~rramirez/PL2/L02comp.pdf
http://megazar.tripod.com/compil.pdf
...