Вы находитесь на странице: 1из 23

GRAMATICA INDEPENDIENTES DEL

CONTEXTO
GRAMATICA LIMPIA
BIEN FORMADA

Gramtica Independientes del Contexto


Este tipo de gramticas y autmatas son
importantes desde el punto de vista de la
informtica:
permite la descripcin de la mayora de los
lenguajes de programacin,
permiten la construccin de los compiladores.

Gramtica Independientes del Contextos


Vamos a estudiar tcnicas para preparar una
gramtica a efectos de ser tratada eficientemente
por un autmata que reconozca el lenguaje
generado por la gramtica
Gramtica Limpia
Gramtica Bien Formada
Formas Normal de Chomsky

Gramtica Limpia
Dada una gramtica de tipo 2 se definen:
Reglas innecesarias: son las que tienen la
forma A::=A (A N). Estas reglas se deben
eliminar de las gramticas ya que no generan
derivaciones tiles.
Reglas inaccesibles: aquellos smbolos no
terminales A N que no pueden ser
alcanzados desde el axioma de la gramtica, S.
Es decir no hay derivacin S xAy

Gramtica Limpia
Ejemplo: Dada la siguiente gramtica
G1=({0,1,2,3}, {A,B,C,D,E}, A, P)
P={(A::=D0), (A::=E10), (A::=), (B::=1C3), (C::=C),
(D::= 1A), (E::=1E)}
Los simbolos B y C son inaccesibles, y la regla
(C::=C) es innecesaria.
G1=({0,1,2,3}, {A,D,E}, A, P)
P={(A::=D0), (A::=E10), (A::=), (D::= 1A), (E::=1E)}

Gramtica Limpia
Smbolos Superfluos: dependiendo del conjunto
al que pertenecen tenemos:
Smbolo no terminal superfluo, A: es aquel del que
solo se pueden derivar palabras en las que existe al
menos un smbolo no terminal, o, lo que es lo mismo,
A* x (xT).
Smbolo terminal superfluo, a: es aquel que no puede
ser alcanzado por derivacin desde el axioma; es decir,
no existe ninguna produccin (A::=a P)

Gramtica Limpia
Procedimiento de eliminacin de los smbolos
superfluos de una gramtica.
1. Se marcan los smbolos no terminales que estn en la
parte izquierda de una produccin y en cuya parte
derecha solo aparezcan smbolos terminales o .
2. Sucesivamente, se van marcando los smbolos no
terminales que aparezcan en la parte izquierda de
producciones en las que solo haya combinaciones de
smbolos terminales , o smbolos no terminales
marcados.
3. Por ultimo se eliminan aquellos smbolos terminales
que no aparezcan en la parte derecha de ninguna regla

Gramtica Limpia
Ejemplo: en la siguiente gramtica
G1=({0,1,2,3}, {A,D,E}, A, P)
P={(A::=D0), (A::=E10), (A::=), (D::= 1A), (E::=1E)}.
A::=D0
A::=E10
A::=
D::= 1A
E::=1E

Gramtica Limpia
Ejemplo: en la siguiente gramtica
G1=({0,1,2,3}, {A,D,E}, A, P)
P={(A::=D0), (A::=E10), (A::=), (D::= 1A), (E::=1E)}.
A::=D0
A::=E10
A::=
D::= 1A
E::=1E

Gramtica Limpia
Ejemplo: en la siguiente gramtica
G1=({0,1,2,3}, {A,D,E}, A, P)
P={(A::=D0), (A::=E10), (A::=), (D::= 1A), (E::=1E)}.
A::=D0
Los nicos smbolos no
A::=E10
terminales no superfluos
son A y D
A::=
Se elimina el resto (solo E)
D::= 1A
E::=1E

Gramtica Limpia
Se eliminan aquellos smbolos terminales
aparezcan en la parte derecha de ninguna regla

que

no

Se dice que una gramtica esta limpia si no tiene regla


innecesarias, smbolos inaccesibles, ni superfluos

G1=({0,1}, {A,D}, A, P)
P:
A::=D0
La
gramtica
G1
esta
limpia
A::=
D::= 1A

Gramtica Bien Formada


Reglas no generativas: una regla es no
generativa cuando A::= , A S. Para eliminar
dichas reglas.
G2=({0}, {A,B,C}, A,P)
P={(A::=C0B), (A::= ), (B::=BC), (B::= ), (C::=0B),
(C::= )}

Gramtica Bien Formada


G2=({0}, {A,B,C}, A,P)
P={(A::=C0B), (A::= ), (B::=BC), (B::= ), (C::=0B),
(C::= )}
Eliminacin de la regla B::=
P={(A::=C0B), (A::=C0) (A::= ), (B::=BC), (B::=C),
(C::=0B), (C::=0), (C::= )}
Eliminacin de la regla C::=
P= {(A::=C0B), (A::=0B), (A::=C0), A::=0), (A::= ),
(B::=BC), (B::=B), (B::=C), (B::= ), (C::=0B), (C::=0)}
En este paso se genero B::=B, B::=

Gramtica Bien Formada


Eliminacin de la regla B::=
P={(A::=C0B), (A::=0B), (A::=C0), (A::=0), (A::= ),
(B::=BC), (B::=C), (C::=0B), (C::=0)}
Se elimina B::=B por ser regla innecesaria
La gramtica quedara como:
G2=({0}, {A,B,C}, A,P)
P={(A::=C0B), (A::=0B), (A::=C0), (A::=0),
(A::= ), (B::=BC), (B::=C), (C::=0B),
(C::=0)}

Gramatica Bien Formada


Reglas de redenominacin: una regla es de
redenominacin cuando A::=B con A, B N.
Para eliminarlas, se borra esa regla y se genera
una nueva produccin A::=x por cada regla
B::=x, x*
Ejemplo: G2=({0}, {A,B,C}, A,P)
P={(A::=C0B), (A::=0B), (A::=C0), (A::=0),
(A::= ), (B::=BC), (B::=C), (C::=0B),
(C::=0)}

Gramtica Bien Formada


Se elimina la regla y se reemplaza C por las partes
derechas de sus producciones.
G2=({0}, {A,B,C}, A,P)
P={(A::=C0B), (A::=0B), (A::=C0), (A::=0), (A::= ),
(B::=BC), (B::=0B), (B::=0), (C::=0B), (C::=0)}
Gramtica Bien Formada: una gramtica est
bien formada si est limpia, no tiene reglas no
generativas y no tiene reglas de redenominacin

La gramtica G2 est bien formada

Forma Normal de Chomsky


Las gramaticas de tipo 2, se pueden transformar
en gramticas equivalentes expresadas en la
Forma Normal de Chomsky.
En esta forma de representar las gramticas, las
producciones pueden tener las siguiente formas:
P={(A::=BC) (S::=
(S::=) (A::=a) | A,B,C N, a T}

FNC
Los rboles de derivacin, salvo en las derivaciones
correspondientes a las hojas, son binarios.
Se debe partir de una gramatica limpia.
El algoritmo para transformar una gramatica en su
FNC equivalente para cada produccin P de la
gramatica, reasigna el nuevo valor del conjunto de
produccin P a lo que le devuelve la funcin FNC
Esta funcion trata de convertir todas las
producciones que no estn el en formato FNC a
dicho formato.

FNC
Los casos que se pueden presentar son los
siguientes:
La produccin ya est en FNC. No se hace nada.
La parte derecha de produccin comienza por una
smbolo terminal a. Lo que se hace es buscar si existe
una produccin de un simbolo no terminal que slo
vaya al smbolo a (C::=a); es decir, que no haya ms
producciones en las que aparezca en la parte izquierda
de la produccin. En ese caso, se puede sustituir en la
produccin inicial el simbolo a por el C y seguir
tratando el resto de la produccin. Si no se encuentra
ningn C que cumpla esto, se crea un nuevo simbolo
N, se crea una nueva regla N::a, se sustituye a por N en
la produccin original.

FNC
En la parte derecha de la produccin comienza por
un smbolo no terminal B, pero tiene mas de dos
smbolos (supngase que es By). Por medio de la
FNC-auxiliar, puede haber dos casos: yT
yN. En el primer caso se sustituye y por un
smbolo no terminal que solo vaya a y (existente o
nuevo) en esa produccin. En el segundo caso, se
crea un nuevo smbolo ni terminal N, se crea una
nueva regla que tenga en la parte izquierda N y en
la parte derecha a y, se sustituye a y por N en la
produccin original y se vuelve a tratar la nueva
regla formada N::=y.

FNC
Ejemplo:
G3=({0,1,2}, {A,B,C}, A, P)
P={(A::=CB2), (A::=1B), (A::=), (B::=BC), (B::=1), (C::=2)}
A::=CB2 no est en FNC
B2 T, por lo que se crea un nuevo no terminal D, se crea
D::=B2, se borra la regla A::=CB2, y se crea A::=CD ya esta en
FNC.
D::=B2, como existe C::=2, se debe borrar D::=B2 y se aade la
regla D::=BC
A::=1B no esta en FNC, y no hay un simbolo no terminal que slo
vaya a 1, se crea uno nuevo E::=1, se elimina la regla A::=1B y
aade la regla A::=EB
A::= , ya esta en FNC
B::=BC, ya est en FNC
B::=1, ya esta en FNC
C::=2, ya est en FNC

FNC
La gramtica final quedara:
G3=({0,1,2}, {A,B,C}, A, P)
P={(A::=CD), (A::=EB), (A::=), (B::=BC),
(B::=1), (C::=2), (D::=BC), (E::=1)}

Preguntas
1.
2.
3.
4.
5.
6.
7.
8.

Defina Gramtica Limpia


Cuando es una regla innecesaria, de un ejemplo
Cuando se dice que es una regla inaccesible
Procedimiento para encontrar un smbolo
superfluo No Terminal
Defina Gramtica Bien Formada
Cuando es una regla no generativa, de un ejemplo
Como se resuelve una regla de redenominacin, de
un ejemplo.
Cuales son las produccin de una Gramtica en
FNC.

Вам также может понравиться