|
Az
,
,
nyelvtanhoz készítsünk
PDA-t, mindkét konstrukcióval, amit tanultunk (vagy tanulni fogunk)! Elemezzük az
szót mindkét automatával!
Megoldás
1. konstrukció:
A veremautomata kezdőállapota és egyben egyetlen állapota a .
Inputábécéje megegyzeik a nyelvtan terminálisaival, azaz ,
veremábécéje a nyelvtan terminálisait és nemterminálisait tartalmazza, meg a -t:
.
Üres veremmel fogad el, a szabályok:
,
azaz a veremalja jelet -re cseréljük
,
,
,
azaz a terminálisokat ki tudja venni a
verem tetejéről, ha az inputon is ott állnak
,
,
azaz, ha egy nemterminális
van a verem tetején, akkor azt helyettesítheti egy neki megfelelő jobboldallal
(a nyelvtan szerint megfelelővel).
Az elemzés úgy megy, hogy a veremben szimuláljuk a levezetéseket és ha
olyan terminális jön ki előre, ami az inputon is van, akkor kivesszük
a terminálist a veremből. A verem pontosan akkor ürül ki, mire elfogy az input, ha
van levezetése a szónak, azaz ha eleme a nyelvnek.
Elemzés (elöl az állapot, aztán a veremtartalom, aztán az input még
olvasatlan része):
Megjegyzések:
1. Ahol terminálisokat olvastunk csak ki a veremből, ott több lépést is
összevontam.
2. Ha nem pont ezeket a szabályokat használtam volna, akkor nem
ürült volna ki a verem, azon az úton nem fogadtuk volna el a szót. De ez nem baj, ez egy
nemdeterminisztikus veremautomata, akkor fogad el egy szót, ha van
olyan működése, ami során elfogad.
3. Ha beszámozzuk a szabályokat a nyelvtanban (
, stb.) és a
veremautomata működése során mindig felírjuk, hogy melyik nyelvtani szabálynak
megfelelő szabályt használtuk az elemzés során, akkor az így kiírt
számsor éppen a szó (egyik, ha több is van) ballevezetését kódolja.
(Itt 1235)
2. konstrukció
A veremautomata egy röntgenszemű automata lesz.
A kezdőállapota és egyben egyetlen állapota a .
Inputábécéje megegyezik most is a nyelvtan terminálisaival, azaz ,
veremábécéje a nyelvtan terminálisait és nemterminálisait tartalmazza, meg a -t:
.
Üres veremmel fogad el, a szabályok:
,
azaz ha már csak az van a
veremben a veremalja jel felett, akkor kiürítjük a vermet
,
,
, ahol tetszőleges veremszimbólum
azaz a terminálisokat be tudja tenni a
verembe bármikor
,
azaz, ha a verem tetején megjelenik egy nyelvtani szabály jobboldalának a
fordítottja, akkor ahelyett be lehet írni a szabály baloldalát
Az elemzés úgy megy, hogy a verembe pakoljuk a terminálisokat, addig amíg
valami nyelvtani szabály jobboldalának fordítottja nem lesz felül, ekkor
letörünk, azaz a jobboldal helyett a baloldalon álló nemterminálist rakjuk be.
A verem itt is pontosan akkor ürül ki, mire elfogy az input, ha
van levezetése a szónak, azaz ha eleme a nyelvnek.
Elemzés (elöl az állapot, aztán a veremtartalom, aztán az input még
olvasatlan része):
Megjegyzések:
1. Ahol terminálisokat írunk be a verembe, ott több lépést is
összevontam.
2. Ha nem pont ezeket a szabályokat használtam volna, akkor nem
ürült volna ki a verem, de ez itt se baj.
3. Ha beszámozzuk a szabályokat a nyelvtanban (
, stb.) és a
veremautomata működése során mindig felírjuk, hogy melyik nyelvtani szabálynak
megfelelő szabály szerint törtünk le az elemzés során, akkor az így kiírt
számsor éppen a szó (egyik, ha több is van) jobblevezetését kódolja fordítva.
(Itt 3251)
|