Pok-6-wyk-Slajd27
Rozszerzenia składni – przykład(4)
Przeprowadzenie lewostronnej faktoryzacji nie jest już takie proste. Musimy wprowadzić dwa dodatkowe nieterminale i istotnie zmodyfikować akcje.
Z nieterminala A będziemy teraz wywodzić pojedynczą literę a oraz resztę ciągu liter a – nieterminal RA. Po zakończeniu wywodzenia RA powiększamy zliczoną liczbę liter a o 1 – tą którą wywiedliśmy przez wywołaniem RA.
W nieterminalu RA możemy natrafić na ciąg pusty – wtedy inicjalizujemy długość ciągu liter a wartością 0 i rozpoczynamy powrót z rekurencji.
Jeżeli natomiast trafimy na literę a, wczytujemy ją i rekurencyjnie kontynuujemy przetwarzanie reszty ciągu, a po każdym powrocie zwiększamy wartość zmiennej przechowującej długość ciągu o 1.
Implementacja przetwarzania ciągu liter b ma identyczną postać z dokładnością do rozpoznawanej litery i wykorzystywanej zmiennej.