Analisis Lexico 2
Analisis Lexico 2
Analisis Lexico 2
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
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
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
Token #
10 12 1 30 48 56 57
Lexema
if ( valor + ; < <=
Cuando la cadena de entrada permite reconocer ms de un token, esta informacin puede ayudar a desambiguar.
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
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
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 Begin h i l e a > b \n
Forward
Manejo de Buffers
Posibilidades:
Un buffer w h i l e a > Final de Buffer
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
Mayor portabilidad:
Asla las peculiaridades en el alfabeto de entrada Ej. El conjunto de caracteres, representacin de smbolos
Analizador Lexico C# hecho a mano Este ejemplo muestra como implementar un analizador lxico simple en C#, usando el DFA como base para construir el autmata en cdigo. lenguaje que reconoce el analizador lxico esta formado por los elementos bsicos de una calculadora de nmeros naturales, los operadores bsicos, +, -, /, * ademas detecta y reporta errores lxicos y tambin espacios en blanco (\t,\n,\r, )