Está en la página 1de 21

Gramticas Descendentes

Organizacin de Lenguajes y Compiladores 1 USAC

Guatemala, 2013

Gramticas Descendentes
Son reconocedores de estructuras sintcticas derivables por la derecha.

Las gramticas descendente al contrario de las ascendentes intenta utilizan un reconocedor de cadenas de entrada que comienzan por la raz y se deriva hasta las hojas.

Gramticas Descendentes
Son reconocedores de estructuras sintcticas derivables por la derecha.

Las gramticas descendente al contrario de las ascendentes intenta utilizan un reconocedor de cadenas de entrada que comienzan por la raz y se deriva hasta las hojas.

Caractersticas
No ambiguas. No recursivas por la izquierda. Factorizadas por la izquierda.

Funcionamiento

Reescritura de Gramticas
Las gramticas descendentes deben cumplir con tres caractersticas principales:

Supresin de la Ambigedad.
Eliminacin de la recursividad por la izquierda.

Factorizacin por la izquierda.

Gramtica Ejemplo

Producciones

S -> E E -> E + E E -> E * E E -> E ^ E E -> num

Supresin de la Ambigedad
La supresin de la ambigedad puede ser realizada de dos formas diferentes:
Por precedencia de operadores.
Por factorizacin por la izquierda.

Supresin de la Ambigedad
Para eliminarla por precedencia de operadores se procede:
Creando un nuevo no terminal por cada operador o conjunto de operadores que tienen la misma precedencia. Sustituir en la gramtica de operador del lado derecho el nuevo terminal creado y una produccin alternativa con el mismo no terminal.

Supresin de la Ambigedad
Por precedencia de operadores.

Operador

No terminal

* ^ num

T F D

Supresin de la Ambigedad
Producciones

S -> E E -> E + T E -> T T -> T * F T -> F F -> F ^ D F -> D D -> num

Supresin de la Ambigedad
La factorizacin por la izquierda, encontrara todos los smbolos comunes y los agrupara, eliminando la ambigedad al quedar factorizada la gramtica. Se trata de rescribir las producciones de la gramtica con igual comienzo para retrasar la decisin hasta haber visto lo suficiente de la entrada como para elegir la opcin correcta.

Supresin de la Ambigedad
Producciones

S -> E E -> E E E -> + E E -> * E E -> ^ E E -> num

Factorizacin por la izquierda


Producciones S -> E E -> E E

E -> T E -> + T T -> T T T -> F T -> * F F -> F F F -> D F -> ^ D D -> num

Factorizacin por la izquierda


Con precedencia de operadores
Producciones
S -> E
E -> E E E -> T E -> + T T -> T T T -> F T -> * F

Sin precedencia de operadores


Producciones
S -> E
E -> E E E -> num E -> + E E -> * E E -> ^ E

F -> F F
F -> D F -> ^ D D -> num

Eliminacin de la recursividad por la izquierda Una gramtica es recursiva por la izquierda si tiene un nodo Terminal a tal que existe una derivacin A -> A para alguna cadena . Para eliminar la recursividad por la izquierda se utiliza la siguiente regla.

Eliminacin de la recursividad por la izquierda

Recursividad por la izquierda Sin recursividad por la izquierda

A -> A a1 A -> A a1 A -> A an A -> b

A -> bA A -> a1A A -> a2A A -> anA A ->

Eliminacin de la recursividad por la izquierda


Sin precedencia de operadores
Producciones

S -> E E -> num E E -> E E E -> E -> + E E -> * E E -> ^ E

Eliminacin de la recursividad por la izquierda


Producciones
S -> E E -> T E

E -> E E
E -> E -> + T

Con precedencia de operadores

T -> F T T -> T T T -> T -> * F

F -> D F
F -> F F F -> F -> ^ D

D -> num

Sustituir No Terminales
No Terminales

E = U E = V T = W T = X F = Y F = Z

Gramticas Descendentes
Producciones
S -> E E -> T V

Producciones

V -> U V
V -> U -> + T T -> F X X -> W X X -> W -> * F

S E V V U U U

-> E -> num V -> U V -> -> + E -> * E -> ^ E

F -> D Z
Z -> Y Z Z -> Y -> ^ D

D -> num

También podría gustarte