Sziasztok!
A mai óra anyaga: (a módszerek pontosan le vannak írva a jegyzetben) 1. Chomsky normál formára hozás: ez azt jelenti, hogy elérjük, hogy a CF (környezetfüggetlen) nyelvtan minden szabálya vagy alakú legyen, ahol és . (Meg esetleg lehet még szabály is, de ekkor nem szerepelhet szabály jobboldalán) (Persze mindezt úgy, hogy a generált nyelv ne változzon.) Ehhez gyakorló példa a múltkori feladatsor 8. feladata. 2. A közvetlen balrekurzió kiküszöbölése: Egy nyelvtan rekurzív, ha van olyan nemterminális, hogy , azaz, ha -ból le lehet vezetni olyan szót, amiben szerepel. Ezt nem lehet megszüntetni úgy, hogy alakítgatjuk a nyelvtant, mert a nyelvtan rekurzív volta azzal ekvivalens, hogy a generált nyelv végtelen. (Meggondolni esetleg!!) Meg lehet viszont szüntetni egy nyelvtan balrekurzivítását, azaz azt, hogy legyen olyan nemterminális, hogy , azaz, hogy -ból le lehessen vezetni olyan szót, ami -val kezdődik. (Ezt azért fontos megszüntetni, mert az elemzők nagy része, amiket használunk, nem megy, ha a nyelvtan balrekurzív.) Először az úgynevezett közvetelen balrekurziót küszöböljük ki: ez az, hogy van a nyelvtanban szabály, azaz olyan szabály, ahol a jobboldal ugyanavval a nemterminálissal kezdődik, ami a baloldalon áll. Ehhez gyakorló példa a múltkori sor 9. feladata. 3. Greibach normál formára hozás: ez azt jelenti, hogy csak alakú szabályokat akarunk (meg persze esteleg , de akkor...), ahol . Azaz azt akarjuk, hogy minden szabály jobboldala terminálissal kezdődjön. (Ez megoldja a balrekurzió problémáját is, látjátok, ugye?) Ehhez feladatok a mostani 1. és a gyakorlós 5. feladat. 4. Felelevenítettük az előadásról a levezetési fa, jobb és ballevezetés, egyértelmű, nem egyértelmű CF nyelvtan /CF nyelv fogalmakat. Ezekhez van a többi példa. Órán volt a 2. és a 3b nagyjából. A 3d-t megbeszéljük, a többit majd, ha kéritek. Formális nyelvek gyakorlat (6) 2000. október 18., szerda 1. GNF kell: , 2. (a) Rajzoljuk fel a szó egy levezetési fáját az nyelvtanban! Adjuk meg a fához tartozó jobb és ballevezetést! Egyértelmű-e ez a nyelvtan? (b) Írjuk át az posztfix alakú kifejezést infix alakba! (Használjuk a levezetési fát!) 3. Mit generálnak az alábbi nyelvtanok? Egyértelműek-e a nyelvtanok? (a) (b) megoldás html-bn és ps-ben (c) (d) 4. Egészítsük ki az infix aritmetikás egyértelmű nyelvtant a hatványozással (! Ennek a precedenciája a legnagyobb és jobbról-balra szabály szerint értékelődik ki. Adjuk meg a nyelvtant és az kifejezés levezetési fáját! Gyakorlásnak... 5. GNF kell: , , 6. Adott két nyelv: , Készítsen nyelvtant -re! 7. Tekintsük a következő nyelvtant: , , , (a) Egyértelmű-e a által generált nyelv? (b) Egyértelmű-e a nyelvtan? 8. Vegyük a következő nyelvtant, ahol az , és szavak a nyelvtan terminális szimbólumai: , . (a) Egyértelmű-e a nyelvtan? (b) Egyértelmű-e a generált nyelv? 9. Az infix alakú aritmetikai kifejezések helyett néha célszerűbb a prefix vagy posztfix lengyel jelölés használata. Például a csak összeadást és szorzást használó posztfix lengyel aritmetikai kifejezéseket az alábbi nyelvtan generálja: Készíts két egyértelmű nyelvtant, egyet a posztfix egyet meg az infix alakú Boole-kifejezések generálására, ahol az operátorok a következők: monadikus, és diadikus operátorok, ebben a precedencia-sorrendben. A diadikusok balról-jobbra értékelődnek ki. A precedencia zárójelekkel felülbírálható, két monadikus operátor nem állhat egymás mellett. A posztfix nyelvtant add meg GNF-ban is!
|