Pok-11-wyk-Slajd3

Z Studia Informatyczne
Wersja z dnia 19:12, 30 sie 2006 autorstwa Complak (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Gramatyki jednoznaczne i niejednoznaczne

Gramatyki jednoznaczne i niejednoznaczne


W ramach dotychczasowych wykładów rozważana była tylko implementacja gramatyk jednoznacznych w YACCu.

Gramatyka jest jednoznaczna wtedy i tylko wtedy, gdy dla każdego zdania języka wejściowego istnieje tylko jedno drzewo składniowe (wywodu). W przeciwnym przypadku gramatyka jest niejednoznaczna.

Słowo „niejednoznaczna” sugeruje, że jest to „gorsza” gramatyka niż jednoznaczna. Jak zobaczymy, w praktyce zastosowanie gramatyki niejednoznacznej może okazać się lepszym rozwiązaniem niż równoważnej jednoznacznej.

Trzeba także pamiętać, że drzewo składniowe (jak sama nazwa zresztą wskazuje) opisuje składnię a nie znaczenie (semantykę) zdania. Nie odzwierciedla więc kolejności zastępowania symboli w formach zdaniowych (porządku wykonywania akcji).

Każdemu drzewu wywodu odpowiada jedno unikalne wyprowadzenie prawostronne (jedno lewostronne zresztą też – ale w ramach wykładu rozważamy LR-parsery wygenerowane przez YACCa, które konstruują odwrotność prawostronnego wywodu).


<< Poprzedni slajd | Spis treści | Następny slajd >>