Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida...

Post on 02-Apr-2015

103 views 0 download

Tags:

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.

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