Sei sulla pagina 1di 3

Factorizacin de una Gramtica libre de Contexto y

Eliminacin de Recursividad Izquierda de una Gramtica


Olger V
Universidad de Costa Rica, Escuela de Ciencias de la Computacin e Informtica,
San Jos, Costa Rica
olger03!"otmail#com
Resumen
Este art$culo trata de e%poner, de manera resumida, dos de los temas anali&ados en el curso de 'utmatas
( Compiladores, impartido en la Universidad de Costa Rica, espec$ficamente en la Escuela de Ciencias de
la Computacin e Informtica, durante el segundo semestre del a)o *00+# ,al art$culo se divide en varias
secciones las cuales son- una introduccin a la temtica del art$culo ( la utilidad de los temas tratados, un
desarrollo donde se detallan los temas propuestos, una seccin de conclusiones donde se resume la
utilidad del contenido de los temas, ( una seccin final de referencias#
alabras claves! .ramtica, /actori&acin, Eliminacin de la Recursividad#
I"#RO$%CCI&"
'nte la importancia 0ue representan los anali&adores sintcticos en la creacin de compiladores, es
indispensa1le conocer 0ue el principal o12eto de su anlisis, 0ue es una gramtica independiente del
conte%to, no puede ser interpretada de 1uena manera, por un anali&ador, si no sigue un con2unto de
restricciones para ello# ,anto la factori&acin, como la eliminacin de la recursividad de una gramtica,
son mtodos 0ue "acen posi1le 0ue una gramtica 0ue no es correcta para un anali&ador llegue a serlo, el
primero se utili&a para "acer posi1le el anlisis sintctico de tipo predictivo# El segundo es sumamente
importante por0ue los mtodos de anlisis sintctico descendente no son capaces de mane2ar gramticas
recursivas por la i&0uierda, lo 0ue re0uiere la eliminacin de recursividad# ' continuacin se tratan
am1os mtodos, 0ue "acen 0ue una gramtica se convierta en una gramtica correcta para el anlisis
sintctico, se detallan sus casos de uso ( sus algoritmos#
$E'(RRO))O
*+, F(C#ORI-(CI&" %"( GR(./#IC( )I0RE $E CO"#E1#O
Como se mencion anteriormente en la introduccin de este art$culo, el mtodo de factori&acin lo 0ue
permite es una transformacin gramatical 3til para el anlisis sintctico de tipo predictivo# Esto ocurre
cuando se tienen dos producciones alternativas para un mismo no terminal ( no s sa1e cual de ellas
utili&ar para ampliarlo# Un e2emplo 0ue permite visuali&ar este pro1lema es el representado por las
producciones-
' 45

6 45
*
7 ' 45

' 45
*
'0u$ si se pretende e%pandir el no terminal ', no se sa1e si e%pandirlo a 45

o a 45
*
, (a 0ue am1as
empie&an con la misma cadena no vac$a 4#
8ara resolver este pro1lema se plantea un algoritmo general de factori&acin, este reci1e una gramtica, (
produce como salida una gramtica factori&ada por la i&0uierda# Consiste en tomar cada no terminal
igual, sea ' el no terminal del e2emplo planteado, ( encontrar el prefi2o ms largo 0ue est presente en
todas las producciones para ', es decir, en el e2emplo, el s$m1olo 4, (a 0ue ste es el s$m1olo com3n en
las dos producciones# Si el prefi2o com3n no es igual a 9, 0ue se cumple en el e2emplo pues es 4, entonces
se sustitu(e-
' 45

6 45
*
6 : 6 45
n
6 ; , con ; 7 todas las alternativas distintas al prefi2o com3n
por las producciones-
' 4'< 6 ;
'< 5

6 5
*
6 : 6 5
n
'< es un nuevo no terminal, este procedimiento se de1e aplicar "asta 0ue todos los no terminales iguales
cumplan con el "ec"o de no tener un prefi2o en com3n en sus producciones# En el e2emplo la gramtica
resultante ser$a-
' 4'<
'< 5

6 5
*
Se omite ; pues no e%iste en la gramtica original, (a 0ue las producciones empie&an con 4#
2
*+* E)I.I"(CI&" $E )( REC%R'IVI$($ $E %"( GR(./#IC(
=a necesidad de este mtodo, mencionada en la introduccin del art$culo, es 0ue el anlisis descendente
no puede mane2ar una gramtica recursiva#
>?u es una gramtica recursiva@ RA Es a0uella en la 0ue al menos un no terminal deriva en cadenas 0ue
empie&an con el mismo no terminal, es decir e%isten producciones por e2emplo con el no terminal ', en
las 0ue van "acia una cadena 0ue empie&a con '#
>Cmo resolver el pro1lema@
RA Se agrupan todas las producciones de ' 0ue e%istan, las 0ue presentan recursividad ( las 0ue no, de la
siguiente manera-
' '4

6 '4
*
6 : 6 '4
m
6 5

6 5
*
6 : 6 5
n
=as producciones de ' 0ue van a 5 son lgicamente las 0ue no empie&an con el mismo s$m1olo no
terminal '# Bespus de "acer esto se sustitu(en las producciones de ', primero las 0ue empie&an con 5,
por-
' 5

'< 6 5
*
'< 6: 6 5
n
'<
( despus las producciones 0ue tienen recursividad, por-
'< 4

'< 6 4
*
'< 6 : 6 4
m
'<6 9
CO"C)%'IO"E'
'nte la posi1ilidad, en la vida real, de encontrar gramticas independientes del conte%to, 0ue no se
a2usten a los re0uerimientos de los anali&adores sintcticos, es necesario conocer cuales son las formas de
lograr 0ue esas gramticas, lleguen a cumplir esos re0uerimientos# =os mtodos de factori&acin (
eliminacin de la recursividad son mtodos sencillos ( relativamente fciles de implementar, en el
presente art$culo se consigui ms 0ue descri1irlos, llegarlos a entender ( sa1er en 0ue casos son
necesarios ( cual es el procedimiento 0ue cada uno sigue#
REFERE"CI('
1. '"o, '# Set"i, R# Ullman, J# Compiladores: Principios, Tcnicas y Herramientas. C%ico-
8earson Educacin D++0E#
3

Potrebbero piacerti anche