Está en la página 1de 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

Scanner
Tabla de Smbolos
Gestin de Errores

Funciones

edad
Scanner
Scanner
[ID, edad]

G.Errores
Errores
G.
TablaSmbolos
Smbolos
Tabla

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
detransicin
transicin
de

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

Tipos

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

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 *

(1 o ms)
(0 o ms)

Ejemplos

a*(b | c)+

bccbcbccbc
abbbccc
abbcbcccbbc

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

0.236425
3567.45627
.758478
5.0

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

Patrn

Expresin regular que define el lenguaje


Letra (Letra
(Letra | Digito)*

Lexema

Elemento lxico del lenguaje


Smbolo No Terminal de las fases siguientes

Secuencia de caracteres que concuerda con un patrn


numeroUsuarios

Atributos

Estructura de datos de cada token para almacenarse en la TS


Depende del tipo de token
[ID, Lexema, Tipo, Valor, lnea]

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

Ejemplo
Especificarun
unanalizador
analizadorlxico
lxicoque
quereconozca
reconozca
Especificar
Nmerosenteros
enteros
Nmeros
Operadoresaritmticos
aritmticosyyde
deincremento
incremento(+,
(+,--*,
*,/,/,++,--)
++,--)
Operadores
Identificadores
Identificadores
WHILE
WHILE

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

Implementacin manual del diagrama de transiciones

Simulacin de transiciones del diagrama

Implementacin manual directa

Especificacin de los patrones de la gramtica


LEX

Codificacin con estructuras condicionales (if, case, )

Implementacin hbrida

Anlisis directo de las estructuras ms sencillas

Operadores

Anlisis mediante diagrama de estructuras complejas

Cadenas no especficas
Prefijos comunes

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
> / >=

En generadores automticos (LEX)

Anteponer el patrn para el token ms largo


Despus el ms corto

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

Resolucin implcita

Considerar las palabras reservadas como identificadores


Insertar las palabras clave como tal en la tabla de smbolos
Buscar identificadores en la tabla de smbolos

Javier Vlez Reyes jvelez@lsi.uned.es

Implementacin del analizador lxico III

Gestin de errores

Tipos de Errores

Visin muy local del programa


Caracteres invlidos , ,
Ausencia de concordancia con patrones

Recuperacin de errores

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

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.

También podría gustarte