You are on page 1of 15

5.

ANLISIS LXICO
Compiladores
Lenguajes y Autmatas I
MTI. Yadira Esther Jimnez Prez

Compilador
Es un programa que lee un programa escrito en un
lenguaje, el lenguaje fuente, y la traduce a un
programa equivalente en otro lenguaje, el lenguaje
objeto .
Como parte importante de este proceso de
traduccin, el compilador informa a su usuario de la
presencia de errores en el programa fuente.

Compilador Programa objeto Programa fuente
Mensaje error
Fases de un compilador
Anlisis Lxico
El analizador lxico lee el cdigo fuente de
izquierda a derecha y lo agrupa en tokens.
Funciones del Analizador Lex
Convierte el programa fuente en una cadena de
tokens
Para reconocer el token usa un patrn, una regla que describe
como se forman las cadenas que corresponden a un token.
Salta comentarios y espacios en blanco (tabuladores,
saltos de lnea...)
Tener el registro de la lnea del archivo fuente que
esta siendo analizada
Genera mensajes de error lxico, y se recupera del
error
Convierte los valores literales al tipo que corresponda
Si la entrada debe obedecer a un formato, verifica el
formato Ej. Fortran, Cobol
Tokens y Lexemas
Token:
Elemento bsico del lenguaje
Unidad lxica indivisible
Identifica una entidad lgica dentro del lenguaje
Incluyen: Palabras Reservadas, Constantes,
Operadores, Signos de Puntuacin e Identificadores
Lexema:
La cadena original que se identifica como token
No hay correspondencia 1-1 entre token-lexema
Ejemplos de Tokens y Lexemas
Construccin de generadores
automticos de scanners
Construir un NFA para cada una de las expresiones
regulares a reconocer
Aplicar una unin a todas las expresiones (unirlas con
un mismo estado de inicio -usando transiciones -),
pero sin unirlas en un solo estado final (se requiere un
estado de aceptacin para cada token de tal forma que
se pueda identificar el token reconocido)
Generar el DFA
Hacer el programa de recorrido de DFA teniendo en
cuenta que un lexema puede pasar por varios estados
de aceptacin (crear una lista de los estados de
aceptacin por los que paso)
Atributos para tokens
El analizador recopila informacin sobre los
tokens a medida que los reconoce. Por ejemplo:
token num, pero... que es lexema?

Cuando la cadena de entrada permite reconocer
mas de un token, esta informacin puede
ayudar a desambiguar.
Estrategias de recuperacin
de errores lxicos
Modo Pnico: obvia los siguientes caracteres de
la entrada hasta encontrar un token bien formado.

Tratar de Arreglar la entrada:
Borrar el caracter extrao
Insertar el caracter perdido
Reemplazar un caracter incorrecto por uno
correcto
Encontrar que cambio genera el menor numero
de errores sintcticos, y aplicarlo.
Palabras reservadas
Identificador es una palabra que inicia con una
letra, y es seguida por letras o dgitos
Las palabras clave cumplen con este mismo
patrn de construccin

Se hace necesario un mecanismo que permita
decidir cuando una cadena es una palabra clave
o un identificador

Solucin sencilla: Palabras Reservadas (que no
pueden ser usadas como identificadores)

Manejo de buffers
Porque se divide el anlisis
lxico y sintctico
Simplifica y modulariza el diseo del compilador,
se hace mas claro, facilita la implementacin
Mejora la eficiencia del compilador:
El parser trabaja con Tokens, no con caracteres
Uso de tcnicas de buffers
La mayor parte del tiempo de compilacin se usa en
el anlisis lxico (excluyendo la optimizacin)
Mayor portabilidad:
Asla las peculiaridades en el alfabeto de entrada
Ej. El conjunto de caracteres, representacin de
smbolos

Generacin automtica de
analizadores lxicos
Lex: Generador de analizadores lxicos
a partir de expresiones regulares que
definen el comportamiento del analizador.
Genera cdigo C.
Esquema de funcionamiento de LEX



Generacin automtica de
analizadores lxicos
JFlex:

Sintxis muy parecida a la de Lex
Interfaz grfica para generar el analizador
Genera cdigo Java
A partir de la especificacin JFLEX se crea un
fichero .java que contiene el scanner.
En la clase que se crea hay un mtodo
llamado yylex que ejecuta el analizador.

You might also like