Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
6.4. GRAMATYKI 189<br />
Term "*" Primary // mnoenie<br />
Term "/" Primary // dzielenie<br />
Term "%" Primary // reszta z dzielenia (modulo)<br />
Primary:<br />
Number<br />
"(" Expression ")" // grupowanie<br />
Number:<br />
floating-point-literal<br />
Jest to zestaw prostych zasad. Ostatni naley czyta nastpujco: „Number (liczba) to litera<br />
zmiennoprzecinkowy”. Natomiast tre przedostatniej jest taka: „Primary (czynnik) jest liczb<br />
lub znakiem '(', po którym jest wyraenie i znak ')'”. Reguy dla Expression (wyraenia) i Term<br />
(skadnika) s podobne. Kada z nich jest zdefiniowana z uwzgldnieniem jednej z regu,<br />
które znajduj si dalej.<br />
Jak pamitamy z podrozdziau 6.3.2, nasze tokeny — zgodnie z definicj w jzyku <strong>C++</strong><br />
— to:<br />
litera zmiennoprzecinkowy (zgodny z definicj w jzyku <strong>C++</strong>, np. 3.14, 0.274e2<br />
lub 42);<br />
+, -, *, / oraz % — operatory;<br />
( i ) — nawiasy.<br />
Uywajc gramatyki i tokenów, zrobilimy bardzo duy pojciowy skok w stosunku do naszego<br />
pocztkowego pseudokodu. Tego rodzaju postpy chcielibymy robi zawsze, ale rzadko si<br />
to udaje bez pomocy. Do tego wanie su dowiadczenie, literatura i mentorzy.<br />
Na pierwszy rzut oka gramatyka ta wydaje si bezsensowna. Czsto tak jest z notacj<br />
techniczn. Pamitaj jednak, e jest to ogólna i elegancka (co w kocu docenisz) notacja do<br />
opisu czego, co potrafisz robi przynajmniej od czasów szkoy podstawowej. Nie masz problemu<br />
z obliczeniem wyraenia 1-2*3 albo 1+2-3 lub 3*2+4/2. Potrafisz jednak wyjani, jak<br />
to robisz? Umiesz to tak wyjani, aby zrozumia to nawet kto, kto nigdy nie mia stycznoci<br />
z konwencjonaln arytmetyk? Czy Twoje wyjanienia bd miay zastosowanie dla wszystkich<br />
kombinacji operatorów i argumentów? Aby wystarczajco szczegóowo i precyzyjnie<br />
objani co komputerowi, potrzebna jest odpowiednia notacja — a gramatyka naley do<br />
najlepszych konwencjonalnych narzdzi do jej tworzenia.<br />
Jak czyta si gramatyk? Majc pewne dane wejciowe, zaczyna si od pierwszej reguy,<br />
Expression (wyraenie), i przeszukuje kolejne, znajdujc te, które pasuj do tokenów w miar<br />
ich wczytywania. Wczytywanie strumienia tokenów zgodnie z zasadami gramatyki nazywa si<br />
parsowaniem (analiz skadniow), a program, który to robi, nazywamy parserem (ang.<br />
parser) lub analizatorem skadni (ang. syntax analyzer). Nasz analizator odczytuje tokeny od<br />
lewej do prawej, dokadnie w takiej kolejnoci, jak je wpisujemy i czytamy. Wypróbujemy jaki<br />
bardzo prosty przykad: czy 2 jest wyraeniem?<br />
1. Wyraenie (Expression) musi by skadnikiem (Term) lub koczy si skadnikiem.<br />
Skadnik musi by czynnikiem (Primary) lub koczy si czynnikiem. Ten czynnik<br />
musi zaczyna si znakiem ( lub by liczb (Number). Oczywicie 2 nie jest znakiem (,<br />
tylko literaem zmiennoprzecinkowym, a wic liczb, która jest czynnikiem.