Escolar Documentos
Profissional Documentos
Cultura Documentos
TRADUCTORES E INTERPRETADORES
Unidad II
Analizador lxico
Parte I
1 de 14
Analizador lxico
Introduccin
El diseo a mano de un analizador lxico comienza por un diagrama u otra descripcin
de los lexemas de cada token.
As se puede escribir cdigo para identificar cada ocurrencia de cada lexema en la
entrada y devolver la informacin acerca del token.
Se puede crear de forma automtica, especificando los patrones de los lexemas a un
generador de analizadores lxicos.
Esta manera agiliza la modificacin de nuestro analizador debido a que se reescriben
solo los patrones y no todo el cdigo.
2 de 14
Analizador lxico
Funcin del analizador lxico
La principal tarea del analizador lxico es leer los caracteres de entrada del programa
fuente, agruparlos en lexemas y producir como salida una secuencia de tokens para
cada lexema en el programa fuente.
El flujo de tokens es enviado al analizador sintctico para su anlisis.
El analizador lxico interacta con la tabla de smbolos. Cuando el analizador lxico
encuentra un lexema que constituye a un identificador, debe introducir ese lexema en
la tabla de smbolos.
En algunos casos, el analizador lxico puede leer la informacin relacionada con el tipo
de informacin de la tabla de smbolos, como una ayuda para determinar el token
apropiado que debe pasar al analizador sintctico.
3 de 14
Analizador lxico
Funcin del analizador lxico
Analizador lxico
Funcin del analizador lxico
El analizador realiza otras tareas adicionales a identificar los lexemas.
Una es eliminar los comentarios y espacios en blanco dentro de la entrada.
Otra de las tareas es correlacionar los mensajes de error generados por el compilador
con el programa fuente.
Los analizadores lxicos pueden dividirse en una cascada de dos procesos:
a) Escaneo: consiste en los procesos simples que no requieren la determinacin de
tokens de la entrada.
b) Anlisis lxico: un escaneo que produce la secuencia de tokens.
5 de 14
Analizador lxico
Comparacin entre anlisis lxico y sintctico
Existen razones para dividir el anlisis lxico del parsing:
1. Sencillez en el diseo, simplificacin de al menos una de las fases.
2. Mejorar la eficiencia del compilador. Un analizador lxico por separado permite
aplicar tcnicas especializadas que sirven solo para la tarea lxica.
3. Mejora la portabilidad del compilador.
6 de 14
Analizador lxico
Tokens, patrones y lexemas
Token: Un par que consiste en un nombre y un valor de atributo opcional. Representa
un tipo de unidad lxica, como una palabra clave o una secuencia que denotan un
identificador. Los nombre son los smbolos de entrada que procesa el analizador
sintctico.
Patrn: Una descripcin de la forma que pueden tomar los lexemas de un token. Es
solo la secuencia de caracteres que forman la palabra clave. Es una estructura ms
compleja que se relaciona mediante muchas cadenas.
Lexema: Una secuencia de caracteres en el programa fuente que coincide con el
patrn de un token y que el analizador lxico identifica como una instancia de ese
token.
7 de 14
Analizador lxico
Tokens, patrones y lexemas
8 de 14
Analizador lxico
Atributos para los tokens
Cuando ms de un lexema puede coincidir con un patrn, el analizador lxico debe
proporcionar a las subsiguientes fases del compilador informacin adicional sobre el
lexema especfico que coincidi.
Es muy importante para el generador de cdigo saber qu lexema se encontr en el
programa fuente. Es por esto que el analizador lxico le devuelve al sintctico, adems
del nombre del token, un valor de atributo que describe al lexema de ese token.
Mientras el nombre influye en el anlisis sintctico, el valor del atributo influye en la
traduccin de los tokens despus de este anlisis.
Mucha de la informacin atribuida a los lexemas es almacenada en la tabla de
smbolos.
9 de 14
Analizador lxico
Errores lxicos
El analizador lxico requiere de todos los componentes para conocer si existe un error
en el programa fuente.
Cuando el anlisis lxico no encuentra una coincidencia para una determinada palabra
reservada, puede considerarlo como un lexema asignado a un identificador, y dejar
que otra fase de la compilacin se encargue de arrojar el error correspondiente.
Suponiendo que no se pueda encontrar una coincidencia en ninguno de los tokens, ya
que ninguno de los patrones coincide con el prefijo del resto de la entrada. Se recurre
a una tcnica de recuperacin llamada modo de pnico.
Se eliminan caracteres sucesivos de la entrada hasta encontrar un token que coincida
con el principio de lo que ha quedado de la entrada.
10 de 14
Analizador lxico
Errores lxicos
Otras posibles tcnicas de recuperacin pueden ser:
1. Eliminar un carcter del resto de la entrada.
2. Insertar un carcter faltante en el resto de la entrada.
3. Sustituir un carcter por otro.
4. Transponer dos caracteres adyacentes.
Existe un mtodo para intentar reparar la entrada en solamente lexemas vlidos, pero
requiere de un costo muy elevado.
11 de 14
Analizador lxico
Buffer en la entrada
Existen formas de agilizar la simple pero importante tarea de leer el programa fuente.
Se dificulta en el momento en el que debemos buscar uno o ms caracteres ms all
del siguiente lexema para encontrar el lexema correcto.
12 de 14
Analizador lxico
Buffer en la entrada
Cada bfer es del mismo tamao N, el tamaa de un bloque de disco (4096 bytes).
Mediante el comando de lectura de un sistema, se leen N caracteres y se colocan en
un bfer.
Si quedan menos de N caracteres en la entrada, entonces el carcter especial
representado por eof marca el final de la entrada y es distinto a cualquiera de los
posibles caracteres del programa fuente.
Analizador lxico
Buffer en la entrada
14 de 14