Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
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).