Pok-11-wyk-Slajd9
Z Studia Informatyczne
Gramatyka niejednoznaczna(2)
Analizator kompilujemy i testujemy jego działanie podając jako przykładowe wejście wyrażenie „1 – 2 - 3 ”.
Operator odejmowania jest lewostronnie łączny, więc wyrażenie powinno być zinterpretowane jako „(1 - 2) - 3”, a zatem powinniśmy otrzymać odpowiedź „-4”. Analizator podaje jednak odpowiedź „0”.
Analiza wywodu testowanego wejścia wskazuje, że wygenerowany przez YACCa analizator składniowy wybrał nie to drzewo składniowe, o które nam chodziło. Wyrażenie E - E - E zostało zredukowane w złej kolejności – tak jakby operator odejmowania miał prawostronne wiązanie.
Składnia jest więc opisana poprawnie, a zły rezultat obliczeń wynika z niewłaściwego porządku wykonania akcji (złej kolejności zastępowania symboli w formach zdaniowych).