PA008 Překladače

Fakulta informatiky
podzim 2020
Rozsah
3/0/0. 3 kr. (plus ukončení). Doporučované ukončení: zk. Jiná možná ukončení: z.
Vyučující
prof. RNDr. Mojmír Křetínský, CSc. (přednášející)
Mgr. Libor Caha, PhD. (pomocník)
Garance
prof. RNDr. Mojmír Křetínský, CSc.
Katedra teorie programování – Fakulta informatiky
Kontaktní osoba: prof. RNDr. Mojmír Křetínský, CSc.
Dodavatelské pracoviště: Katedra teorie programování – Fakulta informatiky
Rozvrh
Čt 10:00–12:50 D3
Předpoklady
Předpokládá se znalost odpovídající rozsahu kursu IB005 a metod syntaktické analýzy LL, LR odpovídající 1.třetině kursu IA006.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
Cíle předmětu
Na konci tohoto kurzu bude student schopen porozumět a vysvětlit principy, metody a techniky používané při návrhu a implementaci kompilátorů programovacích jazyků a jim příbuzných systémů založených na analýze vstupního textu a syntéze odpovídajího výstupu. Studenti jsou schopni používat prezentované myšlenky a postupy i v řadě dalších oblastí informatiky.
Výstupy z učení
Student bude po absolvování předmětu schopen:
1. Specifikovat a analyzovat lexikální, syntaktické a sémantické rysy překládaného jazyka a separovat je do fází lexikální, syntaktické a sémantické analýzy kompilátoru.
2. Implementovat lexikální, syntaktický a sémantický amnalyzátor jak bez použití SW nástroje, tak i s jeho pomocí.
3. Napsat generátor mezikódu a generátor kódu. Popsat techniky optimalizací mezikódu.
Osnova
  • Analýza požadavků a cílů překladu, struktura kompilátoru.
  • Úkoly a struktura lexikálního analyzátoru, rozhraní.
  • Syntaktická analýza. Implementace a rozhraní.
  • Překladové a atributové gramatiky(AG); popis sémantiky pomocí AG.
  • Sémantická analýza. Úkoly a implementace. Analýza jmen a rozsahů, typová analýza.
  • Organizace a přidělování paměti; zásobník, halda.
  • Jednoprůchodový versus víceprůchodový kompilátor. Formy mezikódu a jeho generování.
  • Techniky generování kódu.
  • Zotavení z chyb.
  • Lokální optimalizace, analýzy toků a globální optimalizace.
  • Systémy a nástroje pro psaní kompilátorů.
Literatura
  • AHO, Alfred V. Compilers : principles, techniques, & tools. 2nd ed. Boston: Pearson/Addison Wesley, 2007, xxiv, 1009. ISBN 0321486811. info
  • AHO, Alfred V., Ravi SETHI a Jeffrey D. ULLMAN. Compilers, principles, techniques, and tools. Reading: Addison-Wesley Publishing Company, 1987, x, 796 s. ISBN 0-201-10088-6. info
  • APPEL, Andrew W. Modern compiler implementation in Java. Cambridge: Cambridge University Press, 1998, x, 548. ISBN 0521583888. info
  • COOPER, Keith D. a Linda TORCZON. Engineering a compiler. Second Edition.San Francisco: Morgan Kaufmann Publishers, 2012. ISBN 978-0-12-088478-0
  • COOPER, Keith D. a Linda TORCZON. Engineering a compiler. San Francisco: Morgan Kaufmann Publishers, 2004, xxx, 801. ISBN 155860698X. info
  • GRUNE, Dick. Modern compiler design. Chichester: John Wiley & Sons, 2000, xviii, 736. ISBN 0471976970. info
Výukové metody
Přednášky, domácí cvičení, samostudium, diskuse.
Metody hodnocení
Závěrečná písemná zkouška bez pomocných materiálů.
Navazující předměty
Informace učitele
http://www.fi.muni.cz/usr/kretinsky/
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích podzim 2002, podzim 2003, podzim 2004, podzim 2005, podzim 2006, podzim 2007, podzim 2008, podzim 2009, podzim 2010, podzim 2011, podzim 2012, podzim 2013, podzim 2014, podzim 2015, podzim 2016, podzim 2017, podzim 2018, podzim 2019, podzim 2021, podzim 2022, jaro 2024, jaro 2025.