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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

194 ROZDZIA 6 • PISANIE PROGRAMU<br />

W rónych ksikach i rónych systemach parsowania stosuje si róne notacje i terminologi.<br />

Na przykad niektórzy nazywaj tokeny znakami terminalnymi, a zasady znakami nieterminalnymi<br />

lub produkcjami. My umieszczamy tokeny w podwójnych cudzysowach i zaczynamy<br />

od pierwszej zasady. Alternatywy znajduj si w osobnych wierszach, np.:<br />

List:<br />

"{" Sequence "}"<br />

Sequence:<br />

Element<br />

Element " ," Sequence<br />

Element:<br />

"A"<br />

"B"<br />

Zatem sekwencja (Sequence) jest elementem (Element) lub elementem i sekwencj oddzielonymi<br />

od siebie przecinkiem. Element to litera A lub B. Lista (List) to sekwencja w nawiasach<br />

klamrowych. Moemy generowa te listy (jak?):<br />

{ A }<br />

{ B }<br />

{ A,B }<br />

{A,A,A,A,B }<br />

Ponisze natomiast nie s listami (dlaczego?):<br />

{ }<br />

A<br />

{ A,A,A,A,B<br />

{A,A,C,A,B }<br />

{ A B C }<br />

{A,A,A,A,B, }<br />

Tej sekwencji nie nauczye si w przedszkolu ani nie zakodowae w mózgu, chocia nadal<br />

nie jest to nauka najwyszych lotów. W rozdziaach 7.4 i 7.8.1 objanimy sposoby wyraania<br />

zasad syntaktycznych za pomoc gramatyk.<br />

6.5. Zamiana gramatyki w kod<br />

Istnieje wiele sposobów na zmuszenie komputera do respektowania zasad gramatyki. Uyjemy<br />

najprostszego — napiszemy po jednej funkcji dla kadej zasady i wykorzystamy nasz typ<br />

Token do reprezentowania tokenów. Program implementujcy gramatyk czsto nazywa si<br />

parserem.<br />

6.5.1. Implementowanie zasad gramatyki<br />

Do zaimplementowania naszego kalkulatora potrzebujemy czterech funkcji — jednej do<br />

wczytywania tokenów i po jednej dla kadej zasady w gramatyce:<br />

get_token() // Wczytuje znaki i tworzy tokeny.<br />

// Wykorzystuje strumie cin.<br />

expression() // Obsuguje operatory + i –.

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

Saved successfully!

Ooh no, something went wrong!