150 likes | 319 Views
Fordítóprogramok és assemblerek. Egyszerű LL grammatika. Egyszerű LL grammatika - Tartalom. Definíciók Példa. Ábrákkal MASM program (szó felismerése LL(1) – ben ). Egyszerű LL grammatika – fogalmak. L eft to right, using a L eftmost derivation
E N D
Fordítóprogramok és assemblerek Egyszerű LL grammatika
Egyszerű LL grammatika - Tartalom • Definíciók • Példa. Ábrákkal • MASM program (szó felismerése LL(1) –ben )
Egyszerű LL grammatika – fogalmak • Leftto right, using a Leftmostderivation • 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
LL(K) grammatika – definíciók • A levezetés tetszőleges pontján a szöveg k terminálisa meghatározza az alkalmazandó levezetési szabályt • FIRSTk(α) (k≥0) • Az α-ból levezethető szimbólumsorozatok k hosszúságú kezdő terminális sorozatainak halmaza. • FIRSTk(α) = {x|αxβ∩|x|=k}U{x|αx∩|x|<k}
LL(k) grammatika – definíciók 2 • 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βwylevezetéspárra FIRSTk(x) = FIRSTk(y) esetén α1=α2 • Példa LL(2) –re • G=({a,b}, {A,S}, S, P) • S abA|ε • A Saa|b
Egyszerű LL(1) grammatika - definíciók • 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 → a1α1 és A → a2α2 => a1≠ a2
Egyszerű LL(1) elemzés • 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
Egyszerű LL(1) elemzés • S -> aS | bAc • A -> bAc | d
Felhasznált anyagok • Dévai Gergely – ELTE IK • http://deva.web.elte.hu/fordprog/04-LL-handout.pdf