You are on page 1of 45

Departamento de Ciencias de la Computacin

Anal i zador l xi co
Anss xco
Departamento de Ciencias de la Computacin
Anal i zador l xi co
E anazador xco es un autmata
fnto determnsta que reconoce e
engua|e generado por as expresones
reguares correspondentes a as
undades sntctcas de engua|e.
Autmata
fnto no
determnsta
Autmata
fnto
determnsta
Mnmzar e
nmero de
estados
Impementacn
Expresn
reguar
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Autmata
fnto no
determnsta
Autmata
fnto
determnsta
Mnmzar e
nmero de
estados
Impementacn
Expresn
reguar
Departamento de Ciencias de la Computacin
Expresi ones regul ares
Una expresn reguar es una forma
abrevada de representar cadenas de
caracteres que se a|usten a un patrn.
L(r) - engua|e generado por a
expresn reguar r
Expresones reguares bscas
, L( , L( ) = { } ) = { }
, L() = { }
a , L(a) = { a }
Departamento de Ciencias de la Computacin
Expresi ones regul ares compl ej as
Se construyen expresones reguares
compe|as a partr de as bscas.
Operacones
Concatenacn
L(r.s) = L(r).L(s)
Unn
L(r|s) = L(r) L(s)
Cerre
L(r*) = L(r)*

*

0

Departamento de Ciencias de la Computacin


Anal i zador l xi co
Autmata
fnto no
determnsta
Autmata
fnto
determnsta
Mnmzar e
nmero de
estados
Impementacn
Expresn
reguar
Departamento de Ciencias de la Computacin
Reconocedor
Reconocedor
Un reconocedor de un engua|e es un
programa que toma una cadena y responde s
es, o no, una frase de engua|e.
Autmata Fnto
Un autmata fnto o dagrama de
transcones generazado es un reconocedor
construdo con expresones reguares
Departamento de Ciencias de la Computacin
Autmata Fi ni to No Determi ni sta (AFND)

AFND: ( , O, , O, , q , q
0 0
, F) , F)
: afabeto, con|unto fnto de smboos de
entrada
O: con|unto fnto de estados
: funcn de transcn
(e,s) q; e O, s { }, q O
q q
0 0
O O: estado nca
F O: con|unto de estados fnaes
un subcon|unto
de estados
Departamento de Ciencias de la Computacin
Di agrama de transi ci ones
Un Autmata Fnto se puede
representar medante un dagrama de
transcones que es un grafo drgdo
construdo:
cada nodo est etquetado con un eemento
de O
s (p,a) = q se dbu|a un arco con a etqueta
a de nodo p a nodo q
e estado nca se marca con una fecha
os estado fnaes se marcan con dobe crcuo
Departamento de Ciencias de la Computacin
Di agrama de transi ci ones: ej empl o
Dagrama de transcones
Grafo drgdo etquetado o grafo de
transcones
(q
0
,a) = {q
1
}
(q
0
,b) = {q
2
}
(q
0
,c) = {q
0
}
(q
1
,a) =
(q
1
,b) = {q
2
}
(q
1
,c) = {q
3
}
q
0
q
1
q
2
q
3
*
a b b
c
b
c
= { a, b, c }
O = { q
0
, q
1
, q
2
, q
3
}
q
0
= q
0
F = {q
3
}
(q
2
,a) =
(q
2
,b) = {q
3
}
(q
2
,c) =
Departamento de Ciencias de la Computacin
Di agrama de transi ci ones: ej empl o
Taba de transcones
= { a, b, c }
O = { q
0
, q
1
, q
2
, q
3
}
q
0
= q
0
F = { q
3
}
a b c



q
0
{q
1
}{q
2
}{q
0
}
q
1
{q
2
}{q
3
}
q
2
{q
3
}
*q
3
(q
0
,a) = {q
1
}
(q
0
,b) = {q
2
}
(q
0
,c) = {q
0
}
(q
1
,a) =
(q
1
,b) = {q
1
}
(q
1
,c) = {q
3
}
(q
2
,a) =
(q
2
,b) = {q
3
}
(q
2
,c) =
Departamento de Ciencias de la Computacin
Funci n de transi ci n extendi da
Se puede extender a funcn de
transcn de forma que tome como
argumentos un estado q y una cadena
de smboos w, y devueva un con|unto
de estados.
(q,) = {q}

sea w=xa, (q,x) = {p


1
, p
2
, ..., p
k
} y

entonces (q,w) = {r
1
, r
2
, ..., r
k
}


1,

2,
...

Departamento de Ciencias de la Computacin


Funci n de transi ci n extendi da: ej empl o
(q
0
,) = {q
0
}
(q
0
,0) = (q
0
,0) = {q
0
,q
1
}
(q
0
,00) = (q
0
,0) (q
1
,0) = {q
0
,q
1
} = {q
0
,q
1
}
(q
0
,001) =
(q
0
,0010) =
(q
0
,00101) =
q
0
q
1
q
2
0 1
0,1

Departamento de Ciencias de la Computacin


Expresi n regul ar AFND
Expresones reguares bscas
p q
p q
p q
e =
e =
e = a

a
Departamento de Ciencias de la Computacin
Expresi n regul ar AFND
Expresones reguares
p q
e = r | s

p
1
q
1
r
r
p
2
q
2
s
s
p
1
p
2
q
1
q
2
r
s

e = r s p
1
q
1
r
p
2
q
2
s
Departamento de Ciencias de la Computacin
Expresi n regul ar AFND
Expresones reguares

p
1
q
1
r
r
e = r*
p
p
1
r
q
1
q

Departamento de Ciencias de la Computacin


Expresi n regul ar AFND: ej empl o
Recordamos a gramtca

T
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

N
= {D, N}
S = N
P = {
N D N | D
D 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
}
Departamento de Ciencias de la Computacin
Expresi n regul ar AFND: ej empl o
N D N | D
apcando a rega se obtene a expresn
reguar D.D*
q
1
q
2
D
d

D*
q
3
q
4
d
q
5
q
6

q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

Departamento de Ciencias de la Computacin


Anal i zador l xi co
Mnmzar e
nmero de
estados
Impementacn
Expresn
reguar
Autmata
fnto no
determnsta
Autmata
fnto
determnsta
Departamento de Ciencias de la Computacin
Autmata Fi ni to Determi ni sta ( AFD)

AFD: ( , O, , O, , q , q
0 0
, F) , F)
: afabeto, con|unto fnto de smboos de
entrada
O: con|unto fnto de estados
: funcn de transcn
(e,s) q

; e O, s { }, q

O
q q
0 0
O O: estado nca
F O: con|unto de estados fnaes
un estado
Departamento de Ciencias de la Computacin
AFND vs AFD
La dferenca entre AFD y AFND est en
a funcn de transcn .
AFD
(e,s) q; e O, s { }, q O
toma como argumentos un estado y un
smboo de entrada y devueve un estado.
AFND
(e,s) {q

}; e O, s { }, q

O
toma como argumentos un estado y un
smboo de entrada y devueve un con|unto
de cero, uno o ms estados.
Departamento de Ciencias de la Computacin
Tabl a de transi ci ones: ej empl o
0 1
q
0
q
1
q
0
q
1
q
1
q
2
*q
2
q
2
q
2
(q
0
,0) = q
1
(q
0
,1) = q
0
(q
1
,0) = q
1
(q
1
,1) = q
2
AFD que acepta cadenas que contenen
a subcadena 01
q
0
q
1
q
2
0 1
1 0 0,1
(q
2
,0) = q
2
(q
2
,1) = q
2
Departamento de Ciencias de la Computacin
Tabl a de transi ci ones: ej empl o
q
0
q
1
q
2
0 1
0,1
0 1


q
0
{q
0
,q
1
} {q
0
}
q
1
{q
2
}
*q
2
(q
0
,0) = {q
0
,q
1
}
(q
0
,1) = {q
0
}
(q
1
,0) =
(q
1
,1) = {q
2
}
AFND que acepta ncamente cadenas
de ceros y unos que termnan en 01
AFND
Departamento de Ciencias de la Computacin
Funci n de transi ci n extendi da
Se puede extender a funcn de
transcn de forma que tome como
argumentos un estado q y una cadena
de smboos w, y devueva un estado p.
(q,) = q
sea w=xa, (q,w) = ( (q,x),a)


Departamento de Ciencias de la Computacin
Funci n de transi ci n extendi da: ej empl o
(q
0
,) = q
0
(q
0
,1) = ( (q
0
,),1) = (q
0
,1) = q
1
(q
0
,11) = ( (q
0
,1),1) = (q
1
,1) = q
0
(q
0
,110) =
(q
0
,1101) =
(q
0
,11010) =
(q
0
,110101) =

q
0
q
1
q
3
0
1
q
2
1
1
1
0 0 0

Departamento de Ciencias de la Computacin


Anal i zador l xi co
Mnmzar e
nmero de
estados
Impementacn
Expresn
reguar
Autmata
fnto
determnsta
equvaente
Autmata
fnto no
determnsta
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Autmata
fnto
determnsta
equvaente
Autmata fnto
no
determnsta -
Autmata
fnto no
determnsta
AFD
( , O , O
D D
, ,
D D
, q , q
D0 D0
, F , F
D D
) )
AFND
( , O , O
N N
, ,
N N
, q , q
N0 N0
, F , F
N N
) )
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Autmata
fnto
determnsta
equvaente
Autmata fnto
no
determnsta -
AFD
( , O , O
D D
, ,
D D
, q , q
D0 D0
, F , F
D D
) )
AFND
( , O , O
N N
, ,
N N
, q , q
N0 N0
, F , F
N N
) )
Departamento de Ciencias de la Computacin
AFND- a AFD
Dado un autmata fnto no
determnsta, sempre es posbe
construr un autmata fnto
determnsta equvaente.
Procedmento
Correspondenca de estados
Correspondenca de estado nca
Ccuo de as transcones
Correspondenca de estado fna
Departamento de Ciencias de la Computacin
AFND- a AFD: procedi mi ento
Procedmento
Correspondenca de estados Correspondenca de estados

Los ncos estados O


D
accesbes en AFD son
subcon|untos de O
N
cerrados respecto de .
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

Departamento de Ciencias de la Computacin


AFND- a AFD: procedi mi ento
Procedmento
Correspondenca de estados Correspondenca de estados
Cerre de un estado
q
4
= {q
4
}
q
5
= {q
4
,q
5
,q
6
}
q
6
= {q
6
}
_
_
_
q
1
= CLAUS

(q
1
) = {q
1
}
q
2
= {q
2
,q
3
,q
4
,q
6
}
q
3
= {q
3
,q
4
,q
6
}
_
_
_
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

O
D
Departamento de Ciencias de la Computacin
AFND- a AFD: procedi mi ento
Procedmento
Correspondenca de estado nca Correspondenca de estado nca
E estado nca de AFD es e resutado de
cacuar e cerre de estado nca de AFND

E cerre , CLAUS

de un estado es e con|unto
de estados acanzabes medante cero o ms
transcones
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

Departamento de Ciencias de la Computacin


AFND- a AFD: procedi mi ento
Procedmento
Correspondenca de estado nca Correspondenca de estado nca

Cerre de estado q
N0
q
1
= CLAUS

(q
1
) = {q
1
}
_
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

q
D0
= {q
1
}
Departamento de Ciencias de la Computacin
AFND- a AFD: procedi mi ento
Procedmento
Ccuo de as transcones Ccuo de as transcones
En AFD habr una transcn de tpo
Para cacuar est transcn habr que cacuar
P
a
= {q AFND | para agn p P }

O es e cerre de P
a
P O
a
p q
a
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

Departamento de Ciencias de la Computacin


AFND- a AFD: procedi mi ento
Procedmento
Ccuo de as transcones Ccuo de as transcones

D D
(s,d) donde s O
D

s = {p
1
, ..., p
k
}
obtener

D D
(s,d) =
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

0
k

N
p

,ar
1
,...,r
m

| 1
m
CLAUS r
|

Departamento de Ciencias de la Computacin


AFND- a AFD: procedi mi ento
Procedmento
Ccuo de as transcones Ccuo de as transcones
Transcones

N N
(q
1
,d) = {q
2
}

N
(q
1
,) =

N N
(q
2
,d) =

N
(q
2
,) = {q
3
}

N N
(q
3
,d) =

N
(q
3
,) = {q
4
,q
6
}

N N
(q
4
,d) = {q
5
}

N
(q
4
,) =

N N
(q
5
,d) =

N
(q
5
,) = {q
4
,q
6
}
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6


N N
(q
6
,d) =

N
(q
6
,) =
Departamento de Ciencias de la Computacin
AFND- a AFD: procedi mi ento
Procedmento
Ccuo de as transcones Ccuo de as transcones

N N
(q
1
,d) = {q
2
}

D D
(q
1
,d) = q
2
= {q
2
,q
3
,q
4
,q
6
}

D D
(q
2
,q
3
,q
4
,q
6
,d) =
D D
(q
4
,d)
_

N N
(q
4
,d) = {q
5
}

D D
(q
4
,d) = q
5
= {q
4
,q
5
,q
6
}

D D
(q
4
,q
5
,q
6
,d) =
D D
(q
4
,d)
_
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

Departamento de Ciencias de la Computacin


AFND- a AFD: procedi mi ento
Procedmento
Correspondenca de estado fna Correspondenca de estado fna
En e AFD un estado ser fna s contene agn
estado fna de AFND
q
1
q
2
D.D*
d

q
3
q
4
d
q
5
q
6

{q
1
}
D.D*
d
{q
2
,q
3
,q
4
,q
6
}
d
{q
4
,q
5
,q
6
}
d
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Autmata
fnto
determnsta
equvaente
Autmata
fnto no
determnsta
AFD
( , O , O
D D
, ,
D D
, q , q
D0 D0
, F , F
D D
) )
AFND
( , O , O
N N
, ,
N N
, q , q
N0 N0
, F , F
N N
) )
Departamento de Ciencias de la Computacin
AFND a AFD: ej empl o
q
0
q
1
q
2
0 1
0,1
0 1


{q
0
} {q
0
,q
1
} {q
0
}
{q
1
} {q
2
}
*{q
2
}
Taba de transcones
Departamento de Ciencias de la Computacin
AFND a AFD: ej empl o
q
0
q
1
q
2
0 1
0,1
0 1

{q
0
} {q
0
,q
1
} {q
0
}
{q
1
} {q
2
}
*{q
2
}
{q
0
,q
1
} {q
0
,q
1
} {q
0
,q
2
}
*{q
0
,q
2
} {q
0
,q
1
} {q
0
}
*{q
1
,q
2
} {q
2
}
*{q
0
,q
1
,q
2
} {q
0
,q
1
} {q
0
,q
2
}
Taba de transcones competa
ncos estados acanzabes
partendo de estado nca
Departamento de Ciencias de la Computacin
AFND a AFD: ej empl o
{q
0
} {q
0
,q
1
} {q
0
,q
2
}
0 1
1 0
0
1
AFD resutante
Departamento de Ciencias de la Computacin
Ej erci ci os
E|erccos
Departamento de Ciencias de la Computacin
AFND- a AFD: ej erci ci o
E|ercco
Autmata fnto no determnsta que acepta
un nmero decma con sgno opcona y
punto decma.
q
0
q
2
q
5
. d
d
,+,
d
q
1
q
4
q
3
d
.

Departamento de Ciencias de la Computacin


AFND- a AFD: ej erci ci o
E|ercco
p q r
b b
a a

c
a

c
Departamento de Ciencias de la Computacin
AFND a AFD: ej erci ci o
E|ercco
p r s
0 0
0,1 a
q
0,1
0,1
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Impementacn
Expresn
reguar
Autmata
fnto no
determnsta
Mnmzar e
nmero de
estados
Autmata
fnto
determnsta
Departamento de Ciencias de la Computacin
Autmata Fi ni to M ni mo
Para cuaquer autmata fnto, exste
un autmata fnto mnmo equvaente.
Identfcar estados equvaentes
estados equvaentes (no dstngubes)
os estados p y q son equvaentes s para toda
cadena w, (p,w) es un estado fna s (q,w) es
un estado fna.
defne una reacn de equvaenca en e
con|unto de estados de autmata.


Departamento de Ciencias de la Computacin
Autmata Fi ni to M ni mo
Identfcar estados equvaentes
ccuo de os pares de estados dstngubes
medante e agortmo por enado de taba
s p es un estado fna y q no o es {p,q} es
dstngube
s para dos estados p y q se cumpe que
(p,a) = r y (q,a) = s, y r y s son
dstngubes,
entonces p y q son dstngubes.
Departamento de Ciencias de la Computacin
Autmata Fi ni to M ni mo
Identfcar estados equvaentes
{q
1
}
D.D*
d
{q
2
,q
3
,q
4
,q
6
}
d
{q
4
,q
5
,q
6
}
d
s t
r y s son dstngubes por a rega prmera
r y t son dstngubes por a rega prmera
s y t no son dstngubes s y t no son dstngubes
(s,d) = t
(t,d) = t
r
Departamento de Ciencias de la Computacin
Autmata Fi ni to M ni mo
Autmata fnto mnmo
Construccn
cada case de equvaenca es un estado de
AFM
e estado nca de AFM es e estado que
contene e estado nca de orgna
e con|unto de estados fnaes de AFM es e
con|unto de estados que contenen os estados
fnaes de orgna
sea a funcn de transcn de AFM, s S y T
son estados equvaentes de orgna y a es un
smboo de entrada (S,a)=T, s se cumpe que
para todo estado q de S, (q,a) pertenece a T
Departamento de Ciencias de la Computacin
Autmata Fi ni to M ni mo
Autmata fnto mnmo
{q
1
}
D.D*
d
{q
2
,q
3
,q
4
,q
6
}
d
{q
4
,q
5
,q
6
}
d
s t
case de equvaenca {r} y {s,t}
estado nca ser e de a case {r}
estado fna ser e de a case {s,t} estado fna ser e de a case {s,t}
transcones transcones
r r s s {r} {r} {s,t} {s,t}
s s t t {s,t} {s,t} {s,t} {s,t}
t t t t {s,t} {s,t} {s,t} {s,t}
r
r
d
s
d
Departamento de Ciencias de la Computacin
Autmata Fi ni to M ni mo: Ej erci ci o
Autmata fnto determnsta
{q
0
,q
1
} {q
1
,q
4
}
.
d
d
+,
d
{q
1
}
{q
2
}
d
{q
3
,q
5
}
{q
2
,q
3
,q
5
}
.
d
d
.
Departamento de Ciencias de la Computacin
Autmata Fi ni to M ni mo: Ej erci ci o
Autmata fnto determnsta
{q
0
} {q
1
} {q
2
} {q
3
}
{q
4
} {q
5
} {q
6
} {q
7
}
0
1
0
0
0
0
0
0
0
1 1
1
1
1 1
1
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Impementacn
Expresn
reguar
Autmata
fnto no
determnsta
Autmata
fnto
determnsta
Mnmzar e
nmero de
estados
Departamento de Ciencias de la Computacin
Di agrama de transi ci ones
Autmata Fnto Determnsta (AFD)
Dce s una cadena de caracteres pertenece a
engua|e.
nngn estado tene una transcn
para cada estado so una transcn puede sar
etquetada con un smboo
Departamento de Ciencias de la Computacin
Di agrama de transi ci ones
Dagrama de transcones (DT)
Lee caracteres hasta que se compete a
cadena de entrada
nforma de a cadena recogda medante un
token
de|a a entrada preparada para a nterpretacn
de sguente cadena
No tene estados de absorcn (cadenas
ncorrectas)
No tene estados de error (sn transcn
error)
Departamento de Ciencias de la Computacin
Di agrama de transi ci ones
Un dagrama de transcones especfca
correctamente e funconamento de un
anazador xco
E|empo de reconocedor de nmeros enteros
sn sgno medante a expresn reguar |0-9|
E0
E1 E2
d
otro
*
Mquna de
estados
Autmata
Fnto
Determnsta
Dagrama de
transcones d |0-9|
d
Departamento de Ciencias de la Computacin
Di agrama de transi ci ones
E2: estado de aceptacn.
Est marcado con un astersco
se ega a eyendo un carcter ms de os
necesaros para reconocer a cadena de entrada
asocada a un token
hay que devover ese carcter a a entrada.
E anazador nformar de error s
se produce una transcn no autorzada o
a cadena de entrada fnaza en un estado
que no es e de aceptacn
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Tareas
Lee os caracteres de programa
fuente
Construye/devueve unos pares:
smboos ntermedos (tokens tokens)
exemas exemas
Rechaza texto con caracteres
egaes o combnacones egaes.
Departamento de Ciencias de la Computacin
Anal i zador l xi co
Funconamento de anazador xco
Anazador
xco
Anazador
sntctco
Programa
fuente
Taba de
smboos
token
siguiente

Anazador xco funcona como subrutna
de anazador sntctco
Departamento de Ciencias de la Computacin
Ej empl o
E|: "15*7-6"
representacn como token, exema
Token Lexema
entero 15
por *
entero 7
resta -
entero 6
Los componentes xcos
se especfcan medante
expresiones regulares
Lexema Lexema: Undad bsca de
xco, portadora de
sgnfcado propo.
Departamento de Ciencias de la Computacin
Anal i zador l xi co: Operaci ones
Abrr, eer y cerrar e programa fuente.
Ignora os comentaros, separadores,
tabuadores, retornos de carro, etc.
Sta e error en e programa fuente:
nmero de nea y coumna
procesada.
Preproceso macros, defncones,
constantes y rdenes de ncusn de
otros fcheros
Departamento de Ciencias de la Computacin
Errores l xi cos
Errores que tpcamente detecta e
anazador xco:
Utzar caracteres que no pertenecen a
afabeto de engua|e ("", "")
Cadena (con|unto de caracteres) que no
concden con nnguno de os patrones de
os tokens posbes (":=" s, pero ":" no)
Departamento de Ciencias de la Computacin
Detecci n de errores y recuperaci n
Posbes accones de anazador
xco para detectar errores,
recuperarse y segur traba|ando
Ignorar os caracteres no vdos hasta
formar un token segn os patrones dados.
Borrar os caracteres extraos.
Insertar un carcter que pudera fatar.
Reempazar un carcter presuntamente
ncorrecto por uno correcto
Conmutar as poscones de dos caracteres
adyacentes
Departamento de Ciencias de la Computacin
Ej empl o de anl i si s l xi co
Cadena de caracteres: x := y /0.25
x es un dentfcador
:= es un operando
y es un dentfcador
/ es un smboo
0.25 es un nmero entero
E Anazador xco debe ntentar eer
e token ms argo posbe
Ou poscones
deber acanzar para
decdr os tokens
reconocdos?
Departamento de Ciencias de la Computacin
Ej empl o de anl i si s l xi co
x := y /0.25
separador
dentf.
nmero
operador
dentf. smboo
Departamento de Ciencias de la Computacin
Especi fi caci n de un anal i zador l xi co
Patrn:
expresin regular que define el conjunto de
cadenas que cada uno de los tokens representa.
Tokens:
eementos xcos de engua|e y os smboos de
a gramtca.
Lexema:
secuenca de caracteres de cdgo fuente que
concuerda con e patrn de un token.
Atrbutos:
nformacn adcona sobre e exema (taba de
smboos)
Departamento de Ciencias de la Computacin
Ej empl o
E|empo de componente xco (token),
exema y patrn
Lexema Componente
xco (token)
Patrn
Preco Identfcador Secuenca de etras
128
Constante numrca Secuenca de
dgtos
= Carcter "=" Asgnacn
Departamento de Ciencias de la Computacin
Identi fi cador de pal abras reservadas
Reservadas para usos especfcos.
Dferencaras de os dentfcadores
Resoucn mpcta: consderar que todas
son dentfcadores y buscaras en una
taba.
Resoucn expcta: se ndcan todas as
expresones reguares de todas as
paabras reservadas y se ntegran os
dagrama de transcones resutantes de
sus especfcacones xcas en a mquna
reconocedora
Departamento de Ciencias de la Computacin
Resol uci n i mpl ci ta
Prmero ncazar a taba de smboos
con todas as paabras reservadas.
Cuando encuentre un dentfcador se
va a mrar a taba de smboos.
S o encuentra en a zona reservada para
eas es una paabra reservada,
y s no, ser un dentfcador.
Departamento de Ciencias de la Computacin
Resol uci n i mpl ci ta
1. Zona de
paabras
reservadas
for Paabra reservada
whe Paabra reservada
..... .....
dato1 Identfcador
2. Zona de
dentfcadores
Departamento de Ciencias de la Computacin
Resol uci n expl ci ta
Los patrones de especfcacn xca
de engua|e tendrn su
correspondenca en e dagrama de
transcones goba a partr de cua se
mpementar e anazador xco.
Las paabras reservadas pueden ser
pref|os de dentfcadores.
E|.: "do" -paabra reservada- y "dos"
-dentfcador-.
Departamento de Ciencias de la Computacin
Ej empl o: Di agrama de transi ci ones
Construr un dagrama de transcones
para e reconocmento de:
dentfcadores
nmeros enteros sn sgno
paabras reservadas "do" y "done"
Departamento de Ciencias de la Computacin
Ej empl o: Di agrama de transi ci ones
Dagrama de transcones
d = dgto
l = etra
f = afanumrco
otro afanumrco
(nmero) = r a
estado nmero
0
1
l
f
otro *
2
3
d
otro
*
4
d
5 6 8 9
10
*
*
7
(1) (2) (1) (1) (2) (1)
'd'
'o'
'n' 'e'
f otro otro otro
otro
f f
f
IDENTIFICADOR
ENTERO
DONE
DO
Departamento de Ciencias de la Computacin
Ej empl o: Di agrama de transi ci ones
Dagrama de transcones
Todos os estados de aceptacn estn
marcados con astersco, por o que
sempre habr que devover e tmo
carcter a a entrada.
Todos os tokens
son unos pref|os de otros (do done
dentfcador), o ben
son cadenas no especfcas (entero e
dentfcador)
Departamento de Ciencias de la Computacin
Ej erci ci o: Di agrama de transi ci ones
Construr dagrama de transcones
para e reconocmento de
nmeros enteros con sgno negatvo o sn
sgno ((-|).d)
operadores suma ("+")
operadores dobe ncremento ("+++")
Departamento de Ciencias de la Computacin
Ej erci ci o: Di agrama de transi ci ones
Dagrama de transcones
0
8
-
6
d
otro
*
7
d
1 3 5
**
4
+
+
+
otro otro
ENTERO
2INCR
SUMA
d
*
2 SUMA
Departamento de Ciencias de la Computacin
Ej erci ci o: Di agrama de transi ci ones
Dagrama de transcones
Estado de aceptacn 2INCR
no eva astersco por ser cadena
especfca y no ser pref|o de nnguna
otra.
Estados de aceptacn suma
son pref|os de 2INCR
Estados de aceptacn suma con dos
asterscos
Departamento de Ciencias de la Computacin
Impl ementaci n de anal i zadores l xi cos
Generador automtco (LEX):
expresones reguares de os patrones
tokens de engua|e
accones a tomar
comoddad desarroo, peco efcente
Lengua|e de ato nve.
Ms efcente, pero a mano.
Lengua|e ensambador.
Mxma efcenca, pero compcado
desarroar y mantener.
Departamento de Ciencias de la Computacin
Impl ementaci n a mano de un anal i zador
l xi co
Impementando e dagrama de
transcones medante a construccn de
su taba de transcones.
fas: estados de dagrama de transcones
coumnas: posbes entradas
Impementando drectamente, utzando
estructuras de seeccn mtpe (swtch en
C, case en Pasca) para eer caracteres hasta
competar e token.
Departamento de Ciencias de la Computacin
Ej empl o
E|empo de taba de transcones para
nmeros enteros
0
1 2
|0-9|
|0-9|
otro
*
Estado 0-9 otro token Retroceso
0 1 Error - -
1 1 2 - -
2 - - Num_entero 1
Departamento de Ciencias de la Computacin
Ej empl o
Taba de transcones nmeros enteros
con sgno y os operadores suma y dobe
ncremento
Estado + - d Token Retroceso
0 1 8 6 - -
1 3 2 2 - -
2 - - - SUMA 1
3 5 4 4 - -
4 - - - SUMA 2
5 - - - 2INCR 0
6 7 7 6 - -
7 - - - ENTERO 1
8 Error Error 6 - -
Departamento de Ciencias de la Computacin
Pri ori dad de l os tokens
Dar prordad a token con e exema
ms argo.
E|.: ">=" y ">" se queda con e
prmero.
S e msmo exema se puede
asocar a dos tokens, estos patrones
estarn defndos en un orden.
E|.: LEX ege e que aparezca prmero
Departamento de Ciencias de la Computacin
Ej empl o de pri ori dad de tokens
En LEX aparecen expresones
reguares:
whe paabra reservada whe
l (l | d)* dentfcador
S en a entrada aparece "whe"
LEX ege a paabra reservada por
estar prmero.
S apareceran en orden nverso, LEX
devovera e token dentfcador
Departamento de Ciencias de la Computacin
Ej erci ci o
nmero
varabe
operadores reaconaes
operadores de asgnacn
operadores mutpcatvos
operadores adtvos
operadores unaros
operadores gcos
barras, parntess, corchetes, coma, punto y coma, ....
Defnr as expresones reguares de
engua|e C de forma que e anazador
xco enve os sguentes tokens.
Departamento de Ciencias de la Computacin
Ej erci ci o
nmero
varabe
operadores reaconaes
operadores de asgnacn
operadores
mutpcatvos
operadores adtvos
operadores unaros
operadores gcos
barras, parntess,
corchetes, coma, punto y
coma, ....
|0-9|+
|a-zA-Z_||a-zA-Z0-9_|*
!= | == | >= | > | <= | <
= | += | -= | *= | /= | %=
* | / | %
+ | -
- | ++ | --
&& | || | !
"|"
"("
")"
"|"
"|"
";"
numero
varabe
opre
asgn
opmu
opadd
opuna
opog
barra
par
rpar
cor
rcor
puntco
Expresn reguar token
Departamento de Ciencias de la Computacin
Ej erci ci o
whe paabra reservada (en mnscuas)
when paabra reservada (en mnscuas)
dent cuaquer secuenca de etras
(mayscuas o mnscuas) y dgtos,
que empece por una etra, y que no
concda con nnguna de as paabras
reservadas
opsum e smboo '+'
opmu e smboo '*'
opnc e smboo '++'
Dsear un dagrama de transcones
determnsta para reconocer os
sguentes xcos

You might also like