Detail předmětu
Formální jazyky a překladače
IFJ Ak. rok 2026/2027 zimní semestr 5 kreditů
Kurz diskutuje formální jazyky a jejich modely. Na bázi těchto modelů objasňuje konstrukci překladačů. Výklad je organizován následovně: (I) Základní pojmy: formální jazyky a jejich modely, gramatiky, automaty; překladače. (II) Regulární jazyky a lexikální analýza: regulární jazyky a výrazy, konečné automaty a převodníky, lexikální analyzátory; Lex; tabulka symbolů. (III) Bezkontextové jazyky a syntaktická analýza: bezkontextové jazyky a gramatiky, zásobníkové automaty a převodníky, syntaktická analýza; deterministická syntaktická analýza, LL gramatiky, deterministická analýza shora dolů (rekurzivní sestup); princip deterministické analýzy zdola nahoru; Yacc. (IV) Sémantická analýza a generování kódu: sémantická analýza, generování vnitřní formy programu, optimalizace, generování cílového kódu.
Odkazy
- Veřejné stránky předmětu (v privátní části jsou snímky (CZ i EN) k přednáškám a pomocné materiály k projektu)
- E-learning stránky pro ZS 2026/27 (Moodle, privátní, pouze v češtině) pro podporu projektu a poskytování dalších materiálů k předmětu
Proč je předmět vyučován
Předmět IFJ dává na bakalářské úrovni jasný a ucelený úvod do teorie formálních jazyků a jejich aplikace v informatice. Úvod pokrývá témata zaměřená na formální jazyky a jejich modely (především gramatiky a automaty), dále nastiňuje základní myšlenky teorie výpočtu včetně vyčíslitelnosti a rozhodnutelnosti. Pro zdůraznění vazby teorie na praxi je demonstrována aplikace ve zpracování programovacích jazyků a implementaci překladačů.
- pokrývá důležité základní koncepty teorie formálních jazyků;
- vysvětluje, jak jsou jazykové modely využívány při překladu;
- zaměřuje se na analyzátory programovacích jazyků jako lexikální analyzátor a syntaktický analyzátor postavené na regulárních výrazech, konečných automatech, bezkontextových gramatikách a zásobníkových automatech
Náročnost předmětu 5 kreditů, tj. cca 130 hodin představuje studijní zátěž:
- 39 hodin přednášek
- 52 hodin práce na projektu
- 26 hodin průběžné studium
- 13 hodin příprava na závěrečnou zkoušku
Podmínky zápočtu
Udělení zápočtu je podmíněno získáním min. 20 bodů v průběhu semestru, z nichž nejméně 4 body jsou za programovou část projektu.
Garant předmětu
Koordinátor předmětu
Jazyk výuky
Zakončení
Rozsah
- 39 hod. přednášky
- 13 hod. projekty
Bodové hodnocení
- 55 bodů závěrečná zkouška (písemná část)
- 17 bodů půlsemestrální test (písemná část)
- 28 bodů projekty
Zajišťuje ústav
Přednášející
Havel Martin, Ing. (UIFS)
Křivka Zbyněk, Ing., Ph.D. (UIFS)
Meduna Alexandr, prof. RNDr., CSc. (UIFS)
Cvičící
Havel Martin, Ing. (UIFS)
Křivka Zbyněk, Ing., Ph.D. (UIFS)
Meduna Alexandr, prof. RNDr., CSc. (UIFS)
Ondryáš Ondřej, Ing. (UIFS)
Cíle předmětu
Seznámit se s formálními jazyky a jejich modely. Objasnit principy konstrukce překladačů na základě těchto modelů.
Základní obeznámenost s formálními jazyky a jejich modely. Schopnost sestrojit překladač.
Doporučené prerekvizity
- Diskrétní matematika (IDM)
Požadované prerekvizitní znalosti a dovednosti
Znalost diskrétní matematiky.
Literatura studijní
- kopie snímků přednášek (elektronické i papírové)
- Meduna, A.: Elements of Compiler Design. New York, US, Tailor & Francis, 2008.
- Meduna, A.: Automata and Languages. London, Springer, 2000.
Literatura referenční
- Parsons, T. W.: Introduction to Compiler Construction. Freeman, New York, 1992.
Osnova přednášek
- Formální jazyky.
- Překlad jazyků a struktura překladače.
- Regulární jazyky a jejich modely: regulární výrazy a konečné automaty.
- Lexikální analýza: lexikální analyzátory; Lex; tabulka symbolů.
- Bezkontextové jazyky a jejich modely: bezkontextové gramatiky a zásobníkové automaty.
- Syntaktická analýza: deterministická syntaktická analýza; FIRST a FOLLOW, LL gramatiky.
- Deterministická syntaktická analýza shora dolů: rekurzívní sestup.
- Deterministická syntaktická analýza zdola nahoru: jednoduchá precedenční analýza; Yacc.
- Sémantická analýza a generování vnitřní formy programu.
- Optimalizace.
- Generování cílového kódu.
- Chomského klasifikace jazyků a korespondující modely.
- Poznámky a shrnutí. Předběžná diskuze obsahu navazujícího předmětu VYPe.
Osnova ostatní - projekty, práce
Studenti v rámci týmového projektu (3-4 studenti na tým) implementují překladač jednoduchého programovacího jazyka (včetně odpovídající dokumentace a obhajoby).
Průběžná kontrola studia
Průběžná kontrola studia probíhá v rámci půlsemestrální zkoušky (17 bodů), u které neexistuje opravný termín. Dále studenti řeší v průběhu semestru jeden týmový projekt (28 bodů), který je odevzdáván ve stanoveném termínu. Podmínky zápočtu: Udělení zápočtu je podmíněno získáním min. 20 bodů v průběhu semestru, z nichž nejméně 4 body jsou za programovou část projektu.
Pokud se v průběhu semestru u studenta vyskytne překážka ve studiu (např. nemoc), je třeba tuto překážku řádně ohlásit a doložit.
- Půlsemestrální písemná zkouška se koná přibližně v polovině semestru bez možnosti náhradního, či opravného termínu (17 bodů). Pokud se student nemohl zúčastnit půlsemestrální zkoušky, může garanta požádat, aby body za půlsemestrální zkoušku byly odvozeny od bodového zisku u prvního termínu zkoušky, kterého se zúčastní. Podmínkou pro přistoupení k tomuto termínu zkoušky je zisk alespoň 12 bodů dohromady ze všech částí projektu a z toho 4 z programové časti.
- Schopnost aplikace teoretických poznatků ověřuje týmový projekt (28 bodů), kde průběžnou kontrolu provádí studentský vedoucí každého týmu. Při onemocnění většiny členů týmu může tým požádat příslušného učitele o drobné prodloužení termínu pro odevzdání projektu.
- Na konci semestru se koná závěrečná zkouška (55 bodů) s možností tří termínů. Pro získání bodů ze zkoušky je nutné zkoušku vypracovat tak, aby byla hodnocena nejméně 20 body. V opačném případě bude zkouška hodnocena 0 body.
Rozvrh
| Den | Typ | Týdny | Místn. | Od | Do | Kapacita | PSK | Skup | Info |
|---|---|---|---|---|---|---|---|---|---|
| St | přednáška | 1., 2., 3., 4., 6., 8., 9., 10., 11., 12., 13. výuky | E104 E105 E112 | 11:00 | 13:50 | 294 | 2BIA 3BIT | 10 - 19 xx | Meduna |
| St | přednáška | 2026-10-14 | E104 E105 E112 | 11:00 | 13:50 | 294 | 2BIA 3BIT | 10 - 19 xx | Křivka |
| St | zkouška | 2026-10-14 | E104 E105 E112 | 11:10 | 12:10 | IFJ PZK 1. běh | |||
| St | zkouška | 2026-10-14 | E104 E105 E112 | 12:30 | 13:30 | IFJ PZK 2. běh | |||
| Čt | přednáška | 1., 2., 3., 4., 5., 6., 8., 10., 11., 12., 13. výuky | E104 E112 | 08:00 | 10:50 | 294 | 2BIB 3BIT | 20 - 29 xx | Burgetová |
| Čt | přednáška | 2026-10-29 | E104 E112 | 08:00 | 10:50 | 294 | 2BIB 3BIT | 20 - 29 xx | Burgetová, Havel, Křivka |
| Čt | přednáška | 2026-11-12 | E104 E112 | 08:00 | 10:50 | 294 | 2BIB 3BIT | 20 - 29 xx | Burgetová, Křivka |
| Čt | zkouška | 2026-10-15 | E104 E105 E112 | 08:10 | 09:10 | IFJ PZK 3. běh | |||
| Čt | zkouška | 2026-10-15 | E104 E105 E112 | 09:30 | 10:30 | IFJ PZK 4. běh |
Zařazení předmětu ve studijních plánech
- Program BIT, 2. ročník, povinný
- Program BIT (anglicky), 2. ročník, povinný