Zbudować rekursywny analizator syntaktyczny dla gramatyki podanej poniżej. Zastosować faktoryzację kiedy potrzeba.
Program: /* puste */ | Deklaracja Program ; Deklaracja : 'var' nazwa : Typ ';' | 'function' nazwa ';' Program Blok ';' ; Blok : 'begin' Instrukcje 'end' ; Instrukcje : /* puste */ | Instrukcja Instrukcje ; Instrukcja : if nazwa = nazwa then Blok ';' | nazwa ';' | nazwa ':=' Wyrazenie ';' ; Wyrazenie : nazwa | nazwa '+' nazwa | nazwa * nazwa ; Typ : 'int' | 'float' ;Chetni mogą wzbogacić tą gramatykę.