LIMBAJE FORMALE ȘI COMPILATOARE Lucrări de laborator
FORMÁLIS NYELVEK ÉS FORDÍTÓPROGRAMOK LABORGYAKORLATOK http://www.ms.sapientia.ro/~kasa/formalis.htm Nyomtatott változat
Kása Zoltán
0
Formális nyelvek és fordítóprogramok http://www.ms.sapientia.ro/~kasa/formalis.htm Jelenlét kötelezõ! Ez a követelmény azokra is vonatkozik, akik a tárgyat nem elõször veszik fel. Akinek ütközik az órarendje, keressen meg. A vizsgajegy: 50% laborjegy, 50% írásbeli vizsga. 1. elõadás 8. elõadás
2. elõadás 9. elõadás
3. elõadás 10. elõadás
4. elõadás 11. elõadás
5. elõadás 12. elõadás
6. elõadás 13. elõadás
7. elõadás 14. elõadás
Szakirodalom 1. Csörnyei Z., Kása Z.: Formális nyelvek és fordítóprogramok, Kolozsvári Egyetemi Kiadó, 2007. PDF Zip 2. Csörnyei Zoltán, Fordítóprogramok, Typotex Kiadó, Budapest, 2006. 3. Csörnyei Zoltán, Fordítási algoritmusok, Erdélyi Tankönyvtanács, Kolozsvár, 2000. 4. Demetrovics János, Denev, J., Pavlov, R., A számítástudomány matematikai alapjai, Nemzeti Tankönyvkiadó, Budapest, 1999. 5. Fülöp Zoltán, Formális nyelvek és szintaktikus elemzésük, Polygon, Szeged, 1999. 6. Livovschi, L., Popovici, C. P., Georgescu, H., Tãndãreanu, N., Bazele informaticii, Editura Didacticã si Pedagogicã, Bucuresti, 1981. 7. Manna, Z., Programozáselmélet, M1szaki Könyvkiadó, Budapest, 1981. 8. Révész György, Bevezetés a formális nyelvek elméletébe, Akadémiai Kiadó, Budapest, 1979. 9. Bach Iván, Formális nyelvek, Typotex, Budapest, 2005. http://mek.oszk.hu/05000/05099/ 10. Motogna Simona, Metode de poiectare a compilatoarelor, Editura Albastrã, Cluj-Napoca, 2006. 11. Grigoras Gheorghe, Constructia compilatoarelor - Algoritmi fundamentali, Editura Universitatii Al. I. Cuza, Iasi, ISBN 973-703-084-2, 2005. 12. Gyimóthy Tibor, Havasi Ferenc, Kiss Ákos: Fordítóprogramok, Typotex Kiadó, 2011. PDF 13. Aszalós László, Herendi Tamás: Fordítóprogramok feladatgyûjtemény. PDF Laborgyakorlatok Minta vizsgatételek
1
1. labor (2015. szept. 21−27.) 1.
Oldjuk meg a 18. oldalon levő gyakorlatokat. (CsZ, KZ: Formális nyelvek és fordítóprogramok. Innen letölthető!)
2.
Írjunk programot, amely megjelenít a képernyõn egy szövegállományt. Bekér egy szót, megkeresi és megjelöli annak elsõ elõfordulását, majd kérésre folytatja a következõ elõfordulással.
CsZ, KZ: Formális nyelvek és fordítóprogramok, 18. old.
2
3
2. labor (2015. szept. 28. − okt. 4.) Determinisztikus véges automata működése Írjunk programot, amely szimulálja egy determinisztikus véges automata működését! A program szövegállományból olvassa be az automata adatait, írja ki azokat a képernyőre, majd tetszőleges számú szóra vizsgálja meg, hogy az automata felismeri-e őket. A bemeneti állomány alakja: első sor: állapotok, szóközökkel elválasztva második sor: bemeneti ábécé elemei, szóközökkel elválasztva harmadik sor: kezdő állapot negyedik sor: végállapotok, szóközökkel elválasztva következő sorokban egy-egy átmenet: állapot betű állapot (szóközökkel elválasztva) Példa bemeneti állományra: bemeneti állomány: q0 q1 q2 012 q0 q0 q0 0 q0 q0 1 q1 q0 2 q2 q1 0 q1 q1 1 q2 q1 2 q0 q2 0 q2 q2 1 q0 q2 2 q1
4
3. labor (2015. okt. 5−11.) Oldjuk meg a CsZ, KZ: Formális nyelvek és fordítóprogramok c. könyv 59-60. oldalán levô 2-1., 2-2., 2-3. és 2-4. gyakorlatot. Innen letölthetô!
59–60 old.
5
4. labor. (2015. okt. 12−18.) Két determinisztikus véges automata ekvivalenciájának vizsgálata Írjunk programot két véges automata ekvivalenciájának vizsgálatára. A bemeneti adatok két különböző állományban vannak. Egy bemeneti állomány alakja: első sor: állapotok, szóközökkel elválasztva második sor: bemeneti ábécé elemei, szóközökkel elválasztva harmadik sor: kezdő állapot negyedik sor: végállapotok, szóközökkel elválasztva következő sorokban egy-egy átmenet: állapot betű állapot (szóközökkel elválasztva)
6
5. labor (2015. okt. 19−25.) Oldjuk meg a CsZ, KZ: Formális nyelvek és fordítóprogramok c. könyv 59–60. oldalán levő 2-5., 2-6., 27. és 2-8. gyakorlatokat. Innen letölthetô! 59–60. old.
7
6. labor (2014. okt. 26−31.) Oldjuk meg a CsZ, KZ: Formális nyelvek és fordítóprogramok c. könyv 60-61. oldalán levő 2-8., 2-9., 210. és 2-11. gyakorlatokat. Innen letölthetô! 60-61. old.
8
7. labor. (2015. nov. 2.−nov. 8.) Zárthelyi dolgozat
9
8. labor (2015. nov. 9−15.) Determinisztikus veremautomata működésének szimulálása A program szövegállományból olvassa be az automata adatait, írja ki azokat a képernyõre. A bemeneti állomány alakja: elsõ sor: állapotok, szóközökkel elválasztva második sor: bemeneti ábécé elemei, szóközökkel elválasztva harmadik sor: veremábécé elemei, szóközökkel elválasztva negyedik sor: kezdõ állapot ötödik sor: verem kezdõszimbóluma hatodik sor: végállapotok, szóközökkel elválasztva (vagy üres sor) következõ sorokban egy-egy átmenet: állapot bemeneti-betü verembetü szó állapot (szóközökkel elválasztva) Írjunk programot az automata működésére! Példa bemeneti állapotra:
q0 q1 q2 a b z0 z1 q0 z0 q0 q0 a z0 z0z1 q1 q1 a z1 z1 z1 q1 q1 b z1 eps q2 q2 b z1 eps q2 10
q2 eps z0 eps q0
9. labor (2015. nov. 16−22.) Oldjuk meg a CsZ, KZ: Formális nyelvek és fordítóprogramok c. könyv 83. oldalán levô gyakorlatokat. Innen letölthetô! 83. old.
11
10. labor (2015. nov. 23−29.)
12
11. labor (2015. nov. 30. − dec. 6.) a. Ellenõrizzük a mellékelt példa számításait, felhasználva az elemzõ táblázat elkészítésére szolgáló algoritmust!
13
Az elemză táblázat elkészítésére szolgáló algoritmus:
14
15
b. Bizonyítsuk be, hogy a köv. nyelvtan nem LL(1):
c. Készítsünk elemzõ táblázatot az alábbi LL(1) nyelvtanra!
16
12. labor (2015. dec. 7−13.) Adott LL(1) nyelvtan esetében írjunk programot az L*BF* mátrix kiszámítására. Bemeneti adatként adjuk meg az F, B, L mátrixokat. Az F+ és L+ kiszámítására használjuk a WARSHALL-algoritmust (8. elôadás, 7. oldal). Két mátrix szorzatára használjuk a 11. elôadás 4. oldalán megadott Warshall nevu eljárást. Példa innen letölthetô. Warshall-algoritmus (8. elôadás, 7. oldal):
17
Két mátrix szorzatára használjuk a 11. elôadás 4. oldalán lévő algoritmust;
18
19
Példa innen letölthető.
20
21
22
23
24
25
26
27
28
13. labor (2015. dec. 14−20.) Írjunk programot az LL(1) elemzôre! Bemenetként állományból olvassuk be az elemzô táblázatot és a nyelvtan szabályait.
29