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

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

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

Page 1: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

Lenguajes Regulares

Preparado por

Manuel E. Bermúdez, Ph.D.Profesor Asociado

University of Florida

Curso de Compiladores

Page 2: 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

Page 3: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 4: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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é ?

Page 5: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

=>

Page 6: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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”

Page 7: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

Lenguajes Regulares

Así,

(S, babab) ⊢ (R, abab) (porque S → bR) ⊢ (U, b) (porque R → abaU) ⊢ (ε, ε) (porque U → b)

Criterio de aceptación de :

(S, ) ⊢* (ε, ε)

Page 8: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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 .

Page 9: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 10: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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α

α

Page 11: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 12: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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.

Page 13: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 14: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

Autómatas de Estado Finito

DOS “SÍNTOMAS” DEL NO-DETERMINISMO:

Nota: No es problema

Fa

X

a

a X

ε

a1. 2.

Page 15: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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.

Page 16: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 17: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 18: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

ε

Page 19: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

=>

=>

=>

=>

Page 20: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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.

Page 21: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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α

α

Page 22: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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’ε

Page 23: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 24: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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

Page 25: Lenguajes Regulares Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

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