eliminacion de ambiguedad
Ambigüedad: Una gramática es ambigua si derivando de forma diferente con el mismo tipo de derivación se llega al mismo resultado.
Un lenguaje es inherentemente ambiguosi todas sus gramáticas son ambiguas:
Exp es una GLC
1.- Gexp = ({E}, {+, *, (, ), 1,…, 9}, E, P)
donde P = {E E + E | E * E | (E) | 1 |…| 9}
Una expresión ambigua:
1.- E + E * E
Dosderivaciones:
1.- E⇒ E + E⇒ E + E * E
2.- E⇒ E * E⇒ E + E * E
¡Son iguales!
TIPOS DE AMBIGÜEDAD
Dentro del estudio de gramáticas existen dos tipos fundamentales de ambigüedad, los cuales son:AMBIGÜEDAD INHERENTE:
Las gramáticas que presentan este tipo de ambigüedad no pueden utilizarse para lenguajes de programación, ya que por más transformaciones que se realicen sobre ellas, nuncase podrá eliminar completamente la ambigüedad que presentan.
Un lenguaje L es inherentemente ambiguo si todas sus gramáticas son ambiguas; si existe cuando menos una gramática no ambigua para L, Lno es ambiguo.
1.- El lenguaje de las expresiones no es Ambiguo
2.- Las expresiones regulares no son ambiguas
AMBIGÜEDAD TRANSITORIA:
Este tipo de ambigüedad puede llegar a ser eliminadarealizando una serie de transformaciones sobre la gramática original. Una vez que se logra lo anterior, la gramática queda lista para ser reconocida por la mayor parte de los analizadores sintácticos. (Sele considera "ambigüedad" porque existen métodos para realizar análisis sintáctico que no aceptan gramáticas con estas características)
Dónde se presenta la Ambigüedad Transitoria generalmente laambigüedad se presenta cuando existen producciones con factores comunes (distintas alternativas para un símbolo no-terminal que inician de la misma forma); ó cuando existen producciones que sonrecursivas izquierdas (producciones para un símbolo no-terminal en las cuales el primer símbolo de su forma sentencial es ese mismo símbolo no-terminal).
¿Cómo solucionar el problema de la Ambigüedad...
Regístrate para leer el documento completo.