Вы находитесь на странице: 1из 12

Compiladores: Anlisis Lxico

Pontificia Universidad Javeriana Cali Ingeniera de Sistemas y Computacin Prof. Gloria Ins Alvarez V.

Anlisis Lxico
Programa Lenguaje Fuente Anlisis Lxico (Token, Lexema)

Mensajes de Error

Lee los caracteres del programa fuente de izquierda a derecha, y los agrupa en tokens

Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

Funciones del Analizador Lxico

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 est 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

Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

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

Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

Tokens y Lexemas: Ejemplos


Token
If Identificador opSuma puntoComa Menor menorIgual

Token #
10 1 30 48 56 57

Lexema
if ( valor + ; < <=

parentesisIzq 12

Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

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 pas)

Pontificia U. Javeriana Cali - Ingenieria de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

Atributos para tokens

El analizador recopila informacin sobre los tokens a medida que los reconoce. Por ejemplo: token num, pero... qu lexema? Cuando la cadena de entrada permite reconocer ms 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 carcter extrao Insertar el carcter perdido Reemplazar un carcter incorrecto por uno correcto Encontrar que cambio genera el menor numero de errores sintcticos, y aplicarlo

Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

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 patron 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)

Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

Manejo de Buffers

Cuando se implementa el scanner es necesario manejar un buffer de entrada para hacer mas eficiente la lectura de la cadena de entrada Generalmente se define un buffer del tamao de un bloque de disco Se maneja un apuntador que marca el inicio del lexema que se est analizando, y un apuntador que marca el carcter que est siendo analizado
..... w h Begin i l e a > b \n .....

Forward

Pontificia U. Javeriana Cali - Ingenieria de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

Manejo de Buffers

Posibilidades:

Un buffer ..... w h i l e a >

Final de Buffer

Par de Buffers i ..... w h i l e a >

Begin Forward = ..... 1 5 2 . 5

Begin

Forward

Sentinelas: marcar el final del buffer con EOF. Entonces EOF significa: Lleg al final del 1er. buffer : debe cargar el segundo Lleg al final del 2o. Buffer: debe cargar el primero Lleg al final del archivo
Pontificia U. Javeriana Cali - Ingenieria de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

Porque se divide el Anlisis Lxico del 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

Pontificia U. Javeriana Cali - Ingeniera de Sistemas y Computacin Compiladores Prof. Ma. Constanza Pabn

Вам также может понравиться