Expresiones Regulares

Slides:



Advertisements
Presentaciones similares
IBD Plan 90 y 2003 Clase 11.
Advertisements

Introducción ¿Qué es un Algoritmo?
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Compiladores e intérpretes
Conceptos básicos Def. Un símbolo es cualquier carácter imprimible.
Autómatas de pila (Pushdown automata)
Gramáticas.
Diseño de Autómatas Finitos
Autómatas Finitos.
Diseño de AFN’s.
Autómata Finito Un autómata finito (AF) es un modelo de computación muy restringido, sin embargo tiene una gran aplicación en reconocimiento de patrones.
TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY
Ecuaciones de Valor Absoluto y Desigualdades
Procesadores de Lenguaje
Tema: Decibilidad Integrantes: Ileana Rdguez Soto
DESCRIPCION DE SISTEMAS
Circuitos de Conmutación
¿Cómo hacer para que una máquina comprenda el LN?
TEORÍA DE CONJUNTOS.
INTEGRACIÓN.
Unidad 2. Análisis léxico
Unidad 2 Algoritmos y resolución de problemas
Combinadores SK.
Expresiones regulares
Tema 2 Autómatas finitos 1. Autómata finito determinista
Tema 1.- Lenguajes. Gramáticas
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS
CLASIFICACION DE LAS MAQUINAS DE TURING
Expresiones algebraicas
Lenguajes Regulares Curso de Compiladores Manuel E. Bermúdez, Ph.D.
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Teoría de lenguajes y compiladores
Tema 1.- Lenguajes. Gramáticas
Tema 2 Lenguajes Formales.
Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.
Programación de sistemas
Análisis sintáctico LR: SLR (LR simple)
Lenguajes Independientes del Contexto
Autómatas de Pila Teoría del Autómata.
2º curso Ingeniería Técnica en Informática de Sistemas UNED
Fundamentos de programación
ANALISIS SINTACTICO Parte I
Clasificación de Gramáticas y Manejo de Errores
ESTRUCTURA DE DATOS ESD-243
Introducción al Análisis Sintáctico
Tema 2 Autómatas finitos 1. Autómata finito determinista
Lenguajes regulares Teoría del Autómata.
Teoría de lenguajes y compiladores Analizadores lexicográficos
Teoría de Autómatas I 2º curso Ingeniería Técnica en Informática de Sistemas UNED.
Teoría de lenguajes y compiladores
Tomado de Sudkamp: Languages and Machines Cap. 6.
Análisis Léxico Área Software de Base.
Lenguajes Formales y Autómatas
UNIVERSIDAD VALLE DEL MOMBOY FACULTAD DE INGENIERIA ESCUELA DE COMPUTACIÓN CATEDRA: EDUMATICA Br: JENNY CORONADO C.I
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
1 AFDAFN AF Gramáticas lineales derecha Expresiones regulares Tema 2 Método de los AF Método de las derivadas Sistemas de Ecuaciones Tema 1.
Términos algoritmo diseñar algoritmo implementar algoritmo
UNIVERSIDAD LATINA (UNILA)
Teoría de lenguajes y compiladores
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
Teoría de lenguajes y compiladores
Autómatas y Compiladores. Tercera Semana. Ricardo Vargas Del Valle A35469.
Lic. Carla Aguirre Montalvo
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
Unidad 2 Lenguajes, Expresiones Regulares, Autómatas
AUTOMATAS FINITOS DETERMINISTICOS
Transcripción de la presentación:

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

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.

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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 ε

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

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

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

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

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

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

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

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

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.

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

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 123 23 456 23 23 6 456 56 --- 6 --- --- 56 56 --- DFA: a a b 123 23 456 56 6

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

ε 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 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) 07/04/2017 Autómatas de Estado Finito Determinísticos (DFA’s) DFA a 34568910 b a b a a 1 234689 a 34678911 b 346789 b b

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

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.

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.

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.

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

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 1 123 123 2 123 4 3 123 123 4 123 5 5 123 123 Se desprende {2} de la partición {1,2,3}

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 1 2 13 3 2 13 2 2 4 4 2 5 5 2 13 No más refinamientos DFA Mínimo 5 13 4 2 a b b

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 !

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.