You are on page 1of 14

12 Gramticas recursivas y no factorizadas

Prof. Edgardo Adrin Franco Martnez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com


@efranco_escom

Recursividad izquierda de una gramtica Eliminacin de la recursividad izquierda Indeterminismo en las producciones Factorizacin de una gramtica

Compiladores (Lenguajes y gramticas - Edgardo A. Franco)

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Contenido

Una gramtica recursiva por izquierda da lugar a algunos problemas computacionales a la hora de construir de manera descendente un rbol de derivacin de una cadena, pudiendo afectar a algoritmos descendentes que caen en un bucle infinito de recursin. S S Sa
S S
a

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Recursividad izquierda de una gramtica

Una gramtica es recursiva por la izquierda si tiene un no-terminal A tal que existe una produccin: A A.

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Eliminacin de la recursividad izquierda

Ejemplo: Eliminar la recursividad a izquierdas de:


E E+T ET TF F (E) F id T T*F

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Eliminacin de la recursividad izquierda

Ejemplo: Eliminar la recursividad a izquierdas de: E E+T | T T T*F | F F (E) | id


Se identifica si cada una de las producciones que tienen la forma: A A | Las produccin 1 y 2, tienen recursividad izquierda, por lo que: E E+T | T A A | Se igualan los smbolos segn la formula: A=E =+T =T E TE E +TE E

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Eliminacin de la recursividad izquierda

Ejemplo: Eliminar la recursividad a izquierdas de: E E+T | T T T*F | F F (E) | id


A la produccin T T*F | F, tambin se le aplica el mismo proceso : A=T = *F =F Se aplica la frmula 1: T FT T *FT T

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Eliminacin de la recursividad izquierda

Ejemplo: Eliminar la recursividad a izquierdas de: E E+T | T T T*F | F F (E) | id La gramtica con la recursividad izquierda eliminada es: E TE E +TE E T FT T *FT T F (E)| id

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Eliminacin de la recursividad izquierda

Problemas de indeterminismo cuando varias alternativas en una misma produccin comparten el mismo prefijo. Un algoritmo computacional no sabramos cul elegir de manera inmediata. Tendr que probar una produccin y si se produce un error haramos backtracking
"Existen transformaciones de gramticas para la eliminacin del indeterminismo. Estas transformaciones no modifican el lenguaje que se est reconociendo, pero si que cambian el aspecto de la gramtica, que es en general menos intuitiva".

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Indeterminismo en las alternativas

Cuando dos alternativas para un no-terminal empiezan igual, no se sabe qu alternativa expandir. P.g.:

Si en la entrada tenemos el if no se sabe cual de las dos alternativas elegir para expandir . La idea es reescribir la produccin para retrasar la decisin hasta haber visto de la entrada lo suficiente para poder elegir la opcin correcta.

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Indeterminismo en las alternativas

10

Factorizacin de una gramtica

11

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Factorizacin de una gramtica

12

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Factorizar la siguiente gramtica:


P iEtP P iEtPeP P a E b

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Factorizacin de una gramtica

13

Factorizar la siguiente gramtica:


P iEtP| iEtPeP|a E b Se factoriza de la siguiente manera: P iEtP (|eP)|a P eP| E b As que la gramtica queda como: P iEtPP| a P eP| E b

Teora computacional 12 Gramticas recursivas y no factorizadas Prof. Edgardo Adrin Franco Martnez

Factorizacin de una gramtica

14

You might also like