Niejednoznaczność składni

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.