Date post: | 02-Apr-2015 |
Category: |
Documents |
Upload: | doncia-del-pozo |
View: | 103 times |
Download: | 0 times |
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