"Jeżeli gramatyka daje co najmniej 2 odrębne drzewo analizy lub pochodne, to gramatyka jest niejednoznaczna." Kolejna zasada: wszystkie CFG (bez zbędnych symboli) z lewostronną i prawostronną rekursywnością dla tego samego nieterminala też są niejednoznaczne.
Skąd wiesz, że gramatyka jest niejednoznaczna?
O gramatyce mówi się, że jest niejednoznaczna, jeśli istnieje więcej niż jedna skrajna lewa derywacja lub więcej niż jedna skrajna prawa derywacja lub więcej niż jedno drzewo analizy dla podanego ciągu wejściowego. Jeśli gramatyka nie jest dwuznaczna, nazywa się ją jednoznaczną. Jeśli gramatyka jest niejednoznaczna, to nie jest dobra dla konstrukcji kompilatora.
Jaki jest przykład niejednoznacznej gramatyki?
W informatyce niejednoznaczna gramatyka to gramatyka bezkontekstowa, dla której istnieje ciąg, który może mieć więcej niż jedno skrajne lewe drzewo pochodne lub drzewo analizy, podczas gdy gramatyka jednoznaczna to gramatyka bezkontekstowa, dla której każdy poprawny ciąg ma unikatowe wyprowadzenie lub drzewo analizy z lewej strony.
Jak udowodnić, że gramatyka bezkontekstowa jest niejednoznaczna?
3 Odpowiedzi
- Wszystkie CFG bez bezużytecznych symboli iz rekurencją lewą i prawą dla tego samego symbolu są niejednoznaczne. Ogólnie: …
- Aby zbadać niejednoznaczność, musisz znaleźć 2 skrajne lewe pochodne dla tego samego łańcucha (lub 2 skrajne prawe pochodne lub 2 drzewa pochodne).
Jak rozwiązać niejednoznaczną gramatykę?
Metody usuwania niejednoznaczności-
- Poprawiając gramatykę.
- Dodając reguły grupowania.
- Korzystając z semantyki i wybierając najbardziej sensowną analizę.
- Dodając reguły pierwszeństwa lub inne reguły przetwarzania zależnego od kontekstu.