Está en la página 1de 26

Escritura de una Gramtica

Concepto,Tipos, Eliminacin

RECURSIVIDAD

27/08/2011

Recursividad
La recursividad se define en una produccin cuando el smbolo de la izquierda se encuentra tambin a la derecha de la produccin. y Existe recursividad por la izquierda y por la derecha, dependiendo de la ubicacin del smbolo, ya sea al principio o final de la produccin.
y

27/08/2011

Recursividad
y

Por la Derecha

ID ::= LETRA ID

Por la izquierda
Num ::= Num Dgito | Dgito

27/08/2011

Recursividad
y

Tambin se puede encontrar producciones que tienen ambas clases de recursividad.


E ::= E + E

Una gramtica se considera recursiva si al menos una de sus producciones es recursiva.


27/08/2011

Eliminar la Recursividad Directa


y

Se hace a travs del uso de la siguiente forma


A A |

Donde A es el smbolo No terminal con recursividad por la izquierda y Donde son la cadenas de smbolos que siguen despus del No terminal A y Y es es cualquier otra produccin
y
27/08/2011

Eliminar la Recursividad Directa


y

Se substituye la forma
| A A |

A Por la definicin:A A A

27/08/2011

Eliminar la Recursividad Directa


Eliminando la recursividad por la izquierda
A A A A |

A A

27/08/2011

Eliminar la Recursividad Directa


Si existen ms de dos producciones: y Estratificacin: A A 1 | A 2 | | A m | 1 | 2 || y Reescritura: A 1A| 2A|| nA A 1 A| 2A|| mA |

27/08/2011

Eliminar la Recursividad Indirecta


La recursividad indirecta se obtiene a travs de varias producciones:
A B | B C | C A |

G = (N,T,P,S) es sin producciones y sin ciclos G = (N,T,P,S) no recursiva, con L(G) = L(G)

27/08/2011

Eliminar la Recursividad Indirecta


Por medio de: For i = 0 to n do For j = 0 to i-1 do y substituir Ai Aj por las producciones Ai | 2 | | k donde son 1 todas las producciones actuales de A y eliminar recursividad directa de Ai

27/08/2011

11

AMBIGEDAD

27/08/2011

12

Gramticas Ambiguas
Una gramtica G(N,T,P,S) se considera ambigua, si existen por lo menos dos rboles de derivacin que la representen. y Una gramtica es ambigua si por lo menos posee una produccin ambigua. y La ambigedad es una propiedad indecidible
y

27/08/2011

13

Ambigedad
La ambigedad surge de la derivacin de una cadena a travs de una gramtica, obteniendo dos o mas derivaciones. Gexp = (N, {+, *, (, ), 1,, 9}, P, S) donde P = {E E + E | E * E |1 || 9} y Una expresin ambigua: E + E * E Obtiene dos derivaciones: y E E+E E+E*E y E E*E E+E*E

27/08/2011

14

Gramticas Ambiguas
Otro ejemplo de este tipo de gramticas, donde se reconoce la misma entrada aabb

27/08/2011

Eliminar la Ambigedad
Para eliminar la ambigedad se puede: y Establecer precedencia de operadores o asociatividad.
y

Transformar la gramtica

27/08/2011

Precedencia de Operadores
Se puede transformar la gramtica agrupando los operadores de igual precedencia en grupos y asociando a cada uno una regla, de forma que los que tengan menor precedencia aparezcan ms cercanos al smbolo de inicio, creando una precedencia en cascada.

27/08/2011

Precedencia de Operadores
Por ejemplo la gramtica: E num | E + E | E - E | E * E | E / E
exp exp + term | exp - term | term term term * factor | term / factor | factor factor ( exp ) | num

27/08/2011

Transformacin de Gramtica
Si no se puede utilizar la precedencia de operadores, puede transformarse la gramtica de manera de eliminar la ambigedad. y Reestructurando para que al momento del anlisis se tenga una gramtica mejor estructurada.
y

27/08/2011

FACTORIZACIN

27/08/2011

Factorizacin
Se debe de factorizar cuando dos o ms producciones poseen un conjunto de smbolos iguales, por lo general por la izquierda. Cuando se desea hacer el anlisis de una cadena, no se puede determinar cual es la produccin ms adecuada para el anlisis.

27/08/2011

Factorizacin
Se pueden reescribir, permitiendo retrasar la seleccin de una produccin hasta tener ms smbolos de entradas para la decisin correcta. Este proceso permite evaluar de manera adecuada una entrada, optimizando el anlisis.

27/08/2011

Factorizacin
Para factorizar se debe de substituir a travs del siguiente esquema:

A | |

B1 B2

A | A

A B1 | B2

Solo si despus de

hay un No Terminal y

27/08/2011

Factorizacin
Por ejemplo
P if <exp> then <prop> | if <exp> then <prop> else <prop>

Se transforma factorizando por la izq:


P P if <exp> then <prop> P else <prop> |

27/08/2011

FIN DE LA PRESENTACIN GRACIAS POR SU ATENCIN!! INTEGRANTES: ISAAC BALDEON EDUARDO MORENO VERNICA GUTIRREZ MANUEL GARCIA ANLISIS DE COMPILADORES S7K
27/08/2011 25

LECCIN
y

Con sus propias palabras indique que es una gramtica ambigua Eliminar la recursin por la izquierda:
x E E +T IT x T T*FIF x F (E) I id

Factorizar lo siguiente:
x P iEtP I iEtPeP I a x E b
27/08/2011

También podría gustarte