A continuación se presenta gramática independiente del contexto de una "colgando más" tipo de ambigüedad (imagina que sinónimo de y b representa y c representa algún otro tipo de instrucción o bloque):
Sif expr then
else
Por ejemplo,aacbcse puede analizar como(a(acbc))o como(a(ac)bc)(esta es la palabra ambigua más simple / más corta para esta gramática).
La forma "estándar" de resolver esta ambigüedad de "colgar otro" obliga a la declaración "más" ( ) a emparejarse con el "si-entonces" más cercano / más interno ( a ). Esto se puede lograr de la siguiente manera: S Esta gramática es inequívoca. En el ejemplo anterior, fuerza elanálisis(a(acbc)).
Pregunta: ¿Hay otra forma natural de resolver la ambigüedad que forzaría el análisis de a a c b c ? En otras palabras, estoy buscando una gramática que genere el mismo lenguaje que los dos anteriores, que no sea ambigua y que analice a a c b c como ( a ( a c ) b c ) .
Observación: Mi primer intento fue el siguiente: que resuelve la ambigüedad deaacbcsegún sea necesario, pero esta gramática sigue siendo ambigua:aacbacbcpuede analizarse como(a(ac)b(acbc))o como(a(acb(ac))bc).