Vous êtes sur la page 1sur 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
olger031@hotmail.com

Resumen
Este artculo trata de exponer, de manera resumida, dos de los temas analizados en el curso de Autmatas
y Compiladores, impartido en la Universidad de Costa Rica, especficamente en la Escuela de Ciencias de
la Computacin e Informtica, durante el segundo semestre del ao 2009. Tal artculo se divide en varias
secciones las cuales son: una introduccin a la temtica del artculo y 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, y una seccin final de referencias.
Palabras claves: Gramtica, Factorizacin, Eliminacin de la Recursividad.

INTRODUCCIN
Ante la importancia que representan los analizadores sintcticos en la creacin de compiladores, es
indispensable conocer que el principal objeto de su anlisis, que es una gramtica independiente del
contexto, no puede ser interpretada de buena manera, por un analizador, si no sigue un conjunto de
restricciones para ello. Tanto la factorizacin, como la eliminacin de la recursividad de una gramtica,
son mtodos que hacen posible que una gramtica que no es correcta para un analizador llegue a serlo, el
primero se utiliza para hacer posible el anlisis sintctico de tipo predictivo. El segundo es sumamente
importante porque los mtodos de anlisis sintctico descendente no son capaces de manejar gramticas
recursivas por la izquierda, lo que requiere la eliminacin de recursividad. A continuacin se tratan
ambos mtodos, que hacen que una gramtica se convierta en una gramtica correcta para el anlisis
sintctico, se detallan sus casos de uso y sus algoritmos.

DESARROLLO
2.1 FACTORIZACIN UNA GRAMTICA LIBRE DE CONTEXTO
Como se mencion anteriormente en la introduccin de este artculo, el mtodo de factorizacin lo que
permite es una transformacin gramatical til para el anlisis sintctico de tipo predictivo. Esto ocurre
cuando se tienen dos producciones alternativas para un mismo no terminal y no s sabe cual de ellas
utilizar para ampliarlo. Un ejemplo que permite visualizar este problema es el representado por las
producciones:
A 1 | 2 = A 1
A 2
Aqu si se pretende expandir el no terminal A, no se sabe si expandirlo a 1 o a 2, ya que ambas
empiezan con la misma cadena no vaca .
Para resolver este problema se plantea un algoritmo general de factorizacin, este recibe una gramtica, y
produce como salida una gramtica factorizada por la izquierda. Consiste en tomar cada no terminal
igual, sea A el no terminal del ejemplo planteado, y encontrar el prefijo ms largo que est presente en
todas las producciones para A, es decir, en el ejemplo, el smbolo , ya que ste es el smbolo comn en
las dos producciones. Si el prefijo comn no es igual a , que se cumple en el ejemplo pues es , entonces
se sustituye:
A 1 | 2 | | n |

, con = todas las alternativas distintas al prefijo comn

por las producciones:


A A |
A 1 | 2 | | n
A es un nuevo no terminal, este procedimiento se debe aplicar hasta que todos los no terminales iguales
cumplan con el hecho de no tener un prefijo en comn en sus producciones. En el ejemplo la gramtica
resultante sera:
A A
A 1 | 2
Se omite pues no existe en la gramtica original, ya que las producciones empiezan con .

2.2 ELIMINACIN DE LA RECURSIVIDAD DE UNA GRAMTICA


La necesidad de este mtodo, mencionada en la introduccin del artculo, es que el anlisis descendente
no puede manejar una gramtica recursiva.
Qu es una gramtica recursiva? R/ Es aquella en la que al menos un no terminal deriva en cadenas que
empiezan con el mismo no terminal, es decir existen producciones por ejemplo con el no terminal A, en
las que van hacia una cadena que empieza con A.
Cmo resolver el problema?
R/ Se agrupan todas las producciones de A que existan, las que presentan recursividad y las que no, de la
siguiente manera:
A A1 | A2 | | Am | 1| 2 | | n
Las producciones de A que van a son lgicamente las que no empiezan con el mismo smbolo no
terminal A. Despus de hacer esto se sustituyen las producciones de A, primero las que empiezan con ,
por:
A 1A | 2A | | nA
y despus las producciones que tienen recursividad, por:
A 1A | 2A | | mA|

CONCLUSIONES
Ante la posibilidad, en la vida real, de encontrar gramticas independientes del contexto, que no se
ajusten a los requerimientos de los analizadores sintcticos, es necesario conocer cuales son las formas de
lograr que esas gramticas, lleguen a cumplir esos requerimientos. Los mtodos de factorizacin y
eliminacin de la recursividad son mtodos sencillos y relativamente fciles de implementar, en el
presente artculo se consigui ms que describirlos, llegarlos a entender y saber en que casos son
necesarios y cual es el procedimiento que cada uno sigue.

REFERENCIAS
1.

Aho, A. Sethi, R. Ullman, J. Compiladores: Principios, Tcnicas y Herramientas. Mxico:


Pearson Educacin (1990).

Vous aimerez peut-être aussi