|
Sziasztok!
1. A pót zh eredményei itt vannak.
2. A mai óra anyaga a precedencia elemzés. Hogy ennek mi a lényege,
azt lásd a jegyzetben. Kiegészítésül itt van
egy kis
segédlet, hogy hogyan kell egy egyszerű precedencia elemzőnél
a relációkat meghatározni.
3. összefoglalás: Van olyan, hogy egyszerű precedencia elemző, ez
olyan, hogy egy szimbólumot néz a veremben és egyet az inputon, ezért is
hívják (1,1) elemzőnek, szemben az (m,n) elemzőkkel, ahol m
szimbólumot nézünk
a veremben és n-et az inputon.
További bontás: az egyszerű elemzők lehetnek erősek
(ha minden reláció diszjunkt) vagy gyengék, ha esetleg azt
megengedjük, hogy a nyél eleje meg a nyél belseje nem diszjunkt, de
ekkor még további feltételeknek kell teljesülnie (lásd a jegyzetet).
4. Van egy tétel, ami szerint ha egy nyelvtan gyengén precedencia
elemezhető, akkor lehet csinálni egy másik nyelvtant, ami ugyanazt
generélja, de az már erősen is precedencia elemezhető.
5. A feladatok:1., 2. és 4a-t megbeszéltük, a többi gyakorló.
(1. és 3. benne van a jegyzetben. Vigyázat! A jegyzetbeli (2,1)-es
példa táblázatában az egyik sor hibás.)
1. Készítsünk precedencia elemzőt az
nyelvtanhoz és elemezzük az abdc szót!
2. Van a következő nyelvtan:
(a) Egyszerű precedencia nyelvtan-e ez?
(b) Hát az igaz-e, hogy van hozzá (2,1) precedencia elemző?
Megoldás
3. (a) Mutassuk meg, hogy az
,
,
nyelvtan
nem erős precedencia nyelvtan és egyúttal készítsünk hozzá gyenge
precedencia elemzőt!
(b) Elemezzük a gyenge elemzővel az a+a*a szót!
4. Van-e egyszerű precedencia elemző az alábbi nyelvtanokhoz? Ha van, akkor
azt is nézzük meg, hogy erős-e avagy gyenge.
(a)
,
(b)
if E then S else ,
or
(c)
,
Megoldás
Tavalyelőtt vizsgafeladat volt:
5. Az alábbi nyelvtan reguláris kifejezéseket generál.
a)Készítsen precedencia elemzőt a nyelvtanhoz!
b) Elemezze segítségével az
a(a+a*)* mondatot!
|