Está en la página 1de 30

Facultad de Ingeniera de Sistemas

Lenguajes y Compiladores
Anlisis Lxico

Anlisis lxico





La tarea del anlisis lxico es reconocer smbolos


dentro de la cadena de caracteres que es el
programa fuente. Una vez reconocido un smbolo
vlido es transformado a una representacin ms
manejable por el parser.
Esta tarea es realizada por el analizador lxico.
Lexema o token: smbolo vlido reconocido por el
analizador lxico.
Caracteres
Programa fuente

Analizador
lxico

tokens

Analizador
sintctico

Teora Lenguajes
2

Anlisis lxico


Funciones bsicas de un lxico:







Reconocer identificadores y palabras reservadas


Reconocer constantes numricas y alfanumricas
Reconocer los comentarios
Eliminar los blancos

Generalmente los smbolos reconocidos por un lxico


son elementos de un lenguaje regular, es decir
generados por una gramtica regular.

Teora Lenguajes
3

Anlisis lxico


Sea G(T, N. P, S) una gramtica regular


T = {a, b, c}
N = { S, B, C}
P = {S Sa Bb ,
B Cc ,
Ca }
S={S}
Se puede generar la siguiente frase:
acba

Teora Lenguajes
4

Anlisis lxico
Derivaciones usadas:
S Sa
Bba
Ccba
acba

Para reconocer la frase hay que recorrerla de


izquierda a derecha y si se llega al smbolo terminal
inicial se dice que es una frase vlida (fue
reconocida).

Teora Lenguajes
5

Anlisis lxico
C

S
S

a c b a
B
B

B
C

C
a c b a

a c b a

a c b a

Teora Lenguajes

*
6

Autmata finito determinista (FDA)




Autmata: Dispositivo que acepta una entrada y


genera una salida adecuada.

Autmata Finito Determinista: Reconoce cadenas de


un alfabeto para lo cual posee un conjunto finito de
estados internos entre los cuales existe un estado
inicial (s0) y uno o varios estados finales.

Cadena de
entrada
Estado

a
s0

c
s1

b
s2

a
s3

considerando
s3 Estado final
*

Teora Lenguajes
7

Autmata finito determinista




Se dice que un autmata finito es determinista si


para cada par (estado, carcter) slo existe una
transicin posible, es decir slo existe un estado al
cual puede cambiar.
Los autmatas finitos tambin son conocidos con el
nombre de aceptador de estados o reconocedor
(porque toma una cadena de entrada y reconoce si
pertenece o no a un cierto lenguaje)

Teora Lenguajes
8

Autmata finito determinista




Formalmente se define un autmata como una


quntupla: A = (P, V, M, s0, F), donde:







P es un conjunto de estados finito y no vaco


V es el alfabeto de entrada
M es una funcin de transicin de estados que
establece una correspondencia de P x V a P
s0 Estado inicial, con s0 P
F conjunto de estados finales tal que F P

Teora Lenguajes
9

Diagramas de transicin








Tambin se usan diagramas con informacin aadida


para representar autmatas finitos deterministas.
Estos diagramas son grafos dirigidos conocidos con
el nombre de diagramas de transicin.
Los nodos del grafo se denominan estados.
Las aristas estn etiquetadas con caracteres del
alfabeto y se denominan transiciones.
Existe un estado inicial o estado de partida.
Algunos estados se denominan estados de aceptacin
o estados finales.

Teora Lenguajes
10

Diagramas de transicin
s0


s1

Este diagrama muestra que es posible la transicin


del estado s0 al estado s1 si se recibe el carcter a
Tambin se usan Tablas de transicin para
representar autmatas. Consiste en un arreglo
bidimensional cuyas columnas se asocian a los
caracteres de entrada y las filas a los estados del
autmata, el contenido del arreglo indica el estado al
cual se realiza la transicin.

Teora Lenguajes
11

Diagramas de transicin
Entrada

a
E
s
t
a
d
o
s

s1

s2

Teora Lenguajes
12

Gramticas regulares y autmatos finitos




Es posible tener un autmata finito para una


gramtica regular.
Para construir un autmata a partir de la gramtica
debemos tener en cuenta:




Cada no terminal representa un estado


Cada terminal produce las transiciones
Se crearn estados especiales (que no son no
terminales):
Uno que representa el estado inicial
Otro que representa un estado al cual se llega slo si se
analiza una frase incorrecta

Teora Lenguajes
13

Autmata y diagrama
A seguir se muestra el diagrama de estados
correspondiente a la gramtica regular usada
en el ejemplo anterior.
a

B
a, b

c, b

c, a
c, b

Teora Lenguajes
14

Diagrama y Tabla de transicin




La tabla de transicin para el diagrama sera:

ESTADO
I
S
B
C

a
C
S
E
E

ENTRADA
b
E
B
S
E

c
E
C
E
B

Teora Lenguajes
15

Expresiones Regulares


Se puede simplificar la especificacin de un lenguaje


regular introduciendo una abreviatura conocida
como expresin regular.
Operacin
Nombre
Unin
LM
LM
LM
Concatenacin
*
L
Cerradura de Kleene
Cero o ms concatenaciones
+
L
Cerradura positiva
Una o ms concatenaciones

Definicin
L M = { s s L s M }
L M = { st s L y t M }
Li
I=0
i

L
I=1

Teora Lenguajes
16

Expresiones Regulares


Ejemplos:


a* b* denota frases del tipo


aaabbbbbbb
aaaaa
bbbb

a+ b+ denota frases del tipo


aaabbbbbbb
aaaaab
abbbb
ab

Teora Lenguajes
17

Expresiones Regulares







(ab)*
(a b)*
(a b) *
(aa *) b
a+ b
Para la gramtica del lenguaje G (diapositiva 4) la
expresin regular correspondiente sera:
acba*

Muestre el diagrama de transicin para la primera


expresin regular (ab)*

Teora Lenguajes
18

Autmata no determinista (FNA)




Autmata no determinista es un autmata que para


un par (estado, carcter) tiene ms de un estado de
transicin y permite transiciones para la entrada
vaca .
Si para cada par estado actual - entrada existe mas
de un estado siguiente indica que se puede elegir
entre las distintas posibilidades. No existe nada que
determine la eleccin. De ah el nombre no
determinista.
Ejemplo:

Teora Lenguajes
19

Autmata no determinista

Q0

{ Q1, Q4}

{ Q3}

Q1

{ Q1}

{ Q2}

Q2

Q3

Q4

{ Q4}

Q0

a
a

Q1

b
Q2

b
Q3

Q4

Teora Lenguajes
20

Autmata no determinista


Si M es un AFN el lenguaje aceptado por M se define


como:
L(M) = {w| w es una cadena aceptada por M}
Para determinar si w L(M) debemos recorrer el
diagrama de transicin correspondiente y encontrar
un camino que termine en un estado de aceptacin
luego de haber consumido toda la cadena. En la
bsqueda se elige el camino de forma no
determinista.

Teora Lenguajes
21

Autmata no determinista


Para decir que w L(M) se debe agotar todas las


posibles formas de recorrer el diagrama para esa
cadena. En algunos casos se recorrern caminos con
una eleccin no correcta del estado siguiente, lo que
desencadenar en un estado no vlido. En esta
situacin ser necesario retroceder y retomar la
bsqueda del camino eligiendo otro estado.
En trminos de programacin esto no es eficiente
por tanto trataremos de usar AFD o transformar los
AFN en AFD.

Teora Lenguajes
22

Anlisis Lxico





Lee una cadena de entrada y genera una secuencia


de componentes lxicos.
Debe eliminar los caracteres en blanco y comentarios
Cada componente lxico est bien definido y tiene un
significado propio.
Se debe distinguir entre componente lxico y la
cadena que lo representa. Para cada cadena (palabra)
el lxico debe determinar de que componente lxico
(token) se trata. Generalmente los tokens se
devuelven codificados.

Teora Lenguajes
23

Anlisis Lxico
Token
PL Var
PL Case
Num
String
SE
Id

Ejemplo
Var
Case
4.25, 9
'Ttulo'
>
Cont, temp, I

Descripcin
Palabra reservada Var
Palabra reservada Case
Constante numrica
Constante literal
Smbolo especial
Identificadores

El lxico debe eliminar todos los adornos del programa


fuente (comentarios, blancos).
Separa cadenas y las relaciona con tokens.
Se puede usar diagramas de transicin para reconocer las
cadenas vlidas.
Teora Lenguajes
24

Aspectos de Implantacin



El lxico entrega al sintctico un token codificado.


Generalmente el token consta de dos partes
Cdigo

Atributo asociado

Cdigo: indica si el tipo de token (identificador,


palabra reservada, constante, etc).
Atributos. Contiene cdigos o cadenas que
complementan la informacin del cdigo. Su
contenido depende del tipo de token.

Teora Lenguajes
25

Aspectos de Implantacin
Token
Palabra reservada
Identificador
Smbolo especial
Constante numrica
Constante alfanumrica

Cdigo
1
2
3
4
5

Atributo
Cdigo de la palabra reservada
Cadena del identificador
Cdigo del smbolo especial
Cadena de la constante
Cadena de la constante

La tabla mostrada es un ejemplo de codificacin de tokens


en donde cada palabra reservada/smbolo especial tiene el
mismo cdigo y en el atributo asociado se especifica de que
palabra/smbolo se trata.
Otra forma de codificar es asignar a cada palabra/smbolo
un cdigo diferente en cuyo caso no se necesitar del
atributo.
Teora Lenguajes
26

Aspectos de Implantacin


El lxico se puede implantar con diagramas/tablas de


transicin. Se deben entonces definir las gramticas
regulares para cada tipo de componente lxico y
construir los diagramas/tablas de transicin. Estos
diagramas de estado se pueden unir en un nico
diagrama que reconozca todos los componentes
lxicos, incluyendo comentarios.
Es importante disear los componentes lxicos de
manera tal que facilite su implantacin y evitar
reglas tan flexibles que pueden complicar la
realizacin del lxico (por ejemplo Fortran IV).

Teora Lenguajes
27

Aspectos de Implantacin


Tratamiento de comentarios: en algunos lenguajes los


comentarios pueden ser anidados, por ejemplo:
{este es el primer comentario
{este es el segundo comentario
{y este es el ltimo comentario}
}
}

Reconocimiento de componentes formados por dos


caracteres como := >= == etc.
Tratamiento de cadenas que abren/cierran con un
carcter especial.

Teora Lenguajes
28

Errores del lxico




Son pocos los errores que se pueden detectar en el


anlisis lxico


Carcter que no pertenece al alfabeto. En este caso la


recuperacin de error ms usada es conocida con el
nombre de Panic Mode (modo de pnico): se busca un
carcter vlido o un componente lxico vlido.
No hay ms smbolos en la entrada por tanto no es
posible seguir entregando componentes lxico

Teora Lenguajes
29

Casos Especiales





Se abre una cadena (), se encuentra el fin del archivo


y no hay cierra cadena.
Comentarios que inician pero no terminan
Comentarios anidados

Teora Lenguajes
30

También podría gustarte