Funkcje pomocnicze
wartosc_symbolu daj_symbol()
pomin biale spacje z wyjatkiem '\n’; testuj czy nie skończył się strumień (jeśli tak to return biezacy_symbol = KONIEC)
jeśli ch jest ';’ lub '\n’ zwróć biezacy_symbol = DRUK;
jeśli ch jest '*’, '/’, '+’, '-’, '(’, ')’, '=’
zwróć biezacy_symbol = wartosc_symbolu(ch);
jeśli ch jest '0’, '1’, '2’, '3’, '4’, '5’, '6’, '7’, '8’, '9’, '.'
wczytaj całą liczbę na wartosc_liczby
zwróć biezacy_symbol = LICZBA;
przepisz nazwę znak po znaku z cin do napis zwróć biezacy_symbol = NAZWA;
jeśli to nie litera to blad("niepoprawny symbol");
zwróć biezacy_symbol = DRUK;
nazwa* szukaj(const char* p,int wst =0)
{ przejdź przez listę nazw
porównuj napisy elementów listy z napisem
jeśli znajdziesz, zwróć pasujący elenment listy
jeśli nie znalazleś a (wst ==0) to blad("nie znaleziono nazwy");
w przeciwnym razie jest to nowa nazwa do wstawienia
zrób miejsce na nową nazwę
w nowej nazwie zrób miejscae na napis
przepisz to co wskazuje p do tego napisu
podmontuj na początek listy
przesuń wskaźnik początku listy na ten nowy element
zwróć wskaźnik do tego elementu;
inline nazwa* wstaw(const char* s) {return szukaj(s, 1);}
double blad(const char*s ){
cerr <<"blad: " << s << '\n';