16.07.2014 Views

Programowanie. Teoria i praktyka z wykorzystaniem C++

Programowanie. Teoria i praktyka z wykorzystaniem C++

Programowanie. Teoria i praktyka z wykorzystaniem C++

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.4. GRAMATYKI 191<br />

Znowu nasz tok rozumowania moemy przedstawi graficznie (pomijamy zasad literau<br />

zmiennoprzecinkowego jako liczby dla uproszczenia):<br />

Na rysunku przedstawilimy ciek, któr przemierzylimy przez definicje. Odwracajc nasze<br />

rozumowanie, moemy powiedzie, e 2+3 jest wyraeniem, poniewa 2 jest skadnikiem,<br />

który jest wyraeniem, 3 jest skadnikiem oraz wyraenie ze znakiem + i skadnikiem równie<br />

jest wyraeniem.<br />

Prawdziwym powodem, dla którego zainteresowalimy si gramatykami, jest fakt, e mog<br />

one nam pomóc w rozwizaniu problemu poprawnego przetwarzania wyrae z operatorami *<br />

i +. Spróbujemy zatem przeanalizowa wyraenie 45+11.5*7. Zabawa w komputer szczegó-<br />

owo sprawdzajcy wszystkie reguy byaby mudna. Dlatego pominiemy niektóre porednie<br />

etapy, które opisalimy ju przy analizie 2 i 2+3. Oczywicie 45, 11.5 i 7 to literay zmiennoprzecinkowe,<br />

które s liczbami, liczby za s czynnikami, a wic moemy zignorowa<br />

wszystkie reguy poniej czynnika (Primary). Otrzymujemy:<br />

1. 45 jest wyraeniem, po którym znajduje si znak +, a wic szukamy wyrazu zamykajcego<br />

regu Expression+Term.<br />

2. 11.5 jest skadnikiem, po którym znajduje si znak *, a wic szukamy czynnika koczcego<br />

regu Term*Primary.<br />

3. 7 jest czynnikiem, a wic 11.5*7 jest skadnikiem zgodnie z regu Term*Primary. Teraz<br />

widzimy, e 45+11.5*7 jest wyraeniem zgodnie z regu Expression+Term. Mówic<br />

dokadniej, jest to wyraenie, w którym najpierw jest wykonywane mnoenie 11.5*7,<br />

a potem dodawanie 45+11.5*7, dokadnie tak, jak gdybymy napisali 45+(11.5*7).<br />

Na nastpnej stronie przedstawiamy graficzn ilustracj naszego rozumowania (znowu pomijamy<br />

zasad literau zmiennoprzecinkowego jako liczby dla uproszczenia).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!