La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Lenguajes Regulares Curso de Compiladores Manuel E. Bermúdez, Ph.D.

Presentaciones similares


Presentación del tema: "Lenguajes Regulares Curso de Compiladores Manuel E. Bermúdez, Ph.D."— Transcripción de la presentación:

1 Lenguajes Regulares Curso de Compiladores Manuel E. Bermúdez, Ph.D.
07/04/2017 Lenguajes Regulares Curso de Compiladores Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida

2 Lenguajes Regulares Estudiaremos: Gramáticas Regulares
07/04/2017 Lenguajes Regulares Estudiaremos: Gramáticas Regulares Relación con autómatas de estado finito Expresiones Regulares Equivalencia entre representaciones Eliminación del no-determinismo Minimización de estados

3 07/04/2017 Lenguajes Regulares Definición: Una gramática G = (Φ, Σ, P, S) es regular sii una condición (pero no ambas): 1) Cada producción es de la forma A →  ó A → B (lineal derecha) 2) Cada producción es de la forma or A → B (lineal izquierda) donde   Σ*, y A, B  Φ.

4 Lenguajes Regulares Ejemplos: G1: S → a R → abaU → bU → U ¿Regular?
07/04/2017 Lenguajes Regulares Ejemplos: G1: S → a R → abaU → bU → U ¿Regular? → bR U → b ¿ Por qué ? → S G2: S → a R → Uaba → Ub U → b ¿ Regular? → Rb → aS ¿ Por qué ?

5 Lenguajes Regulares Diseñemos una máquina que acepte L(G1).
07/04/2017 Lenguajes Regulares Diseñemos una máquina que acepte L(G1). Observemos que S => a bU => bb … bR bS … babaU Toda forma sentencial (excepto las sentencias) tienen exactamente UN símbolo no-terminal. El no-terminal ocurre en la posición derecha. Producciones aplicables (derivaciones) dependen SOLO de ese no-terminal. G1: S → a R → abaU → bU → U → bR U → b → S => => => => =>

6 07/04/2017 Lenguajes Regulares Estrategia: Representar todas la secuencias de derivación con la relación ”⊢” , sobre pares ordenados de la forma (q, ), donde q – el estado actual  – la hilera que falta de aceptar Así, S → bU implica (S, bβ) ⊢ (U, β) El estado “forma sentencial termina en S” “se transforma en” El estado “forma sentencial termina en U”

7 Lenguajes Regulares Así, (S, babab) ⊢ (R, abab) (porque S → bR) ⊢ (U, b) (porque R → abaU) ⊢ (ε, ε) (porque U → b) Criterio de aceptación de : (S, ) ⊢* (ε, ε)

8 Transformación de gramática regular a diagrama de transiciones:
07/04/2017 Transformación de gramática regular a diagrama de transiciones: Definimos un grafo, con un nodo por cada no-terminal, que describe las posibles acciones sobre cada forma sentencial. Así, S → bU implica , R → U implica , y S → a implica . b S U R F a

9 Transformación de gramática regular a diagrama de transiciones:
07/04/2017 Transformación de gramática regular a diagrama de transiciones: Ejemplo: S → a R → abaU U → b → bU → U →aS → bR S U R F aba ε b a

10 Transformación de gramática regular a diagrama de transiciones:
07/04/2017 Transformación de gramática regular a diagrama de transiciones: Algoritmo 1: Gramática Lineal Derecha → Diagrama de Transición: Nodos: Φ  {F}, F  Φ si A →  B si A →  α A B α A F S

11 Transformación de gramática regular a diagrama de transiciones:
07/04/2017 Transformación de gramática regular a diagrama de transiciones: S → a R → abaU U → b → bU → U →aS → bR Ejemplo: “babaa”  L(G)? Nodo Entrada Derivación S babaa S => U abaa bU => S baa baS => U aa babU => S a babaS => F babaa Sí, pero en forma no-determinística. S U R F aba ε b a

12 Autómatas de Estado Finito
07/04/2017 Autómatas de Estado Finito Definición: Un autómata de estado finito (no-determinístico) es una tupla M = (Q, Σ, δ, s, F), donde Q es un conjunto finito de estados, Σ es un conjunto finito de símbolos de transición, δ: Q x Σ U {ε} → 2Q es una función parcial llamada la función de transición, s  Q se llama el estado inicial, y F  Q es el conjunto de estados finales. Un FSA es el mecanismo formal de aceptación de un lenguaje regular. Requiere que cada transición tenga una etiqueta (hilera) de longitud < 1.

13 Autómatas de Estado Finito
07/04/2017 Autómatas de Estado Finito S U R F aba ε b a El diagrama de estados (grafo) corresponde al FSA ({S, R, U, F, X, Y}, {a, b}, δ, S, {F}), donde δ (S, a) = {F} δ (S, b) = {U, R} δ (R, ε) = {U} δ (R, a) = {X} δ (U, a) = {S} δ (U, b) = {F} δ (X, b) = {Y} δ (Y, a) = {U} a R X Y U b

14 Autómatas de Estado Finito
07/04/2017 Autómatas de Estado Finito DOS “SÍNTOMAS” DEL NO-DETERMINISMO: Nota: No es problema a ε 1. X 2. a X a a F

15 Autómatas de Estado Finito
07/04/2017 Autómatas de Estado Finito Ventajas de los FSA’s: Pregunta: ¿ Qué lenguaje genera la siguiente gramática? S → aA A → aB B → aC → ε → E → D C → bD D → bE E → bS Difícil de visualizar. Intentemos el FSA.

16 Autómatas de Estado Finito
07/04/2017 Autómatas de Estado Finito ε a a F S A B ε ε a b b b E D C Respuesta: L*, donde L = {ab, aabb, aaabbb} Resumen: FSA’s son tan poderosas (en capacidad de reconocimiento) que las gramáticas lineales derechas. ¿ Son más poderosas ? No. Podemos transformar FSA → RGR.

17 Transformación de diagrama de transiciones a gramática regular
07/04/2017 Transformación de diagrama de transiciones a gramática regular Algoritmo 2: Diagrama de Transición → Gramática Lineal Derecha: Φ = Q A → aB si B  δ (A, a) A → a si f  δ (A, a), y f  F Símbolo de inicio = Estado inicial

18 Transformación de diagrama de transiciones a gramática regular
07/04/2017 Transformación de diagrama de transiciones a gramática regular b Ejemplo: FSA: RGR: A → aB B → bB D → cE → a → bD → c → b E → F F → dG G → H → ε H → A Conclusión: Gramáticas lineales derechas, y automátas de estado finito, son equivalentes. a b c A B D E ε ε ε d H G F

19 Gramática Lineal Izquierda
07/04/2017 Gramática Lineal Izquierda Relación entre gramática lineal izquierda y FSA: Ejemplo: F → Sa U → Sb R → Sb → Ub → R S → Ua → Raba → Derivaciones: Sbb ... F => Ub => Rb ... Rabab ... Sa => Uaa ... a => => => =>

20 Gramática Lineal Izquierda
07/04/2017 Gramática Lineal Izquierda Similaridades con gramáticas lineales derechas: Formas sentenciales tienen a lo sumo un no-terminal. Sentencias no tienen no-terminales. Producciones aplicables dependen solo del no-terminal. Diferencias con gramáticas lineales derechas: No-terminales aparecen a la izquierda. La hilera se genera de derecha a izquierda, vs. de izquierda a derecha para gramáticas lineales derechas.

21 Gramática Lineal Izquierda
07/04/2017 Gramática Lineal Izquierda Algoritmo 3: Gramática Lineal Izquierda → Diagrama de Transición si A → B. si A → , S’ es un nuevo estado de inicio. F = {S}, S es el símbolo de inicio. α B A α S’ A

22 Gramática Lineal Izquierda
07/04/2017 Gramática Lineal Izquierda Ejemplo: F → Sa U → Sb S → Ua → Ub → R → ε R → Sb → Raba S U R F aba ε b a S’

23 Gramática Lineal Izquierda
07/04/2017 Gramática Lineal Izquierda Nodo Entrada Derivación (¡ inversa!) S’ babaaa babaaa S babaaa Sbabaaa <= R abaaa Rabaaa <= U aa Uaa <= S a Sa <= F F S U R F aba ε b a S’ F → Sa U → Sb S → Ua → Ub → R → ε R → Sb → Raba

24 Gramática Lineal Izquierda
07/04/2017 Gramática Lineal Izquierda Algoritmo 4: Diagrama de Transición → Gramática Lineal Izquierda: A → B si A →  si S’ → F si α B A α S A F Nuevo símbolo de inicio

25 Resumen: Lenguajes Regulares y Autómatas
07/04/2017 Resumen: Lenguajes Regulares y Autómatas Resumiendo: RGR RGL RE FSA Nota: Cuidado con intentos de conversión directa entre gramáticas regulares izquierdas y derechas. Listo Algoritmos 1,2 Algoritmos 3,4 Pronto


Descargar ppt "Lenguajes Regulares Curso de Compiladores Manuel E. Bermúdez, Ph.D."

Presentaciones similares


Anuncios Google