Pok-11-wyk-Slajd29

Z Studia Informatyczne
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 >>