"Si una gramática produce al menos 2 árboles de análisis sintáctico distintos o derivaciones, entonces la gramática es ambigua." Otra regla: todo CFG (sin símbolos inútiles) con recursividad a la izquierda y recursividad a la derecha para el mismo no terminal también es ambiguo.
¿Cómo saber si una gramática es ambigua?
Se dice que una gramática es ambigua si existe más de una derivación más a la izquierda o más de una derivación más a la derecha o más de un árbol de análisis sintáctico para la cadena de entrada dada. Si la gramática no es ambigua, se dice que no es ambigua. Si la gramática tiene ambigüedad, entonces no es buena para la construcción del compilador.
¿Qué es un ejemplo de gramática ambigua?
En ciencias de la computación, una gramática ambigua es una gramática libre de contexto para la cual existe una cadena que puede tener más de una derivación a la izquierda o árbol de análisis sintáctico, mientras que una gramática no ambigua es una gramática independiente del contexto en la que cada cadena válida tiene una única derivación o árbol de análisis sintáctico situado más a la izquierda.
¿Cómo se demuestra que una gramática independiente del contexto es ambigua?
3 Respuestas
- Todo CFG sin símbolos inútiles y con recursividad izquierda y derecha para el mismo símbolo, es ambiguo. En general: …
- Para probar la ambigüedad, debe encontrar 2 derivaciones más a la izquierda para la misma cadena (o 2 derivaciones más a la derecha, o 2 árboles de derivación).
¿Cómo se resuelve la gramática ambigua?
Métodos para eliminar la ambigüedad-
- Al corregir la gramática.
- Añadiendo reglas de agrupación.
- Utilizando la semántica y eligiendo el análisis que tenga más sentido.
- Al agregar las reglas de precedencia u otras reglas de análisis sensibles al contexto.