Dos gramáticas son equivalentes si generan el mismo lenguaje, es decir, si .
(Adelanto: averiguar en general si dos gramáticas son equivalentes es un problema no computable.)
Sea una gramática. Tanto como es una derivación para la palabra .
Una sentencia es ambigua si existen más de una derivación para ella en una gramática.
Una gramática es ambigua si su lenguaje contiene una sentencia ambigua, es decir, se puede derivar la misma sentencia con dos (o más) derivaciones distintas.
Un lenguaje es ambiguo (o incluso se dice inherentemente ambiguo) si todas las gramáticas que generan el lenguaje son ambiguas.
Ejemplo: no es ambigua, entonces no es ambiguo.
Si una sentencia es ambigua (en el caso de las gramáticas libres de contexto) tenemos dos árboles de derivación para la misma sentencia.
Ejemplo:
La ambigüedad introduce cierto grado de indeterminismo para derivar palabras, por eso, en la práctica se intenta evitar gramáticas ambiguas.
(Pero: el problema de decisión, si existe para una gramática ambigua una gramática equivalente no-ambigua es un problema no-computable.)
Investigamos de nuevo las expresiones aritméticas:
Usamos para expresiones (va a ser también el símbolo inicial), para termios (con prioridad asociado a ), para factores (con prioridad asociado a , y para variables (que ya no tendrán operaciones):
La gramática con este sistema de producciones no es ambigua.