Přeskočit na hlavní obsah
Přeskočit hlavičku

Programovací jazyky a překladače

Typ studia bakalářské
Jazyk výuky čeština
Kód 460-2018/03
Zkratka PJP
Název předmětu česky Programovací jazyky a překladače
Název předmětu anglicky Programming Languages and Compilers
Kreditů 4
Garantující katedra Katedra informatiky
Garant předmětu Ing. Marek Běhálek, Ph.D.

Osnova předmětu

Seznam prezentací:
1. Úvod do kurzu, úvod do teorie překladačů, struktura překladače. Specifikace programovacích jazyků.
2. Lexikální analýza – konečné automaty, regulární výrazy. Implementace lexikálního analyzátoru.
3. Syntaktická analýza, analýza shora – dolů. LL (1) gramatiky, výpočet množin FIRST a FOLLOW.
4. Implementace překladače – zásobníková automat pro LL (1) jazyky. Analýza rekurzivním sestupem. Generátory překladačů - javacc.
5. Syntaktická analýza zdola - nahoru. LR (1) jazyky, nástroje: flex a Bison.
6. Interní reprezentace programu – vnitřní reprezentace programu. Generování cílového kódu.
7. Sémantická analýza, kontrola typů.
8. Struktura programu běhu - správa paměti.
9. Optimalizace kódu.
10. Pokročilá témata: operační sémantika, syntaxí řízený překlad – atributové gramatiky.

Seznam cvičení (předpokládá se, že všechny cvičení budou v počítačových laboratořích)
1. Implementace jednoduchého interpretu pro matematické výrazu (pro porovnání s pokročilejšími přístupy uvedenými později).
2. Implementace lexikálního analyzátoru.
3. Implementace algoritmů pro výpočet množin First a Follow.
4. Implementace překladače pomocí rekurzivního sestupu.
5. Úvod do generátorů překladačů - javacc. První fáze projektu - bude implementována analyzátor kódu v javacc.
6. Nástroj ANTLR – návrhový vzor Visitor.
7. Druhá fáze projektu - realizace typové kontroly v projektu.
8. Úvod do generování cílového kódu pro JVM
9. Implementace generátoru cílového kódu.
10. Hodnocení projektu.

E-learning

Základní materiály jsou dostupné na webu pedagoga: http://behalek.cs.vsb.cz/wiki/index.php/Programming_Languages_and_Compilers
Konzultace prostřednictvím MS Teams.

Povinná literatura

Beneš, M.: Překladače. Elektronická skripta.

Torben Mogensen: Basics of Compiler Design - zdarma dostupné online na http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/

Doporučená literatura

Aho, A. V., Lam M.S., Sethi, R., Ullman, J. D.: Compilers. Principles, Techniques, and Tools. Addison Wesley; 2nd edition (September 10, 2006). ISBN 0321486811 .

Pierce B.C.: Types and Programming Languages, MIT Press, 2002, ISBN: 9780262162098.