Problem niejednoznaczności gramatyki, występuje wtedy, gdy generuje ona zdania, które mają więcej niż jedno drzewo wyprowadzeń, które jest hierarchiczna strukturą reprezentującą w sposób graficzny wyprowadzenie zdania z gramatyki. Korzeń drzewa ma etykietę głowy języka. Gałęzie są symbolami pomocniczymi, a liście symbolami końcowymi lub pustymi. Struktura gałęzi reprezentuje produkcje. Gałąź główna ma etykietę lewej strony produkcji, a gałęzie z niej wyprowadzone etykiety prawej strony produkcji w kolejności od strony lewej do prawej.
Przykład 1:
Należy wyprowadzić zdanie 1 - 0 - 1 dla gramatyki:
E:: = E – E | 0 | 1
Dla zdania 1-0-1 można narysować dwa różne drzewa wyprowadzeń.
Przykład 2:
Kolejna niejednoznaczność występuje w języku C i Pascal dla instrukcji warunkowej IF.
Jest ona spowodowana wystąpieniem produkcji:
S :: = if E then S
S :: if E then S else S
Dla zdania if E1 then if E2 then S1 else S2 można wyprowadzić dwa różne drzewa.
Problemem niejednoznaczności if-else w językach Pascal i C został rozwiązany w ten sposób, że słowo kluczowe else jest kojarzone z najbliżej występującym słowem kluczowym if.
Problemem niejednoznaczności if-else w językach Pascal i C został rozwiązany w ten sposób, że słowo kluczowe else jest kojarzone z najbliżej występującym słowem kluczowym if.