Sie sind auf Seite 1von 21

COMPILADORES

ANLISIS LXICO
1

Objetivos Generales

Conocer el funcionamiento de un analizador lxico (AL)

Entender las relaciones del (AL) con

La tabla de smbolos

La gestin de errores

Aprender a especificar formalmente un analizador

Conocer las distintas tcnicas de implementacin

ndice General

Introduccin

Especificacin de un Analizador Lxico

Implementacin de un Analizador Lxico

Anlisis Lxico
Scanner
Tabla de Smbolos
Gestin de Errores

Funciones

INTRODUCCION
edad
T. Smbolo
Scanner
[ID, edad]

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

G. Errores

Utilidad:

Anlisis Lxico

Se utiliza para la construccin de compiladores, como para interpretar


el cdigo HTML de una pgina web.

Va leyendo del fichero de entrada los caracteres secuencialmente y los


va agrupando en tokens con un significado conocido por el
programador.

Hace la funcin de preprocesador ya que se encarga de eliminar los


caracteres innecesarios para el proceso de compilacin
Por ejemplo: elimina los espacio en blanco que hay entre palabra y palabra

Funciones

Agrupar caracteres segn categoras establecidas


por la especificacin del lenguaje fuente.

Rechazar texto con caracteres ilegales o agrupados


segn un criterio no especificado

Funcionamiento

La
relacin
entre
el
AL
AS es una relacin de maestro-esclavo.

el

El sintctico demanda al lxico que lea el siguiente


lexema y el lxico lee los caracteres necesarios del
fichero de entrada hasta que consiga completar un
lexema, que ser entregado a su maestro.

Cdigo Fuente

Lee caracteres

en
n
o
mp
o
C

Analizador
Sintactico

Analizador
lxico

ico
x

te l

ita
c
i
l
So

un

po
m
o
c

Siguiente fase

ne

xi
e
l
nte

co

Funcionamiento
Construir tokens validos a partir de la lectura
carcter a carcter del fichero de entrada.
Pasar tokens validos al analizador sintctico
Gestionar el manejo de fichero de entrada.
Ignorar los espacio en blanco, comentarios y dems
caracteres o tokens innecesarios para el proceso de
anlisis
Avisar de los errores encontrados en esta fase.
Llevar la cuenta del numero de lneas par incluir lo
en el aviso de error.
Hacer las funciones de preprocesador

10

Funcionamiento

El analizador lxico va leyendo carcter a carcter


el fichero de entrada y va guardando estos
caracteres en el buffer. Cuando encuentra un
carcter que no le sirve para construir un token
valido, se para y enva los caracteres acumulados al
AL y espera una nueva peticin de lectura. Cuando
recibe una nueva peticin del AS, limpia el buffer y
vuelve a leer el carcter donde paro la vez anterior.

Funcionamiento

11

Ejemplo:

Tenemos el siguiente archivo de entrada:

int x;
main() {
}.

Entrada

Buffe
r

Accin

Leer otro caracter

in

Leer otro caracter

int

Leer otro caracter

Espacio en
blanco

int

Enviar token y limpiar


buffer

Leer otro caracter

Enviar token y limpiar


buffer

Leer otro carcter.

12

Trminos utilizados
Patron: Es una representacin lgica de
una serie de agrupacin de caracteres con
unas
caractersticas
comunes.
Por
ejemplo, en Java el identificador de una
variable puede ser cualquier combinacin
de letras y numero que no comience con
un numero. Para describir formalmente
esta definicin, se utilizan las expresiones
regulares.

Por ejemplo: letra::=(a-zA-Z), digito::=(0-9)

Identificador::=(letra)(letra|digito)

13

Trminos utilizados
Lexema: es cada una de las combinaciones de
caracteres que encajan en la definicin de un
patrn. Por ejemplo: variable1, x
Es decir el patrn es la definicin formal y el
lexema es cada una de las secuencia que pueden
encajar en esa definicin.
Token: es el nombre que se le va a dar cada patrn
definido. Este nombre se utilizara en los procesos
de anlisis en representacin de todos los lexemas
encontrados
Ej: el token es como la palabra fruta y los lexemas son las
frutas en concreto, como manzana, banana,

14

Especificacin del analizador


lxico

Para comprender el funcionamiento de una A-L, lo especificaremos


como un AF, muy parecida a una AFD con las siguientes
diferencia:

El AFD solo dice si la secuencia de caracteres


pertenece al lenguaje o no, y el DT debe leer la
secuencia hasta completar un token y luego
retornar el token y dejar la entrada para leer el
token siguiente.
En un DT cada secuencia no determinada es
un error
Los estados de aceptacin de los DT deben ser
terminales

15

Especificacin de
analizador lxico
En un DT, cuando se lea una
carcter que no pertenezca a
ninguna secuencia especificada, se
debe ir a un estado especial
terminal y volver el cursor de lectura
de caracteres al carcter siguiente a
la secuencia correcta leida.

Construccin de un
analizador lxico

16

Utilizar un DT

Mediante programas especiales que construyen analizadores.

Identificar las palabras reservadas:


1.

Hacer una tabla con todas las palabras y consultarla


para cada identificador y ver si esta en la tabla o no.

2. Implementar cada una de las palabras reservadas en


el DT para diferenciarlas del resto de identificadores,
lo que complicara bastante la programacin.

Construir el diagrama de transiciones

17

Construccin de un
Analizador Lexico

Construir el diagrama de transiciones:

Ejemplo: vamos a crear un analizador lxico para un


lenguaje que reconoce numero enteros sin signo, la
suma, incremento y el producto:
a) Definir los patrones o E-R:
Entero::=(0|1|2|3|4|5|6|7|8|9)+
Suma::=+
Producto::=*
Incremento::=++

b) Creamos el Automata

Construccin de un Analizador
18
Lxico
PRODUCTO

digito

otro

* ENTERO

o
+

4
otro
3

* SUMA

INCREMENTO

19

Construccin de un
Analizador Lxico
c) Crear la tabla de transicion
Consta de tantas filas como estado del automata.
En cuanto a las columnas: una para numerar el estado,
tantas como distintas posibles entradas, otra para
sealar el token que se reconoce; una ultima para
numerar los retrocesos que hay que hacer pata
reconocer los lexemas.

Construccin de un
Analizador Lxico

20

Entrada
s

Entrada
s

Entrada
s

Entrada
s

Digito

Otro

Estado

Token

Retro
c.

Error

PRODUCT
O

SUMA

INCREMEN
T

ENTERO

21

Bibliografa

[AHO] 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.

[CATALAN] Jacinto Ruiz Catalan.2010. Compiladores: Teoria e


Implementacion. Alfaomega.

Das könnte Ihnen auch gefallen