Anda di halaman 1dari 9

UNIVERSIDAD NACIONAL DE EDUCACIN A DISTANCIA Escuela Tcnica Superior de Ingeniera Informtica Procesadores de Lenguajes

Tema 2
Anlisis Lxico

Javier Vlez Reyes jvelez@lsi.uned.es

Javier Vlez Reyes jvelez@lsi.uned.es

Objetivos del Tema


Conocer el funcionamiento de un analizador lxico Entender las relaciones de ste con


La tabla de smbolos La gestin de errores

Aprender a especificar formalmente un analizador Conocer las distintas tcnicas de implementacin

Javier Vlez Reyes jvelez@lsi.uned.es

ndice General

Introduccin Especificacin de un Analizador Lxico Implementacin de un Analizador Lxico

Javier Vlez Reyes jvelez@lsi.uned.es

Introduccin

Anlisis Lxico

edad Scanner Scanner [ID, edad] G.Errores Errores G. TablaSmbolos Smbolos Tabla

Scanner Tabla de Smbolos Gestin de Errores

Funciones

Tratar con la tabla de smbolos Generar tokens bajo demanda del analizador sintctico Manejar el fichero fuente Ignorar comentarios Contabilizar posicin de tokens Preprocesar macros, constantes, includes

Javier Vlez Reyes jvelez@lsi.uned.es

ndice General

Introduccin Especificacin de un Analizador Lxico


Especificacin formal Gramticas Linealmente Recursivas Lenguajes Regulares Autmatas Finitos Trminos utilizados Pasos para especificar un analizador lxico

Implementacin de un Analizador Lxico

Javier Vlez Reyes jvelez@lsi.uned.es

Especificacin de analizador lxico I


Especificacin formal

Gramticas Lineales

Recursivas a izquierdas Recursivas a derechas

Lenguajes (expresiones) regulares Autmatas finitos (Diagramas de Transicin)


Gramticas Gramticas Lineales Lineales

ISOMORFO ISOMORFO Diagramas Diagramas de transicin de transicin Expresiones Expresiones regulares regulares

Javier Vlez Reyes jvelez@lsi.uned.es

Gramticas Linealmente Recursivas


Gramticas Linealmente Recursivas


Alfabeto terminal Alfabeto no terminal Axioma Reglas de produccin Recursividad a izquierdas


S := A letra | A digito A := A letra | A digito | letra

Tipos

Recursividad a derechas
S := letra A A := letra A | digito A | letra | digito

Javier Vlez Reyes jvelez@lsi.uned.es

Expresiones regulares

Expresiones regulares

Alfabeto Cierre simtrico + Cierre transitivo * a*(b | c)+


(1 o ms) (0 o ms)

Ejemplos

bccbcbccbc abbbccc abbcbcccbbc 0.236425 3567.45627 .758478 5.0

(0(0-9)*.(0.(0-9)+

Javier Vlez Reyes jvelez@lsi.uned.es

Diagramas de transicin

Diferencias con autmatas finitos


Acciones asociadas a ciertos estados


Estados de Aceptacin Estados con Retroceso (*)

No tienen estados de absorcin (se omiten) Los estados de aceptacin no tienen transiciones Transicin especial otro
DT

AFD

Javier Vlez Reyes jvelez@lsi.uned.es

Especificacin de analizador lxico II


Trminos utilizados

Token

Elemento lxico del lenguaje Smbolo No Terminal de las fases siguientes Expresin regular que define el lenguaje Letra (Letra (Letra | Digito)* Secuencia de caracteres que concuerda con un patrn numeroUsuarios Estructura de datos de cada token para almacenarse en la TS Depende del tipo de token [ID, Lexema, Tipo, Valor, lnea]

Patrn

Lexema

Atributos

Javier Vlez Reyes jvelez@lsi.uned.es

Especificacin de analizador lxico III


Pasos para especificar un analizador lxico


Identificar la coleccin de tokens Estructurar la coleccin de tokens Describir el lenguaje como expresiones regulares Especificar un Diagrama de Transicin Traducir el Diagrama a una tabla de transicin
Especificarun unanalizador analizadorlxico lxicoque quereconozca reconozca Especificar Nmerosenteros enteros Nmeros Operadoresaritmticos aritmticosyyde deincremento incremento(+, (+,--*, *,/, /,++,--) ++,--) Operadores Identificadores Identificadores WHILE WHILE

Ejemplo

Javier Vlez Reyes jvelez@lsi.uned.es

ndice General

Introduccin Especificacin de un Analizador Lxico Implementacin de un Analizador Lxico


Estrategias de implementacin Prioridad de los tokens Reconocimiento de palabras reservadas Gestin de errores

Javier Vlez Reyes jvelez@lsi.uned.es

Implementacin del analizador lxico I


Estrategias de implementacin

Implementacin automtica

Especificacin de los patrones de la gramtica LEX Simulacin de transiciones del diagrama Codificacin con estructuras condicionales (if, case, ) Anlisis directo de las estructuras ms sencillas

Implementacin manual del diagrama de transiciones


Implementacin manual directa


Implementacin hbrida

Operadores Cadenas no especficas Prefijos comunes

Anlisis mediante diagrama de estructuras complejas


Javier Vlez Reyes jvelez@lsi.uned.es

Implementacin del analizador lxico II


Prioridad de tokens

Dar prioridad al token con lexema ms largo


DO / DOT > / >= Anteponer el patrn para el token ms largo Despus el ms corto

En generadores automticos (LEX)


Javier Vlez Reyes jvelez@lsi.uned.es

Implementacin del analizador lxico III


Reconocimiento de palabras reservadas


Resolucin explcita

Se indican todos los patrones de cada palabra reservada Se integran en el diagrama de transiciones global Complejidad mayor LEX Considerar las palabras reservadas como identificadores Insertar las palabras clave como tal en la tabla de smbolos Buscar identificadores en la tabla de smbolos

Resolucin implcita

Javier Vlez Reyes jvelez@lsi.uned.es

Implementacin del analizador lxico III


Gestin de errores

Visin muy local del programa Caracteres invlidos , , Ausencia de concordancia con patrones Ignorar caracteres no vlidos hasta formar token Borrar caracteres extraos Insertar carcter que falta Reemplazar un carcter por otro Conmutar posicin de dos caracteres adyacentes

Tipos de Errores

Recuperacin de errores

Javier Vlez Reyes jvelez@lsi.uned.es

Bibliografa
[AJO] AHO, SETHI, ULLMAN: Compiladores: Principios, tcnicas y herramientas,: Addison-Wesley Iberoamericana, 1990

[GARRIDO]

A. Garrido, J. Iesta, F. Moreno y J. Prez. 2002. Diseo de compiladores. Universidad de Alicante.