Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida...
-
Upload
doncia-del-pozo -
Category
Documents
-
view
103 -
download
0
Transcript of Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida...
Lenguajes Regulares
Preparado por
Manuel E. Bermúdez, Ph.D.Profesor Asociado
University of Florida
Curso de Compiladores
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
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
A → or A → B (lineal izquierda)
donde Σ*, y A, B Φ.
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é ?
Lenguajes Regulares
Diseñemos una máquina que acepte L(G1).Observemos que
S => a bU => bb …bR bS … babaU
1. Toda forma sentencial (excepto las sentencias) tienen exactamente UN símbolo no-terminal.
2. El no-terminal ocurre en la posición derecha.3. Producciones aplicables (derivaciones) dependen
SOLO de ese no-terminal.
=> =>
=>=>
G1: S → a R → abaU → bU → U → bR U → b
→ S
=>
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 terminaen S”
“se transforma
en”
El estado “forma sentencial termina en U”
Lenguajes Regulares
Así,
(S, babab) ⊢ (R, abab) (porque S → bR) ⊢ (U, b) (porque R → abaU) ⊢ (ε, ε) (porque U → b)
Criterio de aceptación de :
(S, ) ⊢* (ε, ε)
Transformación de gramática regular a diagrama de transiciones:
bS U
R U
S F
a
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 .
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
b
a
b
a
Transformación de gramática regular a diagrama de transiciones:
Algoritmo 1: Gramática Lineal Derecha → Diagrama de Transición:
1. Nodos: Φ {F}, F Φ
2. si A → B
3. si A →
4.
A B
S
A Fα
α
Transformación de gramática regular a diagrama de transiciones:
Ejemplo: “babaa” L(G)?
Nodo Entrada DerivaciónS 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
RF
aba
ε
b
b
a
b
a
S → a R → abaU U → b → bU → U →aS
→ bR
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, yF 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.
Autómatas de Estado FinitoEl diagrama de estados (grafo)
corresponde al FSA
S
U
RF
aba
ε
b
b
a
b
a
({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}
aR X
X Y
Y U
b
a
Autómatas de Estado Finito
DOS “SÍNTOMAS” DEL NO-DETERMINISMO:
Nota: No es problema
Fa
X
a
a X
ε
a1. 2.
Autómatas de Estado FinitoVentajas de los FSA’s:
Pregunta: ¿ Qué lenguaje genera la siguiente gramática?
S → aA A → aB B → aC → ε → E → DC → bD D → bE E → bS
Difícil de visualizar. Intentemos el FSA.
Autómatas de Estado Finito
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.
Fε
S A
E D C
B
b
εb
aa
ε
ba
Transformación de diagrama de transiciones a gramática regular
Algoritmo 2: Diagrama de Transición → Gramática Lineal Derecha:
1. Φ = Q2. A → aB si B δ (A, a)3. A → a si f δ (A, a), y f F4. Símbolo de inicio = Estado inicial
Transformación de diagrama de transiciones a gramática regular
Ejemplo:
FSA:
RGR: A → aBB → bBD → cE
→ a → bD → c → b
E → F F → dGG → H → ε
H → A
Conclusión: Gramáticas lineales derechas, y automátas de estado finito, son equivalentes.
A
G Fε
ε
ba
dH
B D E
bc
ε
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
=>
=>
=>
=>
Gramática Lineal Izquierda
Similaridades con gramáticas lineales derechas:
1. Formas sentenciales tienen a lo sumo un no-terminal.
2. Sentencias no tienen no-terminales.
3. Producciones aplicables dependen solo del no-terminal.
Diferencias con gramáticas lineales derechas:
1. No-terminales aparecen a la izquierda.
2. La hilera se genera de derecha a izquierda, vs.
de izquierda a derecha para gramáticas lineales derechas.
Gramática Lineal Izquierda
Algoritmo 3:Gramática Lineal Izquierda → Diagrama de Transición
1. si A → B.
2. si A → , S’ es un nuevo estado de inicio.
3. F = {S}, S es el símbolo de inicio.
B A
S’ Aα
α
Gramática Lineal Izquierda
Ejemplo: F → Sa U → Sb S → Ua
→ Ub → R → εR → Sb → Raba
S
U
RF
aba
ε
b
b
a
b
a
S’ε
Gramática Lineal Izquierda
Nodo Entrada Derivación (¡ inversa!)
S’ babaaa babaaaS babaaa Sbabaaa <=R abaaa Rabaaa <=U aa Uaa <=S a Sa <=F F S
U
RF
aba
ε
b
b
a
b
a
S’ε
F → Sa U → Sb S → Ua → Ub → R → ε
R → Sb → Raba
Gramática Lineal Izquierda
Algoritmo 4:Diagrama de Transición → Gramática Lineal Izquierda:
1. A → B si
2. A → si
3. S’ → F si
B A
S Aα
α
F
Nuevo símbolo de inicio
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
ProntoAlgoritmos 1,2 Algoritmos 3,4