3.6 Zkonstruujte LL(3) analyzátor pro gramatiku G = ({S, A, B}, {a, b}, P, S), kde P obsahuje pravidla: 1 S aAaB 2 S bAbB 3 A a 4 A ba 5 B aB 6 B a Nejprve zkonstruujeme pomocné LL(3) tabulky: T0 = (S, {}) S aAaB aaa, aba {aa, aaa}, {} S bAbB bab, bba {ba, baa}, {} T1 = (A, {aa, aaa}) A a aaa A ba baa T2 = (B, {}) B aB aa, aaa {} B a a T3 = (A, {ba, baa}) A a aba A ba bab Nyní zapíšeme tabulku přechodové funkce analyzátoru. Uvádíme pouze zajímavou část tabulky, tj. řádky popisující situaci, kdy je na vrchovu zásobníku nějaké Ti, a sloupce, které jsou v těchto řádcích tabulku neprázdné. Zbytek tabulky obsahuje pokyn ČTI, je-li na vrcholu zásobníku terminál shodný s terminálem na vstupu, a AKCEPTUJ, je-li na vrcholu zásobníku jeho dno $ a celý vstup je přečtený (na vstupu je ). Ve všech ostatních případech (včetně prázdných buněk uvedené části tabulky) analyzátor vrátí chybu, protože analyzované slovo není generováno gramatikou G. aaa aba bab bba baa aa a T0 aT1aT2, 1 aT1aT2, 1 bT3bT2, 2 bT3bT2, 2 T1 a, 3 ba, 4 T2 aT2, 5 aT2, 5 a, 6 T3 a, 3 ba, 4