Pok-11-wyk-Slajd29

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

Gramatyka niejednoznaczna – unarny minus(2)

Gramatyka niejednoznaczna – unarny minus(2)


Oczywiste jest więc, że należy odpowiednio podnieść priorytet instrukcji E –> ‘-’ E. Nie można tego efektu osiągnąć podnosząc priorytet operatora ‘-’, bo przy okazji priorytet produkcji E –> E ‘-’ E stałby się wyższy niż operatorów multiplikatywnych.

W YACCu przewidziano rozwiązanie dla tego typu problemów – można arbitralnie sterować priorytetem produkcji za pomocą słowa kluczowego % prec . Aby naprawić działanie kalkulatora musimy więc:

  • zdefiniować pomocniczy token, np.:%token UMINUSo odpowiednio wysokim priorytecie
  • przypisać priorytet tokenu UMINUS do produkcji E –> ‘-’ E:E : ‘-’ E %prec UMINUS {$$=-$2;}


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