Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
E E E 3
Vale 11
E E 2 E 3
Vale 14
E
+ E
E E E
* E
+ E 4
* E 4
E 2
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!
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
E E E
* E
+ E
+ E
E + E
Izquierda: E + E + E
Derecha: E + E + E
Izquierda: E + E + E
Derecha: E + E + E
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?
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!
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)
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
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
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
F I
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
F I
a
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7
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
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
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
* F
T T *
F
Dr. Luis A. Pineda, IIMAS, UNAM, 2005. ISBN: 970-32-2972-7
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
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
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!
c c
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
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