La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Expresiones Regulares

Presentaciones similares


Presentación del tema: "Expresiones Regulares"— Transcripción de la presentación:

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

2 Expresiones Regulares
07/04/2017 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.

3 Expresiones Regulares
07/04/2017 Expresiones Regulares Definición: Una expresión regular sobre un alfabeto Σ se define recursivamente: ø denota el lenguaje ø ε denota el lenguaje {ε} a denota el lenguaje {a}, para todo a  Σ. (P + Q) denota L(P) U L(Q), donde P, Q son e.r.’s. (PQ) denota L(P)·L(Q), donde P, Q son e.r.’s. 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): *, ·, +

4 Expresiones Regulares
07/04/2017 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 ‘}’ .

5 Expresiones Regulares
07/04/2017 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) {ε}

6 Expresiones Regulares
07/04/2017 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.

7 Expresiones Regulares
07/04/2017 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 + β ?

8 Expresiones Regulares
07/04/2017 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)*

9 Expresiones Regulares
07/04/2017 Expresiones Regulares Algoritmo 5: Gramática Lineal Derecha → Expresión Regular 1. A = α1 + α2 + … + αn si A → α1 → α2 . → αn

10 Expresiones Regulares
07/04/2017 Expresiones Regulares 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!!

11 Expresiones Regulares
07/04/2017 Expresiones Regulares Ejemplo: S → a R → abaU U → aS → bU → U → b → bR S = a + bU + bR R = abaU + U = (aba + ε) U U = aS + b Sustituimos R: S = a + bU + b(aba + ε) U

12 Expresiones Regulares
07/04/2017 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

13 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Listo
07/04/2017 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Listo Algoritmos 1,2 Algoritmos 3,4 Pronto Algoritmo 5

14 Expresiones Regulares
07/04/2017 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 ø 1 2

15 Expresiones Regulares
07/04/2017 Expresiones Regulares para ε para a para P + Q ó para P· Q 1 a 1 2 P ε ε 1 2 ε ε Q ε P Q ε ε ε 1 P Q 2

16 Expresiones Regulares
07/04/2017 Expresiones Regulares ε para P* Ejemplo: (b (aba + ε) a)* (b (aba + ε) a)* ε ε 1 P 2 ε b 1 2 a 3 4 b 5 6

17 Expresiones Regulares
07/04/2017 Expresiones Regulares a (b (aba + ε) a)* 7 8 9 a 10 11 a ε b 3 4 5 6 ε 7 8 a

18 Expresiones Regulares
07/04/2017 Expresiones Regulares (b (aba + ε) a)* a ε b 3 ε 4 5 6 ε 12 9 7 ε 13 8 ε ε a b 2 1 ε a ε b 3 ε 4 5 6 ε 12 9 7 ε 13 8 ε ε a

19 Expresiones Regulares
07/04/2017 Expresiones Regulares (b (aba + ε) a) * b 2 1 ε a ε b ε 3 4 5 6 ε 12 9 7 ε 13 8 ε ε a ε 10 a 11

20 Expresiones Regulares
07/04/2017 Expresiones Regulares (b (aba + ε) a)* ε b ε ε a 14 2 1 12 3 4 ε ε ε ε 11 9 5 ε a ε 15 13 6 10 8 7 ε ε a ε

21 Expresiones Regulares
07/04/2017 Expresiones Regulares Algoritmo 6 (Versión 2): Expresión Regular → FSA (Autómata Finito no-determinístico) Punto de inicio: E

22 Expresiones Regulares
07/04/2017 Expresiones Regulares Reglas de conversión: a a* ε ε ab a b a a + b b

23 Expresiones Regulares
07/04/2017 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

24 Expresiones Regulares
07/04/2017 Expresiones Regulares Ejemplo (Versión 2): (a + b)* (aa + bb) (a + b)* aa + bb aa ε ε bb a + b a a ε ε b b a b

25 Expresiones Regulares
07/04/2017 Expresiones Regulares Ejemplo (Versión 2): ba(a + b)* ab a b a ε ε a b b

26 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Listo
07/04/2017 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Listo Algoritmos 1,2 Algoritmos 3,4 Pronto Algoritmo 5 Algoritmo 6

27 Autómatas de Estado Finito Determinísticos (DFA’s)
07/04/2017 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

28 Autómatas de Estado Finito Determinísticos (DFA’s)
07/04/2017 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).

29 Autómatas de Estado Finito Determinísticos (DFA’s)
07/04/2017 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.

30 Autómatas de Estado Finito Determinísticos (DFA’s)
07/04/2017 Autómatas de Estado Finito Determinísticos (DFA’s) Ejemplo: a*b + ba* ε b 1 3 4 2 5 6 a NFA

31 Autómatas de Estado Finito Determinísticos (DFA’s)
07/04/2017 Autómatas de Estado Finito Determinísticos (DFA’s) ε b 1 3 4 2 5 6 a Entrada Estado a b DFA: a a b 123 23 456 56 6

32 Autómatas de Estado Finito Determinísticos (DFA’s)
07/04/2017 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 8 b 1 2 11 10 9 NFA

33 ε a 3 5 6 4 7 8 b 1 2 11 10 9 NFA Estado a b 0 --- 1 1 234689 ---
07/04/2017 ε a 3 5 6 4 7 8 b 1 2 11 10 9 NFA Estado a b

34 Autómatas de Estado Finito Determinísticos (DFA’s)
07/04/2017 Autómatas de Estado Finito Determinísticos (DFA’s) DFA a b a b a a 1 234689 a b 346789 b b

35 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Listo
07/04/2017 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Listo Algoritmos 1,2 Algoritmos 3,4 Pronto Algoritmo 5 Algoritmo 6 Algoritmo 7

36 Minimización de Estados
07/04/2017 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.

37 Minimización de Estados
07/04/2017 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.

38 Minimización de Estados
07/04/2017 Minimización de Estados Algorithmo 8 (Minimización de un DFA): Eliminar las transiciones indefinidas introduciendo el estado TRAMPA, desde el cual no se llega un estado final. Particionar los estados en dos grupos (finales y no-finales). Completar la tabla de estados, especificando las transiciones de cada grupo a otros. Refinar la partición: se desprenden los grupos con transiciones distintas. Repetir el paso 3 hasta no haber más refinamientos. Determinar los estados finales.

39 Minimización de Estados
07/04/2017 Minimización de Estados a b Ejemplo: Π0 = { {1, 2, 3, 4}, {5} } Estado a b a b 1 2 3 5 4 b Se desprende {4} de la partición {1,2,3,4}

40 Minimización de Estados
07/04/2017 Minimización de Estados a b 1 2 3 5 4 Π1 = { {1, 2, 3}, {4}, {5} } Estado a b Se desprende {2} de la partición {1,2,3}

41 Minimización de Estados
07/04/2017 a a b 1 2 3 5 4 Minimización de Estados Π2 = { {1, 3}, {2}, {4}, {5} } Estado a b No más refinamientos DFA Mínimo 5 13 4 2 a b b

42 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Listo !
07/04/2017 Lenguajes Regulares Resumiendo: RGR RGL DFA Mínimo RE NFA DFA Algoritmos 1,2 Algoritmos 3,4 Algoritmo 5 Algoritmo 8 Algoritmo 6 Algoritmo 7 Listo !

43 Resumen de Lenguajes Regulares
07/04/2017 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.


Descargar ppt "Expresiones Regulares"

Presentaciones similares


Anuncios Google