Академический Документы
Профессиональный Документы
Культура Документы
CONTEXTO
GRAMATICA LIMPIA
BIEN FORMADA
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
G1=({0,1}, {A,D}, A, P)
P:
A::=D0
La
gramtica
G1
esta
limpia
A::=
D::= 1A
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.