Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of...
-
Upload
saulo-buitrago -
Category
Documents
-
view
108 -
download
1
Transcript of Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of...
Expresiones Regulares
Preparado por
Manuel E. Bermúdez, Ph.D.Associate ProfessorUniversity of Florida
Curso de Compiladores
Expresiones Regulares
• Una descripción compacta y fácil de leer de un lenguaje regular.
• Usamos operadores para denotar constructores de lenguajes, y construir lenguajes complejos a partir de lenguajes “atómicos” sencillos.
Expresiones RegularesDefinición: Una expresión regular sobre un alfabeto Σ se
define recursivamente:
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.
Para evitar paréntesis excesivos, asumimos asociatividad izquierda, con la siguiente precedencia (de mayor prioridad a menor prioridad): *, ·, +
Expresiones Regulares
Ejemplos:(O + 1)*: una hilera de O’s y 1’s.(O + 1)*1: una hilera de O’s y 1’s, que termina en 1.1*O1*: una hilera de 1’s con un O insertado.Letter (Letter + Digit)*: un identificador.Digit Digit*: un entero.Quote Char* Quote: una hilera. †# Char* Eoln: un comentario. †{Char*}: otro comentario. †
† Assumiendo que Char no contiene ‘Quote’, eoln, o ‘}’ .
Expresiones Regulares
Conversión de gramática lineal derecha a expresión regular
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 + ε
Similarmente, R → aS significa que R = aS.
Entonces, S = aS + bR + ε R = aS
Sistema de ecuaciones simultáneas, en la cual las variables son los no-terminals.
Expresiones Regulares
Solución del sistema de ecuaciones simultáneas.S = aS + bR + εR = aS
Sustituimos R = aS:S = aS + baS + ε
= (a + ba) S + ε
Pregunta: ¿ Qué hacemos con ecuaciones de la forma X = X + β ?
Expresiones Regulares
Respuesta: β L(x), así que αβ L(x),
ααβ L(x), αααβ L(x), …
y entonces, α*β = L(x).
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 = α.
Si la ecuación es de la forma X = αX + β, donde X no occurre en α o en β, se reemplaza la ecuación con X = α*β.
Nota: Se puede necesitar manipulación algebraica para obtener la forma X = αX + β.
Importante: La concatenación no es conmutativa!!
Expresiones Regulares
Ejemplo: S → a R → abaU U → aS → bU → U → b → bR
S = a + bU + bRR = abaU + U = (aba + ε) UU = aS + b
Sustituimos R:S = a + bU + b(aba + ε) UU = aS + b
Expresiones Regulares
Sustituimos U:S = a + b(aS + b) + b(aba + ε)(aS + b) = a + baS + bb + babaaS + babab + baS + bb
= (ba + babaa)S + (a + bb + babab)
Y entonces, S = (ba + babaa)*(a + bb + babab)
repetidas
Lenguajes Regulares
Resumiendo:
RGR RGL DFA
Mínimo
RE NFA DFA
Listo
ProntoAlgoritmos 1,2 Algoritmos 3,4
Algoritmo 5
Expresiones Regulares
Algoritmo 6 (Versión 1):Expresión Regular → FSA (Autómata Finito no-determinístico)
Se construye el FSA recursivamente, según la estructura de la expresión regular. Cada FSA
tiene un estado inicial, y uno final.
Conversiones:
para ø21
Expresiones Regulares
• para ε
• para a
• para P + Q
•
ó para P· Q
1
1 2a
1 2
ε
Q
P
ε ε
ε
P Qε
1 Pε
Q 2ε ε
Expresiones Regulares para P*
Ejemplo: (b (aba + ε) a)*
(b (aba + ε) a)*
(b (aba + ε) a)*
(b (aba + ε) a)*
1 Pε
2
ε
ε
ε
1 2
3 4
5 6
b
a
b
Expresiones Regulares
(b (aba + ε) a)*
(b (aba + ε) a)*
(b (aba + ε) a)*
(b (aba + ε) a)*
7 8
9
10 11
a
a
3 4 5 6
78
a b
a
εε
Expresiones Regulares
(b (aba + ε) a)*
(b (aba + ε) a)*
3 4 5 6
78
a b
a
εε
13912
εεε
ε
3 4 5 6
78
a b
a
εε
13912
εεε
ε
2 1b
ε
Expresiones Regulares
(b (aba + ε) a) *
3 4 5 6
78
a b
a
εε
13912
εεε
ε
2 1b
ε
1011
εa
Expresiones Regulares
(b (aba + ε) a)*
2 12 3 4
67
ε a
ε
ε
813 aε
14 1ε b
10 ε ε
59ε
ε
11ε
a15
ε
ε
Expresiones Regulares
Algoritmo 6 (Versión 2):Expresión Regular → FSA (Autómata Finito no-determinístico)
Punto de inicio:
E
Expresiones RegularesReglas de conversión:
a*
a + b
ab
ε εa
a b
a
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)
(a + b)* aa + bb
ε εaa
bba + b
ε ε
a
b
a a
b b
Expresiones Regulares
Ejemplo (Versión 2):
ba(a + b)* ab
b a ε ε a b
a
b
Lenguajes Regulares
Resumiendo:
RGR RGL DFA
Mínimo
RE NFA DFA
Listo
ProntoAlgoritmos 1,2 Algoritmos 3,4
Algoritmo 5
Algoritmo 6
Autómatas de Estado Finito Determinísticos (DFA’s)
Definición: Un FSA determinístico se define igual que uno no-determinístico, excepto que
δ: Q x Σ → Q, en lugar deδ: Q x Σ U {ε} → 2Q
Así,
y
son impossibles.
ε a
a
Autómatas de Estado Finito Determinísticos (DFA’s)
Cada transición de un DFA consume un símbolo. Afortunadamente, los DFA’s tiene el mismo poder (de reconocimiento) que los NFA’s.
Teorema: Para cada NFA existe un DFA equivalente (i.e. que acepta el mismo lenguaje).
Autómatas de Estado Finito Determinísticos (DFA’s)
Algoritmo 7: Conversión de NFA a DFA:
• Se “simulan” las transiciones del NFA, con el DFA.• El estado inicial del DFA es el estado inicial del NFA
(digamos, S), junto con todos los estados alcanzables (con ε) desde S.
• Cada estado del DFA es un subconjunto de los estados del NFA.
• Estados nuevos en el DFA se construyen calculando el conjunto de estados alcanzables desde estados del NFA, para cada símbolo.
• Los estados finales del DFA son los que contienen al menos un estado final del NFA.
Autómatas de Estado Finito Determinísticos (DFA’s)
Ejemplo: a*b + ba*
NFA
ε
b
b
ε ε
ε
1
3
4
2
5
6
a
a
Autómatas de Estado Finito Determinísticos (DFA’s)
EntradaEstado a b123 23 456 23 23 6456 56 --- 6 --- --- 56 56 ---
DFA:
a
a
b123
23
456 56
6b
a a
ε
b
b
ε ε
ε
1
3
4
2
5
6
a
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
ε ε
ε
3
5
6
4
7
8b a ε0 1 2
b
ε
ε
11 10 9
NFAε
ab
Estado a b 0 --- 1 1 234689 --- 234689 34568910 34678934568910 34568910 34678911 346789 34568910 34678934678911 34568910 346789
εa
ε ε
ε
3
5
6
4
78
b a ε0 1 2
b
ε
ε
11 10 9
NFA ε
ab
Autómatas de Estado Finito Determinísticos (DFA’s)
a
b
a
b
234689
346789
b
34568910
34678911a
b
a0 1 ab
DFA
Lenguajes Regulares
Resumiendo:
RGR RGL DFA
Mínimo
RE NFA DFA
Listo
ProntoAlgoritmos 1,2 Algoritmos 3,4
Algoritmo 5
Algoritmo 6 Algoritmo 7
Minimización de Estados
Teorema: Dado un DFA M, existe un DFA M’ equivalente que es mínimo, i.e. no existe ningún otro DFA equivalente con menos estados que M’.
Definición: Una partición de un conjunto S es un conjunto de subconjuntos de S, tal que cada elemento de S aparece en uno (y solo uno) de esos subconjuntos.
Minimización de Estados
Ejemplo: S = {1, 2, 3, 4, 5}
Π1 = { {1, 2, 3, 4}, {5} }
Π2 = { {1, 2, 3,}, {4}, {5} }
Π3 = { {1, 3}, {2}, {4}, {5} }
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 EstadosEjemplo:
Π0 = { {1, 2, 3, 4}, {5} }
Estado a b1 1234 12342 1234 12343 1234 12344 1234 55 1234 1234
b
a
b
1
2
3 5
4
b
b aa
a
b
a
Se desprende {4} de la partición {1,2,3,4}
Minimización de Estados
Π1 = { {1, 2, 3}, {4}, {5} }
Estado a b1 123 1232 123 43 123 1234 123 55 123 123
Se desprende {2} de la partición {1,2,3}
a
b
1
2
3 5
4
b
b aa
a
ba
Minimización de Estados
Π2 = { {1, 3}, {2}, {4}, {5} }
Estado a b1 2 133 2 132 2 44 2 55 2 13
No más refinamientos DFA Mínimo
5
13
4
2a
a
aa
b
b
b
a
b
1
2
3 5
4
b
b aa
a
ba
b
Lenguajes Regulares
Resumiendo:
RGR RGL DFA
Mínimo
RE NFA DFA
Listo !
Algoritmos 1,2 Algoritmos 3,4
Algoritmo 5
Algoritmo 6 Algoritmo 7
Algoritmo 8
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.