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

Post on 02-Apr-2015

108 views 1 download

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.