Está en la página 1de 52

TRADUCTORES E

INTERPRETADORES

Clase 3: Gramáticas Regulares


y Equivalencias

Profs. Carlos Pérez y Ricardo Monascal


Agenda
• Gramáticas (Repaso).
• Tipos de Gramáticas Regulares.
• Equivalencia entre Gramáticas Regulares y
Lenguajes Regulares.
• Equivalencias entre Gramáticas.

Profs. Carlos Pérez y Ricardo Monascal


Gramáticas (Repaso)
• Recordando…

Profs. Carlos Pérez y Ricardo Monascal


Profs. Carlos Pérez y Ricardo Monascal
Gramáticas (Repaso)
• Recordando…
• Una gramática G es una 4-tupla con la siguiente forma:
G  (,V , P, S )
• Σ es el alfabeto del lenguaje (símbolos terminales).
• V es el alfabeto de símbolos no terminales.
• P es el conjunto de producciones, de la forma:
P  {    (  V )* V  (  V )*    (  V )*}
• S es el símbolo inicial y se debe cumplir que S ∈ V.
Profs. Carlos Pérez y Ricardo Monascal
Tipos de Gramáticas Regulares
• Una gramática G  (,V , P, S ) es regular si las
producciones son de la forma:
P  {    V    (* V  * )}

Profs. Carlos Pérez y Ricardo Monascal


Tipos de Gramáticas Regulares
• Una gramática G  (,V , P, S ) es regular si las
producciones son de la forma:
P  {    V    (* V  * )}
• O también…

P  {    V    (V  *  * )}

Profs. Carlos Pérez y Ricardo Monascal


Tipos de Gramáticas Regulares
• Una gramática G  (,V , P, S ) es regular si las
producciones son de la forma:
P  {    V    (* V  * )}
• O también…

P  {    V    (V  *  * )}

¡DERECHA IZQUIERDA!
Profs. Carlos Pérez y Ricardo Monascal
Tipos de Gramáticas Regulares
• Gramática Lineal Derecha:

P  {    V    (* V  * )}

• Gramática Lineal Izquierda: He ahí la diferencia…

P  {    V    (V  *  * )}

Profs. Carlos Pérez y Ricardo Monascal


Tipos de Gramáticas Regulares
• Gramática Lineal Derecha:

P  {    V    (* V  * )}

• Gramática Lineal Izquierda:

P  {    V    (V  *  * )}

• ¿Y son equivalentes? ¿Cómo lo probamos?


Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Recordemos que L(G) es el lenguaje generado
por la gramática G.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Recordemos que L(G) es el lenguaje generado
por la gramática G.
• Demostrar directamente la equivalencia entre
los Lenguajes Regulares y el conjunto de los
lenguajes L(G), tales que G es una gramática
regular, puede llegar a ser complicado.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Recordemos que L(G) es el lenguaje generado
por la gramática G.
• Demostrar directamente la equivalencia entre
los Lenguajes Regulares y el conjunto de los
lenguajes L(G), tales que G es una gramática
regular, puede llegar a ser complicado.
• ¡Pero hay otro modo!

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Demostraremos entonces que las gramáticas
regulares son equivalentes, en poder de
representación (lenguajes que definen), a las
expresiones regulares.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Demostraremos entonces que las gramáticas
regulares son equivalentes, en poder de
representación (lenguajes que definen), a las
expresiones regulares.
• ¿Por qué?

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Demostraremos primero que toda Expresión
Regular tiene una Gramática Regular que
genera el mismo lenguaje que la semántica de
la expresión dada.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Demostraremos primero que toda Expresión
Regular tiene una Gramática Regular que
genera el mismo lenguaje que la semántica de
la expresión dada.
• Y nuevamente…

¡INDUCCIÓN AL RESCATE!
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
Dada e, una Expresión Regular sobre Σ:
• Caso base (e = λ):
¿Existe una Gramática Regular G, tal que L(G) = sem(λ)?
Si… Cuando G = (Σ, {S}, {S → λ}, S)
• Caso base (e = x , con x ∈ Σ):
¿Existe una Gramática Regular G, tal que L(G) = sem(x)?
Si… Cuando G = (Σ, {S}, {S → x}, S)

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
Dada e, una Expresión Regular sobre Σ:
• Caso inductivo : Sean u y v, Expresiones Regulares
con Gramáticas Regulares Gu y Gv, tales que:
Gu  (, Vu , Pu , Su )
Gv  (, Vv , Pv , Sv )
L(Gu )  sem(u)
L(Gv )  sem(v)

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
Dada e, una Expresión Regular sobre Σ:
• Caso inductivo : Sean u y v, Expresiones Regulares
que cumplan con lo anterior:
– Caso e = u+v
• Consideremos la gramática Ge = (Σ, Ve, Pe, Se)

Ve  Vu  Vv  {S e }
Pe  Pu  Pv  {S e  S u S v }
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
Dada e, una Expresión Regular sobre Σ:
• Caso inductivo : Sean u y v, Expresiones Regulares
que cumplan con lo anterior:
– Caso e = uv
• Consideremos la gramática Ge = (Σ, Ve, Pe, Su)
Ve  Vu  Vv
Pe  ( Pu  Tu )  Pv  { A  S v A    Tu }

• Donde: Tu  { A   A    Pu    *}
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
Dada e, una Expresión Regular sobre Σ:
• Caso inductivo : Sea u, una Expresión Regular que
cumpla con lo anterior:
– Caso e = u*
• Consideremos la gramática Ge = (Σ, Ve, Pe, Se)
Ve  Vu  {S e }
Pe  ( Pu  Tu )  { A  S e A    Tu }  {S e  Su }

• Donde: Tu  { A   A    Pu    *}
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Y esos son todos los casos a considerar.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Y esos son todos los casos a considerar.
• ¿O acaso no?
• ¿Y el caso de la Expresión Regular Ø?

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Y esos son todos los casos a considerar.
• ¿O acaso no?
• ¿Y el caso de la Expresión Regular Ø?

• Caso base (e = Ø):


¿Existe una Gramática Regular G, tal que L(G) =
sem(Ø)?
Si… Cuando G = (Σ, {S}, Ø, S)
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Y con eso, solo hemos demostrado una dirección.
Toda Expresión Regular tiene una Gramática
Regular que genera el mismo lenguaje que la
semántica de la expresión.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Y con eso, solo hemos demostrado una dirección.
Toda Expresión Regular tiene una Gramática
Regular que genera el mismo lenguaje que la
semántica de la expresión.
• Ahora, debemos demostrar que toda Gramática
Regular tiene una Expresión Regular, cuya
semántica es el mismo lenguaje que la gramática
genera.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Consideremos ecuaciones de expresiones
regulares como una equivalencia de dos
expresiones regulares donde pueden ocurren
variables en ambos lados.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Consideremos ecuaciones de expresiones
regulares como una equivalencia de dos
expresiones regulares donde pueden ocurren
variables en ambos lados.
• Por ejemplo:
X  sX  t
A  1B  0C
Xy  Zt  yX  tZ
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• ¿Cómo resolverían la siguiente ecuación?
X  sX  t

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Teorema de Arden.
X  sX  t  X  s * t
X  s * t  X  sX  t

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• El objetivo es hallar una expresión regular a
partir de una gramática dada cuya semántica
sea igual al lenguaje generado por la última.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• El objetivo es hallar una expresión regular a
partir de una gramática dada cuya semántica
sea igual al lenguaje generado por la última.
• Una posible manera de hallar dicha expresión
es construyendo un sistema de ecuaciones
regulares a partir de las producciones de la
gramática original.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• El objetivo es hallar una expresión regular a
partir de una gramática dada cuya semántica
sea igual al lenguaje generado por la última.
• Una posible manera de hallar dicha expresión
es construyendo un sistema de ecuaciones
regulares a partir de las producciones de la
gramática original.
• ¡Y resolver tal sistema para el símbolo inicial!

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• ¡EL ALGORITMO!

– Entrada:
• Una gramática G  (,V , P, S )

– Salida:
• Una expresión regular T(S) que
represente L(G).

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• ¡EL ALGORITMO!
1. Para cada símbolo no terminal:
• Si existen dos o más producciones con dicho símbolo
en el lado izquierdo, construir una regla con dicho
símbolo del lado izquierdo y todos los lados derechos
correspondientes, enlazados con (+).
• Reemplazar () con (=).
• Sustituir cada símbolo no terminal A por una variable
T(A).
• Resolver posibles recursiones usando el Teorema de
Arden.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• ¡EL ALGORITMO!
2. Mientras hayan variables en el lado derecho de la
ecuación que define T(S):
• Seleccionar una de estas variables, llámese T(A).
• Reemplazar toda ocurrencia de T(A) en el lado
derecho de todas las ecuaciones por el lado derecho
de la ecuación que la tiene como lado izquierdo.
• Resolver posibles recursiones usando el Teorema de
Arden.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío

S  aA | b
A  aA | bB | c
B  bA | a
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío

S  aA  b
A  aA  bB  c
B  bA  a
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío

S  aA  b
A  aA  bB  c
B  bA  a
Profs. Carlos Pérez y Ricardo Monascal
Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío

T ( S )  aT ( A)  b
T ( A)  aT ( A)  bT ( B)  c
T ( B)  bT ( A)  a

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío

T ( S )  aT ( A)  b
T ( A)  a * (bT ( B)  c)
T ( B)  bT ( A)  a

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío

T ( S )  aT ( A)  b
T ( A)  a * (bT ( B)  c)
T ( B)  bT ( A)  a

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío
T ( S )  a(a * (bT ( B)  c))  b
T ( B)  b(a * (bT ( B)  c))  a

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío
T ( S )  a(a * (bT ( B)  c))  b
T ( B)  (ba * b)T ( B)  (ba * c  a)

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío
T ( S )  a(a * (bT ( B)  c))  b
T ( B)  (ba * b) * (ba * c  a)

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Ejemplo: Corrida en frío
T (S )  a(a * (b((ba * b) * (ba * c  a))  c))  b

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Resta demostrar que el algoritmo es
correcto…

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
Regulares y Lenguajes Regulares.
• Resta demostrar que el algoritmo es
correcto…
• ¡Pero la demostración es muy larga para la
clase!
– Habrá material al respecto en la página web del
curso.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
• ¿Cómo demostramos que dos gramáticas,
llámense G1 y G2, son equivalentes?

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
• ¿Cómo demostramos que dos gramáticas,
llámense G1 y G2, son equivalentes?
– Demostrar que L(G1) y L(G2) son iguales.
– Generalmente por doble inclusión.

Profs. Carlos Pérez y Ricardo Monascal


Equivalencia entre Gramáticas
• ¿Cómo demostramos que dos gramáticas,
llámense G1 y G2, son equivalentes?
– Demostrar que L(G1) y L(G2) son iguales.
– Generalmente por doble inclusión.
• El ejemplo lo verán en la práctica.

Profs. Carlos Pérez y Ricardo Monascal

También podría gustarte