Escolar Documentos
Profissional Documentos
Cultura Documentos
Contexto
Abraham Cisneros Escobar
Jonathan A. Ruiz Navarro
INTRODUCCIN
Existen gramticas de diferentes formas que generan un mismo lenguaje como son:
A BC con A, B, C N
A a, con A N y a
Smbolos no alcanzables:
A es generador: A c
B es generador: B b
Considere la siguiente Gramtica: C es generador: C
D es generador: D
F es generador: F d
Gramtica original S es generador: S BCa
Smbolos no Generadores: E y G
eeee
Eliminando producciones
sta ahora podr aparecer o no aparecer, ya que
en una tomar el papel del string vaco y en la
otra estar siendo otra cosa (otro smbolo).
Este paso consiste en formar las producciones de
la forma X . Smbolos anulables: C, D y B ( esto por la
produccin B CD donde C y D son anulables).
No contiene:
Smbolos intiles.
Smbolos con cadena vaca.
Smbolos no generadores.
Smbolos no alcanzables
Producciones unitarias.
Reemplazando terminales
por variables.
Creamos 4 nuevas variables. Una
Consiste en reemplazar todos aquellos smbolos
terminales que estn acompaados en alguna
para cada smbolo terminal.
produccin por uno o ms smbolos a estos
terminales los reemplazamos por nuevas
variables que tendrn una nica produccin( la
produccin de dicho smbolo)
Reemplazando producciones
Creamos nuevas variables con
de 3 o ms variables producciones de dos variables y las
reemplazamos en sus respectivas
Consiste en reemplazar todas las producciones producciones.
con 3 o ms variables por una que contenga slo
dos.
Forma Normal de Greibach
Gramticas
Forma Intermedia de Greibach
Al igual que con la FNC, una gramtica dada debe ser llevada a una forma
intermedia antes de poder transformarla a su correspondiente forma normal de
Greibach. En el caso de Chomsky, la forma intermedia implicaba eliminar los
smbolos intiles, las producciones y las producciones unitarias. En el caso de
Greibach, la forma intermedia debe cumplir con que todas las producciones sean
cadenas de una o ms variables, o producciones de un solo smbolo terminal, o
producciones de un smbolo terminal seguido por una o ms variables. Existen
muchos mtodos para llegar a esta forma intermedia. La que recomienda la
mayora de la gente es la que consiste en obtener la FNC de una gramtica. Y por
qu? Porque una gramtica que est en FNC cumple con estas tres condiciones
de la forma intermedia de Greibach.
Forma Normal de Greibach
La forma normal de Greibach de una gramtica dada es aquella que slo
contiene producciones de la forma:
Yx
S A1Y1|c|BY2|BA1|CA1|a|A1Y3|A1Y4 S X1 X11X2|c|X6X3|X6X11|X8X11|a|X11X4|X11X5
Y1 X2 X10X12
Y1 AB1 Y2 X3 X8X11
Y2 CA1 Y3 X4 X9X5
Y3 DY4 Y4 X5 X13X14
B X6 X8X9|X8X13|c|X6X12|b|X11X7|X11X14|d|X10X14
Y 4 C 1 D1
Y5 X7 X9X14
A A1Y1|c C X8 X8X13|c|X6X12|b
B CD|CC1|c|BB1|b|A1Y5|A1D1|d|AD1 D X9 X11X7|X11X14|X9X14|d
Y5 DD1 A X10 X11X2|c
A1 X11 a
C CC1|c|BB1|b B1 X12 b
D A1Y5|A1D1|DD1|d C1 X13 c
A1 a D1 X14 d
Dejamos el smbolo original a la izquierda de cada lnea para que se entienda cul fue la variable
B1 b
enumerada que reemplaz a cada variable. Ntese que cambiamos de orden a la variable A, al
C1 c ponerla por debajo de la variable D. El propsito de estas alteraciones en el orden original tienen
D1 d como fin que, al proceder con la enumeracin, en las producciones resultantes quede la menor
cantidad de producciones Xi Xj, en donde i sea mayor que j.
2. Eliminamos la recursin inmediata a la izquierda y la recursin a la izquierda. Qu se
entiende por recursin inmediata a la izquierda? Cuando tenemos una produccin de la forma X
Xa, decimos que X es tiene recursividad inmediata por la izquierda. Cuando tenemos por lo
menos una produccin de la forma X Ya, y la variable Y tiene por lo menos una produccin de la
forma YX decimos que X recursividad por la izquierda. Cmo eliminamos la recursin por
la izquierda? Primero reemplazamos en las producciones de X todas las apariciones de Y por
aquellas producciones de Y que no sean inmediatamente recursivas a la izquierda para Y. Con esto
logramos hacer que X tenga slo producciones inmediatamente recursivas por la izquierda.
Luego,supongamos que X tiene las siguientes producciones:
Donde las producciones j no son recursivas por la izquierda. Ahora creamos una variable auxiliar X'
y realizamos las siguientes transformaciones:
X6 cX9|X6X12X9|bX9|cX13|X6X12X13|bX13|c|X6X12|b|X11X7|X11X14|X9X14|d|X10X14
Ntese que no reemplazamos a X8
por su produccin X8 X8X13, ya que
esta produccin es recursiva por la
izquierda para X8.
2) Reemplazando a X6 por sus producciones no recursivas a la izquierda, las producciones
X8 X8X13|c| X6X12|b se transforman en:
Ahora que solamente tenemos recursividad inmediata por la izquierda, procedemos a realizar las correspondientes
transformaciones:
1) Las producciones X6 cX9 | X6X12X9 | bX9 | cX13 | X6X12X13 | bX13 | c | X6X12 | b | X11X7 | X11X14 |
X9X14 |d | X10X14 se transforman en:
X6 cX9 | bX9 | cX13 | bX13 | c | b | X11X7 | X11X14 | X9X14 | d | X10X14 | cX9X6.1 | bX9X6.1 | cX13X6.1 |
bX13X6.1 |cX6.1 | bX6.1 | X11X7X6.1 | X11X14X6.1 | X9X14X6.1 | dX6.1 | X10X14X6.1
se transforman en:
X9 X11X7|X11X14|d|X11X7X9.1|X11X14X9.1 | dX9.1
X2 X10X12
X3 X8X11
X 4 X 9X 5
X5 X13 X14
X6 cX9 | bX9 | cX13 | bX13 | c | b | X11X7 | X11X14 | X9X14 | d | X10X14 | cX9X6.1 | bX9X6.1 | cX13X6.1 |
bX13X6.1 |
cX6.1 | bX6.1 | X11X7X6.1 | X11X14X6.1 | X9X14X6.1 | dX6.1 | X10X14X6.1
X6.1 X12X9 | X12X13 | X12 | X12X9X6.1 | X12X13X6.1 | X12X6.1
X7 X9X12
X8 c | cX12 | bX12 | X11X7X12 | X11X14X12 | X9X14X12 | dX12 | X10X14X12 | b | cX8.1 | cX12X8.1 |
bX12X8.1 | X11X7X12X8.1 | X11X14X12X8.1 | X9X14X12X8.1 | dX12X8.1 | X10X14X12X8.1 | bX8.1
X8.1 X13 | X9X12 | X13X12 | X13X8.1 | X9X12X8.1 | X13X12X8.1
X9 X11X7 | X11X14 | d | X11X7X9.1 | X11X14X9.1 | dX9.1
X9.1 X14 | X14X9.1
X10 X11X2 | c
X11 a
X12 b
X13 c
X14 d
3. En nuestro tercer paso, eliminaremos todas las producciones de la forma Xi Xj, en donde i
es mayor que j. Para hacer esto, reemplazamos a Xj por todas sus producciones. Si al
reemplazar aparecen otras producciones de esta forma, repetimos este paso, hasta que
no queden ms producciones en donde la primera variable de la produccin tenga un ndice
menor al de la variable de la cabeza de la produccin. En nuestro caso, no hay ninguna
produccin de este tipo, pero vamos a mostrar unas producciones de ejemplo para ilustrar el
proceso:
S AA|a
A AA|b
Paso 2: En este paso solo hay que eliminar la recursividad a la izquierda del
smbolo A. Al hacerlo se obtiene la gramtica.
S AA|a
A b|bZ
Z A|AZ
Paso 3:
S bA|bAZ|a
A b|bZ
Z A|AZ
Paso 4 (Final):
S bA|bAZ|a
A b|bZ
Z b|bZ|bZZ
Ejemplo 2
Encontrar una gramtica en FNG equivalente a la siguiente gramtica (en FNC):
S AB|BC
A AB|a
B AA|CB|a
C a|b
S AB|BC
B AA|CB|a
A AB|a
C a|b
Paso 2:
S AB|BC
B AA|CB|a
A a|aZ
C a|b
Z B|BZ
Paso 3:
S aB|aZB|aAC|aZAC|aBC|bBC|aC
B aA|aZA|aB|bB|a
A a|aZ
C a|b
Z B|BZ
Paso 4 (Final):
S aB|aZB|aAC|aZAC|aBC|bBC|aC
B aA|aZA|aB|bB|a
A a|aZ
C a|b
Z aZ|aZA|aB|bB|a|aAZ|aZAZ|aBZ|bBZ|aZ