Pok-11-wyk-Slajd27

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

Gramatyka niejednoznaczna – unarny minus


Większość języków programowania przewiduje również unarny (jednoargumentowy) minus służący do zmiany znaku wyrażenia, przed którym jest umieszczony.

Poprawne obsłużenie go w gramatyce wymaga jednak specjalnych zabiegów. Nie wystarczy dodanie produkcji:

E : '-' E { $$ = -$2; }

Co prawda, w wyniku dodania tej produkcji nie powstaną konflikty, ale zostaną zaburzone wzajemne relacje priorytetów operatorów (unarny minus musi mieć inny priorytet niż binarny minus).

Może się wydawać, że kalkulator działa poprawnie, ale można znaleźć wyrażenia, dla których daje złą odpowiedź, np.:

- 8 / - 4 / - 2 powinno dać (- 8 / - 4) / - 2, czyli 1, a otrzymujemy rezultat -4.


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