Egyszerű LL grammatika
Definíciók Példa. Ábrákkal MASM program (szó felismerése LL(1) –ben )
Left to right, using a Leftmost derivation ◦ Balról jobbra, legbaloldalibb levezetéssel LL(k) ◦ k szimbólum előreolvasásával döntünk a következő alkalmazandó szabályról LL(1) ◦ 1 szimbólumot olvasunk előre. ◦ Elemzésének megvalósítása egyszerű ◦ ε-mentes NT: Nem terminális, T: Terminális
A levezetés tetszőleges pontján a szöveg k terminálisa meghatározza az alkalmazandó levezetési szabályt FIRST k (α) (k≥0) ◦ Az α-ból levezethető szimbólumsorozatok k hosszúságú kezdő terminális sorozatainak halmaza. ◦ FIRST k (α) = {x|α xβ∩|x|=k}U{x|α x∩|x|<k}
LL(k) ◦ k szimbólum előreolvasásával döntünk a következő alkalmazandó szabályról ◦ Tetszőleges S wAβ wα 1 β wx S wAβ wα 2 β wy levezetéspárra FIRST k (x) = FIRST k (y) esetén α 1 =α 2 Példa LL(2) –re ◦ G=({a,b}, {A,S}, S, P) S abA|ε A Saa|b
Definició ◦ Olyan LL(1) grammatika, amelyben a szabályok jobb oldala terminális jellel kezdődik ◦ A → aα alakú szabályok Következmény ◦ Az azonos NT jelekhez tartozó szabályok jobb oldalai különböző T jellel kezdődnek. Tétel ◦ A szabályok A->aα alakúak ◦ A → a 1 α 1 és A → a 2 α 2 => a 1 ≠ a 2
Verem tetején terminális szimbólum ◦ A szöveg következő karakterével egyezés esetén kivesszük a veremből és lépünk a szövegben ◦ Ha nem egyezik a két szimbólum, akkor hiba Verem tetején NT szimbólum ◦ Ha van megfelelő szabály, NT jel cseréje szabály jobb oldalára a veremben ◦ Egyébként hiba Ha a verem üres ◦ Ha a szöveg végére értünk, vége ◦ Egyébként hiba
S -> aS | bAc A -> bAc | d
Dévai Gergely – ELTE IK ◦ handout.pdf