Utoljára módosítva 2015. január 10., 22:45-kor

Fordítóprogramok



Fordítóprogramok
Tárgykód IP-08(a, b, c, e, t)FPE, IP-08(a, b, c, t)FPG
Egyéb nevek Fordprog
Kreditérték 3+2 (A, B, C, T)
3 (E)
Ajánlott félév 4. (E)
5. (A, C)
6. (B, T)
Keresztfélév? van
Követelmények (?)
Órák
Előadás heti 2 óra (A, B, C, E, T)
Gyakorlat heti 2 óra (A, B, C, T)

ZH 2 vagy 3
Beadandó/házi 4 (2 kötelező)
Vizsga Írásbeli
Egyéb
Tanszék Programozási Nyelvek és Fordítóprogramok
Tematika

A, B, C, T szakirány

E szakirány

Motiváció

Az óra keretein belül a hallgatók megismerkedhetnek a Formális nyelvek egyik informatikai területen történő legnagyobb felhasználásával, a Fordítóprogramok készítésével.

A kurzus követelményrendszere

Beadandó feladatok

A félév során 4 beadandó feladatot adnak fel, melyek a fordítóprogram készítés legfőbb fázisai közül az első 4 fázist tartalmazzák, adott eszközökkel. A 4 beadandó feladat közül a gyakorlat teljesítéséhez 2 kell a megadott határidőre elkészíteni, azonban az előadás vizsga második (géptermi) része fordítóprogram készítéséről fog szólni, így célszerű mind a 4 beadandó feladatot elkészíteni a gyakorlás és az érzés érdekében is. Lényegében egy nagy feladatnak (egy kitalált, egyszerűsített programozási nyelvnek) kell a fordítási fázisait megírni.

  • 1. beadandó feladat
    • Lexikális elemző készítése "flex" segítségével.
    • Példa program: ZIP
    • Egy korábbi feladat mintamegoldása: ZIP
  • 2. beadandó feladat
    • Szintaktikus elemző készítése "bisonc++" segítségével.
    • Példa program: ZIP
    • Egy korábbi feladat mintamegoldása: ZIP
  • 3. beadandó feladat-ra:
    • Szemantikus elemző készítése.
    • Példa program + tutorial: ZIP
    • Egy korábbi feladat mintamegoldása: ZIP
  • 4. beadandó feladat
    • Kódgenerálás NASM assembler segítségével.
    • Példa program: ZIP
    • Egy korábbi feladat mintamegoldása: ZIP

A korábbi beadandó feladat mintamegoldásaihoz a tesztfájlok innen elérhetőek. A tesztelés során minden beadandónak az őt megelőző beadandók tesztjeire is meg kell felelnie! (Értsd: 3. beadandó feladatnak az 1. 2. 3. beadandóhoz tartozó tesztekre helyes eredményt kell adniuk.)
Tanács: Ha nehéznek éreznéd a féléved és sok a beadandó feladatod az első két beadandóra célszerű rákészülnöd, mivel azok a gyorsabban megoldható feladatok és vizsgán is ilyen sorrendben kell megoldani őket.

ZH

A zárthelyi dolgozatok a gyakorlati anyag megértésére és konkrét feladat megoldására van kihegyezve, így külön elméleti kérdéseket nem szokott tartalmazni.

  • Első ZH témája: Reguláris kifejezések (Flex), VDA készítés, Lexikális elemzés, Szintaktikus elemzés (LL(1) elemzések, LR(0))
  • Második ZH témája: Szintaktikus elemzés (SLR(1), LR(1), LALR(1)), Egyszerűbb Assembly program működésének leírása, Assembly program írása papíron a kódgenerálási minta szabályok felhasználásával

A gyakorlati jegyzetek lefedik ezeket a témaköröket. Külön keresgélés nem szükséges a gyakorláshoz.

Vizsga

  • Elméleti rész: Az előadás diákban fellelhető elméleti anyagok számonkérése. - 10 kérdést kell röviden megválaszolni, melyből legalább 5 kérdésre helyes választ kell adni, hogy a gépes részen jegyet szerezz.
  • Géptermi rész: A beadandó feladat folytatása. Mind a 4 beadandó feladatot (1 nagy feladat négy részét) kiegészítik, melyeket megfelelő módon implementálni kell a beadandó megoldásába (A feladatok minta megoldásait lehet használni, mely elérhető az előadó honlapján). Értékelése: 2-es, ha a lexikális elemző kiegészítése hibátlan. 3-as, ha a szintaktikus elemző kiegészítése hibátlan. 4-es, ha a szemantikus elemző kiegészítése hibátlan. 5-ös, ha a kódgenerálási rész kiegészítése hibátlan)

A vizsgán az elméleti és a géptermi részre külön osztályzatot adnak, melyek átlaga adja a vizsga jegyet. Amennyiben ez az átlag nem egész, úgy további kérdések alapján eldől, hogy felfele vagy lefele kerekítik.

Jegyzetek

Előadás

2014-es előadás
Óra Téma Link
1. Bevezetés, lexikális elemzés FOLDER
2. Szintaktikus elemzés FOLDER
3. LL elemzések FOLDER
4. LR(0) elemzés FOLDER
5. SLR(1) és LR(1) elemzés FOLDER
6. LALR(1) elemzés FOLDER
7. Az if-then-else probléma, szimbólumtábla FOLDER
8. Szemantikus elemzés feladatai, Attribútum fordítási grammatikák FOLDER
9. Assembly bevezető FOLDER
10. Kódgenerálás 1 - kifejezések, vezérlési szerkezetek FOLDER
11. Kódgenerálás 2 - alprogramok, memóriakezelés FOLDER
12. Kódoptimalizálás FOLDER
13. Funkcionális programok fordítása FOLDER

Az előadás diák Dévai Gergely weboldaláról származnak.

Gyakorlat

  • Az első ZH témakörét lefedő gyakorlati anyagok: PDF
  • A második ZH témakörét lefedő gyakorlati anyagok: Készítés alatt ...
  • Dévai Gergely segédanyagai a gyakorlatokhoz: FOLDER

Hasznos linkek

Megjegyzés: A pandora szerveren megtalálható a flex, bisonc++, NASM és a beadandó ellenőrzése az itt megtalálható verziókhoz igazodik.