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 a c b a B B C a c b a a c b a a c b a C C B S S

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 a s1 a

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 c b a

I
c, b

C
a, b

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 L
I=1 I=0 i

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

a Q0 Q1 Q2 Q3 Q4 { Q1, Q4} { Q1}

b { Q3} { Q2} { Q4}


Q3 Q4 Q0

a a b
Q1

b
Q2

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