El documento habla sobre los generadores de analizadores léxicos. Explica que el análisis léxico es la primera fase del compilador donde se agrupan los tokens del código fuente y se eliminan elementos innecesarios. Luego, menciona que herramientas como Lex y Flex permiten generar analizadores léxicos a partir de expresiones regulares. Finalmente, brinda detalles sobre cómo funcionan Lex, Flex y JTLexx al generar el código del analizador léxico.
2. 2
El análisis léxico constituye la primera fase, aquí se lee el programa fuente de
izquierda a derecha y se agrupa en componentes léxicos (tokens), que son
secuencias de caracteres que tienen un significado. Además, todos los espacios
en blanco, líneas en blanco, comentarios y demás información innecesaria se
elimina del programa fuente. También se comprueba que los símbolos del
lenguaje (palabras clave, operadores,…) se han escrito correctamente.
Como la tarea que realiza el analizador léxico es un caso especial de
coincidencia de patrones, se necesitan los métodos de especificación y
reconocimiento de patrones, y estos métodos son principalmente las
expresiones regulares y los autómatas finitos. Sin embargo, un analizador léxico
también es la parte del traductor que maneja la entrada del código fuente, y
puesto que esta entrada a menudo involucra un importante gasto de tiempo, el
analizador léxico debe funcionar de manera tan eficiente como sea posible.
3. Son pocos los errores simplemente en el nivel léxico ya
que tiene una visión muy restringida de un programa
fuente. El analizador léxico debe devolver el componente
léxico de un identificador y dejar a otra fase se ocupe de
los errores.
Suponga que una situación en la cual el analizador léxico
no puede continuar porque ninguno de los patrones
concuerda con un prefijo de la entrada. Tal vez la
estrategia de recuperación más sencilla sea recuperación
“EN MODO PANICO” (este método de recuperación es
donde se borra caracteres sucesivos de la entrada hasta
que el analizador léxico pueda encontrar un componente
léxico bien formado). ¡¡Los programas no siempre son
correctos!!
3
4. El compilador
tiene que:
Reportar clara y exactamente la presencia de
errores
Recuperarse de cada error lo suficientemente rápido
para poder detectar errores subsiguientes:
Tratar de evitar mensajes falsos de error.
Un error que produce un token erróneo.
Errores léxicos posibles.
AGREGAR UN PIE DE PÁGINA 4
6. ¿Que es?
6
Un analizador léxico es un modo destinado a leer
caracteres del archivo de entrada, donde se encuentra la
cadena a analizar, reconocer subcadenas que
correspondan a símbolos del lenguaje y retornar los tokens
correspondientes y sus atributos.
Generador LEX:
Es un programa para generar analizadores léxicos, se
utiliza comúnmente con el programa yacc que se utiliza
para generar análisis sintáctico, escrito originalmente por
Eric Schmidt y Mike Lesk, es el analizador léxico estándar
de POSIX. Lex toma como entrada una especificación de
analizador léxico y devuelve como salida el código fuente
implementando el analizador léxico en C.
Esquema general
7. 7
Generador FLEX
Es una herramienta para la generación de programas que realizan
corcondancia de patrones en texto, es una herramienta para generar
escanes. FLEX lee los archivos de entrada dados, o la entrada estándar si
no se ha indicado ningún nombre de archivo, con la descripción de un
escáner a generar. La descripción se encuentra en forma de parejas de
expresiones regulares y código C, denominadas reglas.
Generador JTLexx
Permite expresar conjuntamente sintaxis y semántica al estilo de los
esquemas de traducción. A su vez el proceso de conjunto de atributos es
implementado por JTLex por un autómata finito traductor con las ventajas
de eficiencia que esto supone. Una especificación JTLex permite no solo
asociar procedimiento, o acción a cada expresión regular, sino también a
cada ocurrencia de un símbolo dentro de la expresión.
Esquema de funcionamiento:
Gramática: