/* zmienna globalna */

void parsujWyrażenie() { if (następny_znak == liczba)

parsujIloczyn(); parsujOpcjonalnePlusWyrażenie(); } else { błąd();

void parsujIloczyn() { if (następny_znak == liczba)

następny_znak = odczytaj_znak(); parsujOpcjonalneRazyIloczyn(); } else { błąd();

void parsujOpcjonalnePlusWyrażenie() { if (następny_znak == '+')

następny_znak = odczytaj_znak(); parsujWyrażenie(); } else if (następny_znak == KONIEC_PLIKU) { /* pusty ciąg znaków */ } else { błąd();

void parsujOpcjonalneRazyIloczyn() { if (następny_znak == '*')

następny_znak = odczytaj_znak(); parsujIloczyn(); } else if (następny_znak == '+' || następny_znak == KONIEC_PLIKU){ /* pusty ciąg znaków */ } else { błąd();

void parsuj() { następny_znak = odczytaj_znak(); parsujWyrażenie(); if (następny_znak != KONIEC_PLIKU) błąd(); }

Zobacz też Parser LR Zbiory First i Follow

Bibliografia

Kategoria:Parsery