460-2018/03 – Programovací jazyky a překladače (PJP)
Garantující katedra | Katedra informatiky | Kredity | 4 |
Garant předmětu | Ing. Marek Běhálek, Ph.D. | Garant verze předmětu | Ing. Marek Běhálek, Ph.D. |
Úroveň studia | pregraduální nebo graduální | Povinnost | volitelný odborný |
Ročník | 2 | Semestr | letní |
| | Jazyk výuky | čeština |
Rok zavedení | 2019/2020 | Rok zrušení | |
Určeno pro fakulty | FEI | Určeno pro typy studia | bakalářské |
Cíle předmětu vyjádřené dosaženými dovednostmi a kompetencemi
Studenti získají přehledové informace o vývoji programovacích jazyků, hlavních paradigmatech programování (imperativní, funkcionální, logické) a jejich typických představitelích. Dále získají teoretické znalosti i praktické dovednosti z oblasti metod překladu programovacích jazyků se zaměřením na fázi analýzy zdrojového textu a syntézy vnitřní formy programu. Budou mít praktické zkušenosti s využitím prostředků pro podporu návrhu překladačů (například JavaCC).
Po absolvování předmětu budou studenti schopni efektivně implementovat analyzátory strukturovaných textových dat a jednoduchých jazyků a budou se orientovat v pojmech a konstrukcích, charakteristických pro současné programovací jazyky.
Vyučovací metody
Přednášky
Cvičení (v učebně)
Projekt
Anotace
Studenti získají přehledové informace o vývoji programovacích jazyků, hlavních paradigmatech programování (imperativní, funkcionální, logické) a jejich typických představitelích. Dále získají teoretické znalosti i praktické dovednosti z oblasti metod překladu programovacích jazyků se zaměřením na fázi analýzy zdrojového textu a syntézy vnitřní formy programu. Budou mít praktické zkušenosti s využitím prostředků pro podporu návrhu překladačů (například JavaCC).
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:
Další studijní materiály
Forma způsobu ověření studijních výsledků a další požadavky na studenta
Hodnocení se skládá ze dvou částí. Během cvičení budou studenti programovat přidělené úkoly. Výsledky těchto úkolů budou zhruba polovinou závěrečného hodnocení. Zbývající body lze získat za projekt – překladač, který bude průběžně realizován v průběhu semestru.
E-learning
Další požadavky na studenta
Na studenty nejsou kladeny žádné další požadavky.
Očekává se, že studenti budou schopni psát programy v jazycích Java, C # nebo C ++. Studenti by navíc měli rozumět témat, která jsou předmětem kurzu: Úvod do teoretické informatiky.
Prerekvizity
Předmět nemá žádné prerekvizity.
Korekvizity
Předmět nemá žádné korekvizity.
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.
Podmínky absolvování předmětu
Výskyt ve studijních plánech
Výskyt ve speciálních blocích
Hodnocení Výuky