Pok-10-wyk-Slajd8
Z Studia Informatyczne
Zmienne globalne(3)
Obydwie wersje analizatora składniowego kompilujemy i testujemy za pomocą przykładowego wejścia "1+2+3=". Jak nietrudno sprawdzić – poprawną odpowiedzią jest 6.
Taką odpowiedź rzeczywiście podaje analizator wykorzystujący lewostronną rekurencję.
Analizator zaimplementowany z wykorzystaniem prawostronnej rekurencji daje jednak odpowiedź – 9.
Jak już było zasugerowane wcześniej – błąd nie leży w gramatyce. Problem polega na ścisłym uwzględnieniu kolejności wykonywania akcji przez analizator LR w sposobie ewaluacji atrybutów przechowywanych w zmiennych globalnych.
Prześledźmy teraz w jaki sposób obydwie wersje analizowały wejście. Zacznijmy od wersji z rekurencję lewostronną.