You are on page 1of 64

Analisis Lexico

Ing. Adrian Ulises Mercado Martnez

Enero 30, 2015

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

2 / 64

Objetivo

Analisis Lexico

1 Objetivo

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

3 / 64

Objetivo

Objetivo

Objetivo
El alumno construira un analizador lexico a partir de la definicion de
clases de componentes lexicos.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

4 / 64

Introducci
on

Analisis Lexico

2 Introduccion

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

6 / 64

Token

Analisis Lexico

3 Token

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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, ;

la tabla de smbolos para a

la tabla de smbolos para x


la tabla de smbolos para y

la tabla de smbolos para z

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

10 / 64

Errores L
exicos

Analisis Lexico

4 Errores Lexicos

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

13 / 64

Procedimientos para construir un analizador l


exico

Analisis Lexico

5 Procedimientos para construir un analizador


lexico

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

14 / 64

Procedimientos para construir un analizador l


exico

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

15 / 64

Expresiones Regulares

Analisis Lexico

6 Expresiones Regulares

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

16 / 64

Expresiones Regulares

Analisis Lexico

Expresion Regular
Una expresion regular esta definida mediante los dos siguientes
principios.
1
2

es una expresion regular y L() = {}


Si a es un smbolo en , entonces a es una expresion regular, y
L(a) = {a}

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

17 / 64

Expresiones Regulares

Analisis Lexico
Operadores

Sea r y s dos expresiones regulares.


(r)|(s) se lee como r o s
(r)(s) se lee como r concatenado con s
(r)* es la cerradura de Kleene y representa cero o mas instancias
de r
(r) se lee como r
Propiedades
El operador * tiene la precedencia mas alta y es asociativo por la
izquierda.
La concatenacion tiene la segunda precedencia mas alta y es
asociativa a la izquierda.
| tiene la precedencia mas baja y es asociativo a la izquierda.
Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

18 / 64

Expresiones Regulares

Analisis Lexico

Leyes de los operadores de las expresiones regulares


LEY
DESCRIPCION
r| s = s|r
| es comunicativo
r|(s|t) = (r|s)|t
| es asociativo
r(st) = (rs)t
La concatenacion es asociativa
r(s|t) = rs|rt
La concatenacion se distribuye sobre |
(s|t)r = sr|tr
r = r = r
es la identidad para la concatenacion
r* = (r|)*
se garantiza en la cerradura
r** = r*
* es idempotente

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Enero 30, 2015

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 +.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

23 / 64

Aut
omatas Finitos No Determinsticos

Analisis Lexico

7 Automatas Finitos No Determinsticos

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

26 / 64

Aut
omatas Finitos No Determinsticos

Analisis Lexico
Automatas Finitos No Determnisticos

10

Figure : AFN para la ER (a|b) abb.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

27 / 64

Aut
omatas Finitos No Determinsticos

digito

10

Figure : Ejemplo de un AFN para [+]?digito +

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

28 / 64

Aut
omata Finito Determinstico

Analisis Lexico

8 Automata Finito Determinstico

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

29 / 64

Aut
omata Finito Determinstico

Analisis Lexico
Automata Finito Determinstico.

Un automata finito determinstico es una maquina finita de estados


compuesta por una tupla de cinco valores.
D=(Q, , , s, F)
donde
Q: es el conjunto de estados de la maquina.
: es el alfabeto
: es la funcion de transicion. : Qx Q. Esto quiere decir que
con un smbolo del alfabeto solo se puede pasar a otro estado
partiendo de un estado fijo.
s: es el estado inicial.
F: es el conjunto de estados de aceptacion.
Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

30 / 64

Aut
omata Finito Determinstico

Analisis Lexico
Automatas Finitos Determinsiticos.

Ruta: es una lista de estados en la que, a partir de cada estado, se


puede llegar al siguiente por medio de una transicion del automata.
Cadena aceptada: si existe una ruta del estado inicial a un estado
de aceptacion para una cadena, esta es aceptada.
Lenguaje reconocido por el aut
omata: es el conjunto de cadenas
aceptadas.
En un AFD solo existe una ruta posible, es decir, dada una cadena,
solo es posible llegar a un estado a partir del estado inicial.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

31 / 64

Aut
omata Finito Determinstico

Analisis Lexico
Automatas Finitos Determinsticos.
letra

C
letra
A

letra

digito
B

letra
digito
D

digito

Figure : AFD que reconoce letra(letra|digito)


Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

32 / 64

Aut
omata Finito Determinstico

Analisis Lexico
Automatas Finitos Determinsticos.

letra

digito

Figure : AFD que reconoce letra(digito)

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

33 / 64

Aut
omata Finito Determinstico

Analisis Lexico

Sea el siguiente automata


5
d
0

Ing. Adrian Ulises Mercado Martnez

b
1

d
c

An
alisis L
exico

Enero 30, 2015

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

Se requiere de mucha cantidad de memoria para almacenar esta


matriz, sin embargo; se puede observar que la mayor parte de la tabla
esta vaca, para ello se usa la tecnica de la tabla compacta.
Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

35 / 64

Obtenci
on de un AFD a partir de una ER

Analisis Lexico

9 Obtencion de un AFD a partir de una ER

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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?

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

43 / 64

Obtenci
on de un AFD a partir de una ER

Analisis Lexico
Funcion ceradura

Funci
on Cerradura

Algoritmo 1: Funcion cerradura


Data: Un conjunto de elementos Q
Result: Un conjunto de elementos basicos Q
Hacer C = Q; Iniciar v = {};
while (existan elementos no basicos en C) do
Sea i un elemento no basico en C;
C = C - {i};
v = v {i};
C = C mov-(i) - v;

return C

1
2
3
4
5

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

45 / 64

Obtenci
on de un AFD a partir de una ER

Analsis Lexico
Funcion Goto

Algoritmo 2: Funcion goto(q,a)


Data: Un conjunto de elementos q y un smbolo a
Result: Un conjunto de elementos q
Iniciar q= {};
foreach (elemento r=a) do
if ( r=a) no esta en q then
agregar r=a a q;

return Cerradura(q)

1
2
3

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

46 / 64

Obtenci
on de un AFD a partir de una ER

Analisis Lexico
Obtenci
on de un AFD a partir de ER.

Algoritmo 3: Obtencion del AFD que reconoce a una ER.


Data: Un conjunto de Expresiones Regulares (r1 , r2 , ...rn ).
Result: Un Automata Finito Determinstico.
Hacer Q = {q0 =cerradura(r1 = , r2 = , ...., rn = )};
repeat
foreach estado qi en Q do
foreach a do
if goto(qi , a) no esta en Q then
agregar goto(qi , a) a Q1;

until no se agreguen mas estados;

1
2
3
4
5

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

49 / 64

Minimizaci
on de un AFD

Analisis Lexico
1

2
3
4

6
7
8
9
10

Iniciar con una particion de dos grupos F y S, el de estados de


aceptacion y el de no aceptacion;
Hacer nueva = ;
for cada grupo G en do
Particionar G en subgrupos de tal forma que dos estados s y t,
pertenecen al mismo subgrupo, si y solo si, para cada smbolo a
de , s y t tienen transiciones con a hacia estados que
pertenecen a un mismo subgrupo;
Replazar G en nueva por el conjunto de todos los nuevos
subgrupos;
if nueva = then
final = ;
else
Regresar a 3;
Para cada grupo en final elegir un representante de grupo. Los
estados representativos seran el AFD mnimo;
Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

a
B
B
B
B
B

b Es de aceptacion
C
No
D
No
C
No
E
No
C
S

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

ESTADO
A
B
C
D
E

An
alisis L
exico

a
E1
E1
E1
E1
E1

b
E1
E2
E1
E
E1

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

ESTADO
A
C
B
D
E

An
alisis L
exico

a
E3
E3
E3
E3
E3

b
E1
E1
E2
E
E1

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

ESTADO
A
C
B
D
E

An
alisis L
exico

a
E3
E3
E3
E3
E3

b
E1
E1
E2
E
E1

Enero 30, 2015

55 / 64

Algortimo para implementar un Analizador L


exico

Analisis Lexico

11 Algortimo para implementar un Analizador


Lexico

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

56 / 64

Algortimo para implementar un Analizador L


exico

Analisis Lexico
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

q = q0 ; lexema=; buffer = ; final = -1;


while true do
c = next car(); lexema = lexema + c;
if M[q, c]6= -1 then
q = M[q, c];
if F[q] then
final = q;
buffer = lexema;
else
if final 6= -1 then
t = ejecutar(accion[final], buffer);
lexema = c;
if t = -1 then
q = q0 ; buffer =; final =-1;
else
q = q0 ; buffer =; final =-1; lexema=;
return t;
else
//Tratar el error;

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

57 / 64

Especificaci
on de un Analizador L
exico

Analisis Lexico

12 Especificacion de un Analizador Lexico

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

59 / 64

Especificaci
on de un Analizador L
exico

Analisis Lexico

La interfaz del Analizdor Lexico


Una funcion que retorne el siguiente token (next token)
Una funcion que avance el apuntador de lectura.
Una funcion para indicar cual sera el archivo de entrada.
Una funcion que indique el numero de lnea ledo.
Una funcion que devuelva el numero de caracter ledo.
Una funcion que devuelva los errores.

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

60 / 64

Tabla Compacta

Analisis Lexico

13 Tabla Compacta

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

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

Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

62 / 64

Tabla Compacta

Analisis Lexico

Valor
1
4
1
2
3
5
2

Ing. Adrian Ulises Mercado Martnez

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

Enero 30, 2015

63 / 64

Tabla Compacta

Analisis Lexico

1
2
3
4
5
6
7
8
9
10
11
12
13

14

Data: Los enteros i y j


Result: El valor del elemento M[i,j]
int num, com, k;
num = NumFil[i];
if (num =0) then
M = -1;
else
com = PreFil[i];
k =0;
while k<num do
if Columna[com+k] = j then
M = Valor[com+k];
break;
else
k = k+1;
return M
Ing. Adrian Ulises Mercado Martnez

An
alisis L
exico

Enero 30, 2015

64 / 64

You might also like