FJP

V tomto semestru vedu cvičení předmětu FJP, v pondělí od 9:20 do 11:00 a od 11:10 do 12:50, obě v UC 233.

Předmět je zaměřen na pochopení základních konceptů funkce překladačů, zejména těch pracujících s bezkontextovými gramatikami. 

Materiály ke cvičení, stejně jako užitečné odkazy jsou k dispozici na stránkách předmětu v univerzitním courseware. Zde alespoň shrnu užitečné odkazy týkající se předmětu:

Užitečné odkazy

Následující odkazy vedou na zajímavé stránky týkající se formálních jazyků.

Studijní materiály z jiných univerzit dostupné online

Volně dostupné překladače

Materiály ke cvičení

 Pozor! Aktuální informace o cvičeních jsou na courseware, zde je jen předběžný nástin programu a přehled užitečných odkazů. Je možné, že se během semestru náplň jednotlivých cvičení lehce změní nebo posune. 
  • Cvičení 1 - opakování gramatik, regulárních výrazů a konečných automatů
  • Cvičení 2 - opakování gramatik, Backus-Naurova forma zápisu

    Software pro práci s gramtikami a automaty

    • Převod regulárních výrazů na konečné automaty, lze si vyzkoušet chování automatu zadáním testovacího vstupu.
    • Qfsm - editor konečných automatů, umožňuje snadno naklikat automat, zkontrolovat jestli je deterministický, bez slepých větví a exportovat ho (do obrázku nebo textových popisů které lze přeložit do programovacích jazyků - viz manuál). Krom zdrojových textů si můžete stáhnout hotovou distribuci pro Windows, program je i v repozitářích openSUSE.
    • JFLAP - velmi univerzální nástroj schopný pracovat s gramatikami a automary všech tříd, převádět automaty na gramatiky, testovat jejich chování a tak dále - rozhodně stojí za vyzkoušení. Atomaty lze navrhovat a testovat v grafickém režimu.
  • Cvičení 3 - lexikální analýza pomocí LEXu

    Software pro lexikální analýzu

    • Flex - volně dostupná implementace Lexu, pro C.
    • JLex - volně dostupná implementace Lexu, pro Javu.
    • C# CUP - varianta JLex pro C#.
    • Překladače v Javě - stránka s přehledem různých nástrojů pro tvorbu překladačů v Javě (často založených na Lex a Yacc).
    • Bumble-Bee Parser Generator - IDE s implementací Lex a Yacc, pro C, C++ a Javu, pro akademické účely zdarma.
    • GOLD Parsing System - IDE pro generování parserů, překladačů a interpretů pro C, C#, Delphi, Javu, Python a řadu dalších jazyků, zápis gramatiky v Backus-Naurově formě. K dispozici zdarma.
    • UltraGram - IDE pro generování parserů pro C++, C#, Javu a VB.NET, podobná syntaxe jako Lex, placené s trialem na 15 dní.

    Ukázky použití Lexu

  • Cvičení 4 - překladač jazyka PL/0
    • Compiler Construction - návrh a tvorba překladače pro jazyk Oberon, podobný PL/0 (Niklaus Wirth). Sice je to anglicky, ale nic lepšího asi nenajdete, obsahuje konkrétní postup jak navrhnout a implementovat překladač, včetně ukázek zdrojových textů, algoritmů a jejich fungování a podrobného popisu. Neobsahuje příliš teorie, spíš praktické rady jak a co implementovat.
    • PL/0 - srovnání PL/0 a dalších podobných jazyků. Na stránkách se můžete podívat na velmi jednoduché programy (Hello world, výpočet mocniny a podobně) ve velkém mnosžtví různých jazyků. 
  • Cvičení 5 - zadání semestrálních prací; snažte se na toto cvičení přijít.
  • Cvičení 6 - interpret jazyka PL/0.
  • Cvičení 7 - SED.
  • Cvičení 8 - Yacc
  • Cvičení 9 - Transformace bezkontextových gramatik
    • The Context Free Grammar Checker - ověřování vlastností gramatik a generování rozkladových tabulek online (i tak ale doporučuji si probírané algoritmy vyzkoušet na papír, u zkoušky tenhle software mít nebudete :-) ).
  • Cvičení 10 - Zásobníkové automaty a LL gramatiky
  • Cvičení 11 - LL(k) gramatiky
    • Vysoké učení technické v Brně - Teoretická informatika 1 - k dispozici skripta, obsahují popis LL(k) gramatik. analýzy a výpočtu first a follow funkcí.
  • Cvičení 12 - SLR gramatiky