Pok-5-wyk-Slajd44
Lewostronna rekurencja
Zajmijmy się teraz ograniczeniami metody zejść rekurencyjnych.
Na początek przyjrzyjmy się gramatyce.
Stosując znany już wzorzec wyliczamy zbiór FIRST dla pierwszej i trzeciej produkcji, czyli dla FIRST(a B a) oraz FIRST(B b). Implementujemy funkcję dla nieterminala B. Przykładowa implementacja wygenerowana na bazie gramatyki znajduje się na slajdzie.
Proszę zwrócić uwagę, że już dla ciągu symboli leksykalnych: „aba” nasz analizator nie będzie działał poprawnie. Po wczytaniu symbolu ‘a’ przejdziemy do rozważanej funkcji B(). Tu nasz program zapętli się wykonując w nieskończoność (a w zasadzie do momentu przepełnienia stosu) rekurencyjne wywołanie funkcji B(). Przyczyną takiego zachowania jest wykorzystanie w gramatyce lewostronnej rekurencji.