Académique Documents
Professionnel Documents
Culture Documents
An
alisis L
exico
1 / 64
Analisis Lexico
1
2
3
4
5
6
7
8
9
10
11
12
13
Objetivo
Introduccion
Token
Errores Lexicos
Procedimientos para construir un analizador lexico
Expresiones Regulares
Extension de las expresiones regulares
Automatas Finitos No Determinsticos
Automata Finito Determinstico
Obtencion de un AFD a partir de una ER
Minimizacion de un AFD
Algortimo para implementar un Analizador Lexico
Especificacion de un Analizador Lexico
Tabla Compacta
An
alisis L
exico
2 / 64
Objetivo
Analisis Lexico
1 Objetivo
An
alisis L
exico
3 / 64
Objetivo
Objetivo
Objetivo
El alumno construira un analizador lexico a partir de la definicion de
clases de componentes lexicos.
An
alisis L
exico
4 / 64
Introducci
on
Analisis Lexico
2 Introduccion
An
alisis L
exico
5 / 64
Introducci
on
Analisis Lexico
Manejador de errores
Tokens
Programa Fuente
Analisis Lexico
Analisis Sintactico
next token
Analisis Semantico
Front-end
Arbol
Sintactico Arbol
Sintactico Anotado
Tabla de Smbolos
An
alisis L
exico
6 / 64
Token
Analisis Lexico
3 Token
An
alisis L
exico
7 / 64
Token
Analisis Lexico
Definition (Token)
Un token es una tupla de dos valores: una clase lexica y un valor
de token que puede ser opcional.
Se puede presentar el caso de que un token este formado
unicamente por la clase lexica. Esto sebe a que la clase lexica
solo tiene un elemento.
Una clase lexica es un conjunto de tokens con las mismas
caractersticas.
An
alisis L
exico
8 / 64
Token
Analisis Lexico
Clases Lexicas
Las clases lexicas son grupos que contienen tokens que poseen
caractersticas similares, las siguientes clases engloban la mayor parte
de los tokens que pertenecen a los lenguajes de programacion:
1
2
3
4
5
6
7
8
Palabras Reservadas
Identificadores
Operadores (En forma individual o en subclases)
Constantes numericas
Constantes de cadenas o caracteres
Signos de puntuacion
Espacios en blanco
Comentarios
An
alisis L
exico
9 / 64
Token
Analisis Lexico
Ejemplo
a =(x + y)* z;
La salida sera:
ID, apuntador a
operador asig
signo punt, (
ID, apuntador a
operador mas
ID, apuntador a
signo punt, )
operador mul
ID, apuntador a
signo punt, ;
An
alisis L
exico
10 / 64
Errores L
exicos
Analisis Lexico
4 Errores Lexicos
An
alisis L
exico
11 / 64
Errores L
exicos
Analisis Lexico
Errores Lexicos
Un error lexico es todo aquel smbolo o smbolos que no
corresponden a ninguna de las expresiones regulares que describen el
lexico del lenguaje de programacion.
Ejemplos
Identificadores mal construidos.
Identificadores que exceden la longitud definida.
Constantes numericas o de caracteres mal construidas.
Numeros que exceden el rango.
Caracteres extranos no definidos por el lenguaje
Palabras reservadas mal escritas.
Ing. Adrian Ulises Mercado Martnez
An
alisis L
exico
12 / 64
Errores L
exicos
Analisis Lexico
Recuperacion de Errores
Las formas de recuperarse de los errores lexicos son las siguientes:
Modo panico
Eliminar un caracter de la entrada.
Insertar un caracter en la entrada.
Sustituir un caracter por otro.
Transponer dos caracteres.
An
alisis L
exico
13 / 64
Analisis Lexico
An
alisis L
exico
14 / 64
Analisis Lexico
Obtencion de un Analizador Lexico.
El poceso para construir un analizador lexico (scanner) se muestra a
continuacion:
Definir las clases lexicas de los componentes para el lexico del
lenguaje de programacion.
Generar las expresiones regulares para cada componente.
Obtener un AFD a partir de las expresiones regulares.
Minimizar el AFD.
Programar el AFD.
An
alisis L
exico
15 / 64
Expresiones Regulares
Analisis Lexico
6 Expresiones Regulares
An
alisis L
exico
16 / 64
Expresiones Regulares
Analisis Lexico
Expresion Regular
Una expresion regular esta definida mediante los dos siguientes
principios.
1
2
An
alisis L
exico
17 / 64
Expresiones Regulares
Analisis Lexico
Operadores
An
alisis L
exico
18 / 64
Expresiones Regulares
Analisis Lexico
An
alisis L
exico
19 / 64
Expresiones Regulares
Analisis Lexico
Construccion de Expresiones Regulares
Es conveniente en ocasiones dar nombres a las expresiones regulares y
utilizarlos en las expresiones regulares subsiguientes, como si los
nombres fueran smbolos por s mismos.
d1 = r1
d2 = r2
...
dn = rn
donde:
1
Cada di es un nuevo smbolo que no esta en y no es igual a
ninguna otra d.
2
Cada ri es una expresion regular sobre el alfabeto
{d1 , d1 , ..., di1 }
Ing. Adrian Ulises Mercado Martnez
An
alisis L
exico
20 / 64
Expresiones Regulares
Extensi
on de las expresiones regulares
Analisis Lexico
Extension de las expresiones regulares.
Existen otros operadores que simplifican la notacion de las
expresiones regulares y son:
(r)+ Una o mas instancias de r.
r? Cero o una instancia de r.
[..] Clase de caracteres. Ejemplo (a|b|...|z) es equivalente a [a-z]
Propiedades
+, tiene la misma precedencia y asociatividad que *.
?, tiene la misma precedencia y asociatividad que * y +.
An
alisis L
exico
21 / 64
Expresiones Regulares
Extensi
on de las expresiones regulares
Analisis Lexico
Negacion
El operador de negacion tiene dos notaciones la primera es usando el
smbolo que indica que la expresion regular que le sigue estara
negada.
Ejemplo
(a|b), cualquier caracter que no sea a ni b
(0|1|2|3|4|5|6|7|8|9), cualquier caracter que no sea un dgito.
An
alisis L
exico
22 / 64
Expresiones Regulares
Extensi
on de las expresiones regulares
Analisis Lexico
Negacion
La segunda forma de representar el operador de negacion es
utilizando el smbolo entre los corchetes [].
Ejemplo
[ab], ni a ni b
[0], cualquier caracter que no sea un dgito.
[b][], cualquier caracter.
An
alisis L
exico
23 / 64
Aut
omatas Finitos No Determinsticos
Analisis Lexico
An
alisis L
exico
24 / 64
Aut
omatas Finitos No Determinsticos
Analisis Lexico
Automatas Finitos No Determinsticos
Un automata finito no determinstico es una maquina finita de
estados compuesta por una tupla de cinco valores.
N=(Q, , , S, F)
donde
Q: es el conjunto de estados de la maquina.
: es el alfabeto
: es la funcion de transicion. : Qx 2Q . Esto indica que
puede ir de un estado a muchos o de muchos estados a muchos
estados
S: es el conjunto de estados iniciales.
F: es el conjunto de estados de aceptacion.
Ing. Adrian Ulises Mercado Martnez
An
alisis L
exico
25 / 64
Aut
omatas Finitos No Determinsticos
Analisis Lexico
Ruta: es una secuencia de estados, partiendo de cualquier estado
hacia cualquier otro siguiendo las transiciones del automata.
Cadena aceptada: una cadena es aceptada si existe una ruta,
partiendo del estado inicial, hacia un estado de aceptacion.
Lenguaje que reconoce: es el conjunto de todas las cadenas que
nos conducen a un estado final o de aceptacion.
En un AFN: pueden existir varias rutas para una misma cadena, si
una de las rutas nos lleva al estado final, la cadena es aceptada.
Macroestado: es el conjunto de estados que se alcanzan en cada
paso del reconocimiento de una cadena. La cadena es aceptada si en
el macroestado se contiene un estado final al terminar de leer la
cadena de entrada.
An
alisis L
exico
26 / 64
Aut
omatas Finitos No Determinsticos
Analisis Lexico
Automatas Finitos No Determnisticos
10
An
alisis L
exico
27 / 64
Aut
omatas Finitos No Determinsticos
digito
10
An
alisis L
exico
28 / 64
Aut
omata Finito Determinstico
Analisis Lexico
An
alisis L
exico
29 / 64
Aut
omata Finito Determinstico
Analisis Lexico
Automata Finito Determinstico.
An
alisis L
exico
30 / 64
Aut
omata Finito Determinstico
Analisis Lexico
Automatas Finitos Determinsiticos.
An
alisis L
exico
31 / 64
Aut
omata Finito Determinstico
Analisis Lexico
Automatas Finitos Determinsticos.
letra
C
letra
A
letra
digito
B
letra
digito
D
digito
An
alisis L
exico
32 / 64
Aut
omata Finito Determinstico
Analisis Lexico
Automatas Finitos Determinsticos.
letra
digito
An
alisis L
exico
33 / 64
Aut
omata Finito Determinstico
Analisis Lexico
b
1
d
c
An
alisis L
exico
34 / 64
Aut
omata Finito Determinstico
Analisis Lexico
Un AFD se pude representar mediante una tabla de transiciones
Edo a b c
0
1
1
1 2
2
3
3
4
5
d
4
5
2
An
alisis L
exico
35 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
An
alisis L
exico
36 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Obtencion de un AFD a partir de una expresion regular
r =
r es el nombre de la expresion regular
es el cuerpo de la expresion regular
Definition
Un elemento punteado es una expresion regular con punto
centrado() en alguna parte del cuerpo de dicha expresion regular.
El punto indica que parte esta por ser leda, mientras lo que va
quedando a la izquierda del punto es lo que ya se leyo.
An
alisis L
exico
37 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Elementos Punteados
Ejemplo
Sea r = una expresion regular.
Decimos que:
r = ,
r = y
r =
Son tres elementos distintos que se obtienen de colocar el punto
sobre diferentes partes de la expresion regular r.
An
alisis L
exico
38 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Elementos Basicos
Un elemento basico es aquel elemento con un punto antes de alguna
expresion regular que no posee ningun operador.
Ejemplo
r= a
r=digito
An
alisis L
exico
39 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Elementos No Basicos
Un elemento no basico es aquel elemento que tiene un punto antes
de alguna expresion regular que tiene aplicado un operador
Ejemplo
r = digito*
r = letra?
An
alisis L
exico
40 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Funcion mov-
Existe una funcion llamada mov- que transforma un elemento no
basico en un elemento o mas elementos basicos.
An
alisis L
exico
41 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Funcion move-
Elementos no b
asicos
()
()
()
()
()+
()+
()?
()?
(1 |...|i |...|n )
(...|i |...)
Ing. Adrian Ulises Mercado Martnez
Movimientos-
()
()
()
()
()
()
()+
()+
()+
()?
()?
()?
(1 |...|i |...|n )
(1 |...| i |...|n )
(1 |...|i |...| n )
(...|i |...)
An
alisis L
exico
42 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Funcion cerradura-
La funcion cerradura utiliza la funcion mov- para calcular un
conjunto de elementos basicos generados a partir de un conjunto de
elementos no basicos.
An
alisis L
exico
43 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Funcion ceradura
Funci
on Cerradura
return C
1
2
3
4
5
An
alisis L
exico
44 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Funcion goto
La funcion goto es la funcion encargada de realizar el movimiento del
punto lector hacia la derecha y generara un nuevo conjunto de
elementos basicos.
An
alisis L
exico
45 / 64
Obtenci
on de un AFD a partir de una ER
Analsis Lexico
Funcion Goto
return Cerradura(q)
1
2
3
An
alisis L
exico
46 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Obtenci
on de un AFD a partir de ER.
1
2
3
4
5
An
alisis L
exico
47 / 64
Obtenci
on de un AFD a partir de una ER
Analisis Lexico
Obtencion del AFD para una ER
Obtener el AFD para r = (a|b) abb
Procedimiento
r = (a|b) abb Aplicamos cerradura q0 = {r = (a|b) abb}
r = (a|b) abb
r = (a| b) abb
r = (a|b) abb
y lo nombramos q0 aplicamos goto(q0 , a)
r = (a |b) abb
r = (a|b) a bb
y la cerradura r = (a|b) abb
r = (a| b) abb
r = (a|b) abb
r = (a|b) a bb
Ing. Adrian Ulises Mercado Martnez
An
alisis L
exico
Enero 30, 2015
48 / 64
Minimizaci
on de un AFD
Analisis Lexico
10 Minimizacion de un AFD
An
alisis L
exico
49 / 64
Minimizaci
on de un AFD
Analisis Lexico
1
2
3
4
6
7
8
9
10
An
alisis L
exico
50 / 64
Minimizaci
on de un AFD
Analisis Lexico
Minimizacion de un AFD
Obtener el automata mnimo del siguiente automata que se
representa en la tabla siguiente.
ESTADO
A
B
C
D
E
a
B
B
B
B
B
b Es de aceptacion
C
No
D
No
C
No
E
No
C
S
An
alisis L
exico
51 / 64
Minimizaci
on de un AFD
Analisis Lexico
Minimizacion de un AFD
Dividimos el automata en dos grupos, el de los estados de aceptacion
y de los estados de no aceptacion y calculamos mediante la tabla
original a que grupo se dirige cada estado; pero en lugar de anotar los
estados anotamos el grupo al que pertenecen.
Grupo
E1
E
Ing. Adrian Ulises Mercado Martnez
ESTADO
A
B
C
D
E
An
alisis L
exico
a
E1
E1
E1
E1
E1
b
E1
E1
E1
E
E1
Enero 30, 2015
52 / 64
Minimizaci
on de un AFD
Analisis Lexico
Minimizacion de un AFD
Se aplica nuevamente el paso 3 del algoritmo y obtenemos la
siguiente particion
Grupo
E1
E2
E
ESTADO
A
B
C
D
E
An
alisis L
exico
a
E1
E1
E1
E1
E1
b
E1
E2
E1
E
E1
53 / 64
Minimizaci
on de un AFD
Analisis Lexico
Minimizacion de un AFD
Se aplica una vez mas el paso 3.
Grupo
E1
E3
E2
E
ESTADO
A
C
B
D
E
An
alisis L
exico
a
E3
E3
E3
E3
E3
b
E1
E1
E2
E
E1
54 / 64
Minimizaci
on de un AFD
Analisis Lexico
Minimizacion de un AFD
Al aplicar una vez mas el algoritmo ya no hay cambios por lo tanto el
AFD mnimo es el siguiente.
Grupo
E1
E3
E2
E
ESTADO
A
C
B
D
E
An
alisis L
exico
a
E3
E3
E3
E3
E3
b
E1
E1
E2
E
E1
55 / 64
Analisis Lexico
An
alisis L
exico
56 / 64
Analisis Lexico
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
An
alisis L
exico
57 / 64
Especificaci
on de un Analizador L
exico
Analisis Lexico
An
alisis L
exico
58 / 64
Especificaci
on de un Analizador L
exico
Analisis Lexico
Especificacion de un Analizador Lexico
Categora Expresion regular
if
if
else
else
int
int
float
float
id
letra(letra|digito)*
entero
real
op arit
op rel
op asig
sig punt
Acciones
Atributos
emitir
emitr
emitir
emitir
insertar en la tabla lexema
emitir
digito+
emitir
lexema
digito+.digito+
emitir
lexema
+| | |/
emitir
lexema
< | > | >= | <= | == |! = emitir
lexema
=
emitir
(|)|; |{|}
emitir
lexema
An
alisis L
exico
59 / 64
Especificaci
on de un Analizador L
exico
Analisis Lexico
An
alisis L
exico
60 / 64
Tabla Compacta
Analisis Lexico
13 Tabla Compacta
An
alisis L
exico
61 / 64
Tabla Compacta
Analisis Lexico
La tabla compacta
Se divive la tabla en cuatro vectores lineales.
Valor: guarda el valor de los elementos no nulos
Columna: La columna que le corresponde a cada elemento del
vector Valor.
Prefil: este vector tiene tantos elementos como renglones tiene
la tabla, en el almacenamos la posicion del vector Valor donde
comienzan los elementos de cada columna
NumFil: se almacena el numero de elementos no nulos en cada
renglon
An
alisis L
exico
62 / 64
Tabla Compacta
Analisis Lexico
Valor
1
4
1
2
3
5
2
Columna
0
3
1
2
0
4
3
An
alisis L
exico
PreFil
0
2
4
5
6
1
NumFil
2
2
1
1
1
0
63 / 64
Tabla Compacta
Analisis Lexico
1
2
3
4
5
6
7
8
9
10
11
12
13
14
An
alisis L
exico
64 / 64