Dangling else problem
Dangling else problem to problem niejednoznaczności spotykanych w praktyce gramatyk bezkontekstowych.
Niech polecenie redukuje się do if (warunek) polecenie, do if (warunek) polecenie else polecenie oraz do jakiegoś innego polecenia, np. zmienna = wyrażenie.
Weźmy teraz polecenie:
- if (warunek1) if (warunek2) zmienna = wyrażenie else zmienna = wyrażenie
Gramatyka w żaden sposób nie rozstrzyga do którego if odnosi się to else:
- if (warunek1) { if (warunek2) zmienna = wyrażenie else zmienna = wyrażenie }
czy też:
- if (warunek1) { if (warunek2) zmienna = wyrażenie } else zmienna = wyrażenie
Gramatykę taką zawsze można przekształcić w gramatykę jednoznaczną, zwykle zakładając że else dotyczy najwewnętrzniejszego wolnego if (czyli pierwsza z podanych wyżej interpretacji). Jest to również rozwiązanie najlepsze ze względu na strukturę analizatora składni: aby skojarzyć napotkany else z właściwym if nie potrzeba sprawdzać liczby else-ów następujących w dalszej części analizowanego napisu.