Podmienky
Nevyhnutnou podmienkou na získanie známky (lepšej ako Fx) je odovzdanie projektu, spĺňajúceho požiadavky a úspešné absolvovanie skúšky.

PROJEKT
Na projekte môžete pracovať v skupinách max. po dvoch, zadanie je nasledovné:

Vašou úlohou je vytvoriť kompilátor zjednodušené C++ -> Assembler, ktorý vie spracovať:
  • dátové typy: int, char, char[], int[]
  • cykly: for, while, do
  • podmienky: if, switch
  • funkcie so vstupmi char, int
  • funkcie so výstupom char, int
  • práca s globálnymi/lokálnymi premennými (bude sa testovať na rekurzívnych funkciách, pozícia definície premenných je rovnaká ako v c++)
  • aritmetika s prioritou +, -, *, /, %, (, ),
  • booleovské operátory, konštanty ==, !=, <=, <, >=, >, true, false, ||, &&, !
  • ďaľšie operátory =, ++, - -
  • výstupné funkcie: (zobrazia do konzoly číslo, znak, text (končí nulou)) void printc(char), void printi(int), void prints(char[])
  • return
  • chybové hlásenia (zobrazuje sa riadok aj stĺpec chyby)
  • blok {} - nezabudnúť na viditeľnosť premenných
Kompilátor môže byť napísaný v C, C# alebo Jave, môžete použiť nástroje Flex/Bison, príp. po konzultáci iné generátory parserov a scannerov. Podmienkou je, aby ste svoj projekt vedeli odprezentovať.

ODOVZDÁVANIE

1. časť projektu
  • Čo tam má byť: Scanner + jednoduchý parser
    • Tokeny a ich sémantické hodnoty sa posielajú parseru
    • Komentáre a biely priestor sa vymazávajú
    • Lexikálne chyby sa hlásia do chybového súboru alebo na stdout, hláška musí obsahovať aj pozíciu chyby (číslo riadku, číslo znaku v rámci riadku)
    • Parser iba vypisuje rozpoznanú štruktúru vstupného programu (t.j., nevytvára preklad)
2. časť projektu (kompletný projekt)
  • Je potrebné, aby prišli všetci členovia tímu