Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of...

43
Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores

Transcript of Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of...

Page 1: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

Preparado por

Manuel E. Bermúdez, Ph.D.Associate ProfessorUniversity of Florida

Curso de Compiladores

Page 2: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University 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.

Page 3: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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): *, ·, +

Page 4: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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 ‘}’ .

Page 5: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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) {ε}

Page 6: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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.

Page 7: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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 + β ?

Page 8: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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)*

Page 9: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

Algoritmo 5:Gramática Lineal Derecha → Expresión Regular

1. A = α1 + α2 + … + αn si A → α1

→ α2

. . . → αn

Page 10: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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!!

Page 11: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 12: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 13: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Lenguajes Regulares

Resumiendo:

RGR RGL DFA

Mínimo

RE NFA DFA

Listo

ProntoAlgoritmos 1,2 Algoritmos 3,4

Algoritmo 5

Page 14: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 15: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

• para ε

• para a

• para P + Q

ó para P· Q

1

1 2a

1 2

ε

Q

P

ε ε

ε

P Qε

1 Pε

Q 2ε ε

Page 16: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 17: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

εε

Page 18: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

ε

Page 19: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

(b (aba + ε) a) *

3 4 5 6

78

a b

a

εε

13912

εεε

ε

2 1b

ε

1011

εa

Page 20: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

(b (aba + ε) a)*

2 12 3 4

67

ε a

ε

ε

813 aε

14 1ε b

10 ε ε

59ε

ε

11ε

a15

ε

ε

Page 21: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

Algoritmo 6 (Versión 2):Expresión Regular → FSA (Autómata Finito no-determinístico)

Punto de inicio:

E

Page 22: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones RegularesReglas de conversión:

a*

a + b

ab

ε εa

a b

a

b

Page 23: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 24: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

Ejemplo (Versión 2):

(a + b)* (aa + bb)

(a + b)* aa + bb

ε εaa

bba + b

ε ε

a

b

a a

b b

Page 25: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Expresiones Regulares

Ejemplo (Versión 2):

ba(a + b)* ab

b a ε ε a b

a

b

Page 26: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Lenguajes Regulares

Resumiendo:

RGR RGL DFA

Mínimo

RE NFA DFA

Listo

ProntoAlgoritmos 1,2 Algoritmos 3,4

Algoritmo 5

Algoritmo 6

Page 27: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 28: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 29: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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.

Page 30: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Autómatas de Estado Finito Determinísticos (DFA’s)

Ejemplo: a*b + ba*

NFA

ε

b

b

ε ε

ε

1

3

4

2

5

6

a

a

Page 31: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 32: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 33: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 34: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Autómatas de Estado Finito Determinísticos (DFA’s)

a

b

a

b

234689

346789

b

34568910

34678911a

b

a0 1 ab

DFA

Page 35: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

Lenguajes Regulares

Resumiendo:

RGR RGL DFA

Mínimo

RE NFA DFA

Listo

ProntoAlgoritmos 1,2 Algoritmos 3,4

Algoritmo 5

Algoritmo 6 Algoritmo 7

Page 36: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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.

Page 37: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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.

Page 38: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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.

Page 39: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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}

Page 40: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 41: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 42: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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

Page 43: Expresiones Regulares Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Curso de Compiladores.

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.