Está en la página 1de 8

Ambigedad Tema 16

Ambigedad Dr. Luis A. Pineda ISBN: 970-32-2972-7 Si una gramtica genera ms de una estructura a partir de la misma raiz y con la misma cosecha (ms de una estructura para la misma cadena), dicha gramtica es ambigua Dos tipos de ambigedad En la gramtica En el lenguaje
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Ambigedad
Si una gramtica es ambigua, posiblemente (no necesariamente) existe una gramtica no ambigua que genere el mismo lenguaje Un lenguaje es inherentemente ambiguo si todas sus gramticas son ambiguas No existe un algoritmo que decida si una gramtica es ambigua!
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Una gramtica ambigua


Exp es una GLC donde P = {E E + E | E * E | (E) | 1 || 9} Una expresin ambigua: E+E*E Dos derivaciones: EE+EE+E*E EE*EE+E*E Son iguales!
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Gexp = ({E}, {+, *, (, ), 1,, 9}, E, P)

Una gramtica ambigua


La expresin final es la misma: E * E + E * E E * E + E * E Pero las derivaciones son diferentes: EE+EE+E*E EE*EE+E*E

Una gramtica ambigua


A cada derivacin le corresponde una estructura sintctica: Derivaciones diferentes pueden generar la misma estructura (para la misma cadena) La ambigedad surge cuando derivaciones diferentes generan estructuras diferentes (para la misma cadena)
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Una gramtica ambigua


La expresin final es la misma: E * E + E * E E * E + E * E Sus estructuras sintcticas son diferentes:

E E E 3

Una gramtica ambigua


La diferencia es significativa:
E E + E E + E * E * 3 + 4 * 2 E E * E E + E * E * 3 + 4 * 2
E

Vale 11
E E 2 E 3

Vale 14
E

+ E

E E E

* E

+ E 4

* E 4

E 2

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

De quin es el defecto?
Derivaciones diferentes pueden tener la misma estructura: EE+E3+E3+2 EE+EE+23+2
E

Gramticas ambiguas
Una CFG G = (V, , S, P) es ambigua si existe cuando menos una cadena w en * para la cual hay ms de una rbol de parseo o estructura sintctica, cada una de stas con raiz S y cosecha w Si toda cadena en el lenguaje de la gramtica tiene cuando ms un rbol de parseo, la gramtica no es ambigua
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

E 3

E 2

La ambigedad surge cuando hay ms de una estructura sintctica para la misma expresin!
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Gramticas ambiguas
Si G es una GLC ambigua, tal que L = L(G) & existe una Gi no ambigua tal que L = L(Gi), podemos eliminar la ambigedad reemplazando a G por Gi (usando a Gi en vez de G)

Eliminando la ambigedad
En general, no existe un algoritmo para eliminar la ambigedad Hay LLC que slo tienen gramticas ambiguas!

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Eliminando la ambigedad
En la prctica y para algunas aplicaciones (e.g. definir GLC para lenguajes de programacin), es posible eliminar la ambigedad Para esto es necesario estudiar las causas de la ambigedad (especficas para una gramtica ambigua dada) y proporcionar una gramtica alternativa no ambigua!
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Causas de la ambigedad
Consideremos Gexp: Fuente 1: La precedencia de los operadores no se respeta Fuente 2: Una secuencia del mismo operadore se puede agrupar tanto por la izquierda como por la derecha Esto no afecta si el operador es asociativo!
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Una gramtica ambigua


La precedencia de operadores no se respeta: E * E + E * E E * E + E * E
E E E + E E E + E E E * E E E E * +

Una gramtica ambigua


Forzar la precedencia: Nos quedamos con slo un rbol: E * E + E * E
E

E E E

* E

* tiene mayor precedencia + tiene mayor precedencia


Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

* tiene mayor precedencia

+ tiene mayor precedencia

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Una gramtica ambigua


Agrupaciones arbitrarias de operadores con la misma precedencia: E * E + E + E
E E E

Una gramtica ambigua


Adoptamos una convencin de agrupacin (e.g. por la izquierda) E * E + E + E
E E + E E E

+ E

+ E

E + E

Izquierda: E + E + E

Derecha: E + E + E

Izquierda: E + E + E

Derecha: E + E + E

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Eliminando la ambigedad
Para forzar la precedencia: Usar diferentes tipos de variables para representar expresiones con el mismo grado de atraccin Binding strength: Factores Trmino Expresiones
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Eliminando la ambigedad
Considerar Gexp (adicionando ids): Gexp = ({E, I}, {+, *, (, ), a, b, 0, 1}, E, P) donde P = {E E + E | E * E | (E) | I, I a | b | Ia | Ib | I0 | I1} Cules son los factores, los trminos y las expresiones en Gexp?

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Factores
Una expresin que no puede partirse por ningn operador adjacente: Los identificadores: a1+b00*aa10 (a1+b0)(0*aa10)? Expresiones entre parntesis: Los parntesis hacen a las expresiones que enciarran unidad coherentes indestructibles! Son el mecanismo sintctico para crear factores!
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Trminos
Una expresin que no puede partirse por el operador +:
a1*a *b (a1*a)*b a1+a *b (a1+a)*b

a*b es un trmino!

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

El grado de atraccin
Una cadena bien formada que puede partirse por un + o un * adjacente La suma de dos trminos

Forzando la precedencia
Con las variables de precedencia podemos encontrar una gramtica alternativa no ambigua para Gexp:
Gexp-1 = ({E, T, F, I}, {+, *, (, ), a, b, 0, 1}, E, P)

donde P = {I a | b | Ia | Ib | I0 | I1, F I | (E ) TF|T*F E T | E + T}


Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7 Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a

Eliminando la ambigedad
Las producciones se diseana de forma tal que las variables con menor grado de atraccin dominen a las variables con mayor grado de atraccin (i.e. las expresiones aparecen ms arriba que los trminos, y estos ms arriba que los factores, en el rbol de parseo).

Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

La derivacin: E

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

E T

La derivacin: EE+T

La derivacin: EE+T T+T

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

E T

E T

La derivacin: EE+T T+T F+ T

La derivacin: EE+T T+T F+ T I+T

F I

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

E T

E T

+ T

T F

La derivacin: EE+T T+T F+ T I+T a+T

F I

a
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

La derivacin: EE+T T+T F+ T I+T a+T a + (T * F)

F I

a
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} F E

E T

+ T F

E T

+ T F I

T F

La derivacin: E * a + (F * F)

F I

La derivacin: E a + (F * F) a + (I * F)

F I

a
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

a
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} F E

E T

+ T F I

E T

+ T F I

T F I

La derivacin: E a + (F * F) a + (I * F) a + (a * F)

F I

La derivacin: E a + (F * F) a + (I * F) a + (a * F) a + (a * I)

F I

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} E

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} F I a E

E T

+ T F I

E T

+ T F I

T F I a

La derivacin: E a + (F * F) a + (I * F) a + (a * F) a + (a * I) a + (a * a )

F I

La gramtica no es ambigua: Las variables de menor precedencia se introducen antes, y las variables de mayor precedencia no pueden ser partidas por variables de menor precedencias, que estn arriba en el rbol!

F I

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Generar: Generar: a + a * a
Las producciones:
P = {I a | b | Ia | Ib | I0 | I1, F I | (E) T F | (T * F) ET|E+T} T

Gram Gramticas no ambiguas


Si una gramtica no es ambigua sus derivaciones ms izquierdas y ms derechas son nicas!
Derivacin mas izq: Derivacin ms der:
EE+T E + (T * F) E + (T * I) E + ( T * a) E + ( F * a) E + ( I * a) E + (a * a) T + (a * a) F + (a * a) I + (a * a) a + (a * a)
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

* F

En particular, los trminos y las expresiones se ramifican T siempre por la izquierda!

T T *

F
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

EE+T T+T F+T I+T a+T a + (T * F) a + (F * F) a + (I * F) a + (a * F) a + (a * I) a + (a * a)

Ambig Ambigedad y derivaciones m ms izquieras


Derivacin ms izq: EE+T T+T F+ T I+T a+T a + (T * F) a + (F * F) a + (I * F) a + (a * F) a + (a * I) a + (a * a ) Teorema: Para toda gramtica G = (V, T, S, P) & cadenas w en T*, w tiene dos rboles de parseo distintos si y slo si tiene dos derivaciones ms izquierdas a partir de S Prueba: si no fuera el caso una variable ms izquierda se podra expandir en ms de una forma!

Ambigedad Inherente
Un lenguaje L es inherentemente ambiguo si todas sus gramticas son ambiguas; si existe cuando menos una gramtica no ambigua para L, L no es ambiguo. El lenguaje de las expresiones no es ambiguo Las expresiones regulares no son ambiguas
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Ambigedad Inherente
Ejemplo de un lenguaje inherentemente ambiguo: L = {anbncmdm | n 1, m 1} {anbmcmdn | n 1, m 1}

Ambigedad Inherente
L es un LLC: S AB | C A aAb | ab C aCd | aDd B cBd | cd D bDc | bc La gramtica es ambigua: hay cadenas con ms de una derivacin ms izquierda: Considere: aabbccdd (m = n = 2) S AB aAbB aabbB aabbcBd aabbccdd S C aCd aaDdd aabDcdd aabbccdd

L es un LLC:
S AB | C A aAb | ab B cBd | cd C aCd | aDd D bDc | bc

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Ambigedad Inherente
S S C A B b a d d d

Ambigedad Inherente
El lenguaje: L = {anbncmd m | n 1, m 1} {anbmcmd n | n 1, m 1} La gramtica S AB | C C aCd | aDd A aAb | ab B cCd | cd D bDc | bc Por qu todas las gramticas para este lenguaje son ambiguas? Considere cualquier cadena con m = n Siempre habr dos derivaciones para estas cadenas!

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

c c

Dos rboles de parseo para aabbccdd

Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

Ambigedad Inherente
Qu cambios podramos hacer en la gramtica? El problema: La disjuncin (de nuevo!) No hay otro mecanismo para contar el mismo nmero de as & bs, y al mismo tiempo, para contar el mismo nmero de as & ds Lo mismo para contar las cs & ds &, al mismo tiempo, las bs & cs
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

La clase de los LLC nono-ambiguos

LLC no ambiguos

B aC LR Ba
? LLC ambiguos No existe algoritmo para determinar si un lenguaje es ambiguo No hay manera de decidir si un lenguaje es inherentemente ambiguo!
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7

También podría gustarte