Překladače

Požadavky na studenta

Předmět je ukončen zápočtem a zkouškou.

Požadavky ke splnění zápočtu a zkoušky

Požadavky na zápočet:

  • aktivní účast na cvičeních alespoň 75 %
  • u prezenčního studia dva testy, v kombinované formě se kumuluje do jednoho, je třeba získat alespoň 50 % bodů
  • naprogramování a odevzdání první části projektu - lexikální analyzátor zvoleného jazyka

Požadavky na zkoušku:

  • písemka (může být ve formě online testu - informace podá vyučující na začátku semestru)
  • odevzdání finální verze projektu - rozšíření první části o syntaxi a sémantiku, hotový překladač splňující stanovené podmínky.

Škála pro hodnocení zkouškové písemky je následující:

Okruhy k zápočtovým a zkouškovým testům/písemkám

Okruhy k zápočtovým testům:

Test1:
  • lexikální analýza (pro zadaný jazyk vytvořte tabulku přechodů a zpracujte podle ní vybraná slova),
  • syntaxe (zjistěte, zda je gramatika typu LL(1); pokud ano, sestavte rozkladovou tabulku a podle tabulky zpracujte slovo patřící do jazyka, pokud ne, vypočtěte množiny Follow2 a zjistěte, zda je to silná LL(2) gramatika, v gramatice zpracujte některé slovo jazyka, vytvořte derivační strom a vypište levý rozklad),
Test 2:
  • syntaxe: ověřte, zda je gramatika silná LL(2), vytvořte rozkladovou tabulku a zpracujte podle ní některé slovo jazyka,
  • intermediální kód: převeďte daný výraz do tří různých druhů intermediálního kódu,
  • syntaxí řízený překlad: sestrojte překladovou gramatiku / překladový automat daného typu,
  • sémantika: sestrojte atributovou gramatiku podle zadání.

Pro usnadnějí přípravy na zkoušku máte také k dispozici orientační seznam otázek seřazený podle témat ve skriptech (pokud bude písemná část zkoušky ve formě online testu, berte tento seznam opravdu jen jako orientační):

Projekt

Projekt by měl každý student programovat sám, měl by svému kódu rozumět, kód musí splňovat všechny náležitosti. Podrobné informace o projektu jsou zde:

První část projektu je třeba odevzdat do konce listopadu. Pokud to nestihnete, jsou sankce: za každé dva další započaté týdny jedno klíčové slovo navíc.

Můžete programovat téměř v jakémkoliv jazyce, který znáte, ale některé jsou vhodnější, jiné méně vhodné.

  • doporučené: například C++, Java, Delphi
  • neutrální: C# (víc se "nadřete"), Pascal (problém s vývojovými prostředími)
  • nedoporučené: Python, JavaScript, funkcionální jazyky (nicméně u všech se již pokusy o naprogramování překladače vyskytly)

Vývojová prostředí máte k dispozici ve škole. Dále si můžete stáhnout vývojové nástroje od Microsoftu přes projekt MS Imagine, nebo využít vývojové nástroje společnosti Embarcadero (edici Starter máte zdarma až do chvíle, než přesáhnete příjmu 1000 USD) - doporučuji, velice dobře vytvořené IDE pro C++ Builder i Delphi. Popřípadě jsou k dispozici další vývojová prostředí, jako třeba BlueJ, NetBeans, Eclipse, VS Code,... podle zvoleného jazyka.