Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Expresiones Regulares
Expresiones Regulares
Curso de Compiladores
Preparado por
Manuel E. Bermúdez, Ph.D.
Associate Professor
University of Florida
Expresiones Regulares
• Una descripción compacta y fácil de leer de un
lenguaje regular.
1. ø denota el lenguaje ø
2. ε denota el lenguaje {ε}
3. a denota el lenguaje {a}, para todo a Σ.
4. (P + Q) denota L(P) U L(Q), donde P, Q son e.r.’s.
5. (PQ) denota L(P)·L(Q), donde P, Q son e.r.’s.
6. P* denota L(P)*, donde P is una e.r.
Ejemplo:
S → aS R → aS
→ bR
→ε
¿ Qué significa S → aS ?
L(S) {a}·L(S)
S → bR significa L(S) {b}·L(R)
S → ε significa L(S) {ε}
Expresiones Regulares
Juntas (las tres opciones de S) significan que
L(S) = {a}·L(S) + {b}·L(R) + {ε}
o bien, S = aS + bR + ε
Entonces, S = aS + bR + ε
R = aS
Sustituimos R = aS:
S = aS + baS + ε
= (a + ba) S + ε
En nuestro caso,
S = (a + ba) S + ε
= (a + ba)* ε
= (a + ba)*
Expresiones Regulares
Algoritmo 5:
Gramática Lineal Derecha → Expresión Regular
1. A = α1 + α2 + … + αn si A → α1
→ α2
.
.
.
→ αn
Expresiones Regulares
2. Si la ecuación es de la forma X = α, donde X no
aparece in α, se reemplaza toda ocurrencia de X
con α en todas las demás ecuaciones, y se
elimina la ecuación X = α.
S = a + bU + bR
R = abaU + U = (aba + ε) U
U = aS + b
Sustituimos R:
S = a + bU + b(aba + ε) U
U = aS + b
Expresiones Regulares
Sustituimos U:
S = a + b(aS + b) + b(aba + ε)(aS + b)
= a + baS + bb + babaaS + babab + baS + bb
repetidas
Y entonces,
S = (ba + babaa)*(a + bb + babab)
Lenguajes Regulares
Resumiendo:
RE NFA DFA
Expresiones Regulares
Algoritmo 6 (Versión 1):
Expresión Regular → FSA (Autómata Finito
no-determinístico)
Conversiones:
1 2
para ø
Expresiones Regulares
• para
1 ε
a
• 1
para a 2
P
ε ε
• 1para P + Q 2
ε ε
Q
• ε
P Q
ó ε ε ε para P· Q
1 P Q 2
Expresiones Regulares
ε
ε ε
1 P 2 para P*
ε
Ejemplo: (b (aba + ε) a)*
b (b (aba + ε) a)*
1 2
a
3 4 (b (aba + ε) a)*
b
5 6
(b (aba + ε) a)*
Expresiones Regulares
a
7 8 (b (aba + ε) a)*
9 (b (aba + ε) a)*
a
10 11
(b (aba + ε) a)*
3 a 4 ε 5 b 6
ε (b (aba + ε) a)*
8 7
a
Expresiones Regulares
ε 3 a 4 ε 5 b 6
12 ε (b (aba + ε) a)*
ε 9 ε 13 8 7
ε a
b
2 1
ε (b (aba + ε) a)*
ε 3 a 4 ε 5 b 6
12 ε
ε 9 ε 13 8 7
ε a
Expresiones Regulares
b
2 1
(b (aba + ε) a) *
ε
ε 3 a 4 ε 5 b 6
12 ε
ε 9 13 8 7
ε ε a
ε
a 10
11
Expresiones Regulares
(b (aba + ε) a)*
14 ε 1 b 2 ε 12 ε 3 a 4
ε ε ε
ε
11 9 5
ε a ε
15 10 13 ε 8 7 6
ε a ε
Expresiones Regulares
ab a b
a
a+b
b
Expresiones Regulares
Algoritmo 6 versión 1:
• Construye FSA de abajo hacia arriba
• Bueno para máquinas
• Malo para seres humanos
Algoritmo 6 versión 2:
• Construye FSA de arriba hacia abajo
• Malo para máquinas
• Bueno para seres humanos
Expresiones Regulares
Ejemplo (Versión 2):
(a + b)* aa + bb
aa
ε ε
bb
a+b
ε ε a a
a b b
b
Expresiones Regulares
Ejemplo (Versión 2):
ba(a + b)* ab
a
b a ε ε a b
b
Lenguajes Regulares
Resumiendo:
RE Algoritmo 6
NFA DFA
Autómatas de Estado Finito
Determinísticos (DFA’s)
Así,
ε a
y
a
son impossibles.
Autómatas de Estado Finito
Determinísticos (DFA’s)
a
ε
2 3 b
ε
1 a 6 NFA
b 4 5 ε
ε
Autómatas de Estado Finito
Determinísticos (DFA’s) a
ε
ε 2 3 b
Entrada a ε 6
1 b ε
Estado a b 4 5
123 23 456
23 23 6
456 56 ---
6 --- ---
a
56 56 --- b 6
23
a
DFA: 123 b a
456 56 a
Autómatas de Estado Finito
Determinísticos (DFA’s)
En general, si el NFA tiene N estados, el DFA puede
tener hasta 2N estados.
ε
Ejemplo: ba (a + b)* ab a
4 5
ε ε
b a ε 8
0 1 2 3
ε 6 7 ε
b
NFA
ε
ε
b a
11 10 9
ε
a
ε 4 5 ε
b a ε
0 1 2 3 8
ε 6 7 ε
b
NFA ε
ε
b a
11 10 9
Estado a b
0 --- 1
1 234689 ---
234689 34568910 346789
34568910 34568910 34678911
346789 34568910 346789
34678911 34568910 346789
Autómatas de Estado Finito
Determinísticos (DFA’s)
DFA a
34568910 b
a
b a a
0 1 234689 a 34678911
b 346789 b
b
Lenguajes Regulares
Resumiendo:
RE Algoritmo 6
NFA DFA
Algoritmo 7
Minimización de Estados
Nota: Π2 es un refinamiento de Π1 , y Π3 es un
refinamiento de Π2.
Minimización de Estados
Algorithmo 8 (Minimización de un DFA):
1. Eliminar las transiciones indefinidas introduciendo el
estado TRAMPA, desde el cual no se llega un estado
final.
2. Particionar los estados en dos grupos (finales y no-
finales).
3. Completar la tabla de estados, especificando las
transiciones de cada grupo a otros.
Refinar la partición: se desprenden los grupos con
transiciones distintas.
4. Repetir el paso 3 hasta no haber más refinamientos.
5. Determinar los estados finales.
Minimización de Estados
a b
Ejemplo:
2 4
a
1 a
a b
Π0 = { {1, 2, 3, 4}, {5} }
b a
b
3 5
Estado a b
1 1234 1234 b
2 1234 1234
3 1234 1234 Se desprende {4}
4 1234 5 de la partición
{1,2,3,4}
5 1234 1234
Minimización de Estados a b
2 4
Π1 = { {1, 2, 3}, {4}, {5} } a
1 a
a b
Estado a b a
b b
1 123 123 3 5
2 123 4
3 123 123
4 123 5
5 123 123
a b
b
No más refinamientos
4
DFA Mínimo
Lenguajes Regulares
Resumiendo:
Algoritmo 5 Algoritmo 8
RE Algoritmo 6
NFA DFA
Algoritmo 7
Listo !
Resumen de Lenguajes
Regulares
• La clase más pequeña de la jerarquía de
Chomsky.
• Apropiada para el análisis léxico.
• Cuatro representaciones: RGR, RGL, ER y FSA.
• Las cuatro son equivalentes (algoritmos de
transformación).
• Diversas ventajas y desventajas entre las cuatro
representaciones, para el diseñador, el
implementador, y el usuario de un lenguaje.
• Los FSA se pueden hacer determinísticos y
mínimos.