PředmětyPředměty(verze: 825)
Předmět, akademický rok 2017/2018
   Přihlásit přes CAS
Principy překladačů - NSWI098
Anglický název: Compiler Principles
Zajišťuje: Katedra softwarového inženýrství (32-KSI)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2016
Semestr: zimní
E-Kredity: 6
Rozsah, examinace: zimní s.:2/2 Z+Zk [hodiny/týden]
Počet míst: neomezen
Minimální obsazenost: neomezen
Stav předmětu: vyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Další informace: http://www.ksi.mff.cuni.cz/lectures/NSWI098/html/index.html
Garant: RNDr. Jakub Yaghob, Ph.D.
Třída: Informatika Bc.
Informatika Mgr. - Softwarové systémy
Kategorizace předmětu: Informatika > Softwarové inženýrství
Anotace -
Poslední úprava: T_KSI (14.03.2011)

Úvodní kurz překladačů se soustřeďuje zejména na teoretické i praktické základy konstrukce přední části překladače. Součástí předmětu je i cvičení zaměřující se na základy práce s nástroji pro konstrukci překladačů. Po absolvování tohoto kurzu bude posluchač schopen sestrojit vlastní překladač do mezikódu nebo jiného jazyka. Pro absolvování předmětu je nezbytná detailní znalost látky pokryté předmětem TIN071 Automaty a gramatiky.
Podmínky zakončení předmětu -
Poslední úprava: RNDr. Jakub Yaghob, Ph.D. (04.10.2017)

V 6 domácích úkolech budete postupně vytvářet překladač pro zjednodušený Pascal (nazvaný Mlaskal).

Úkoly #1- #3 budou hodnoceny maximálně 100 body, úkoly #4- #6 budou hodnoceny maximálně 150 body. Součet vašich bodů určí vaši konečnou známku i zápočet takto:

700 nebo více - 1 (výborně)

550-699 - 2 (velmi dobře)

450-549 - 3 (dobře)

449 nebo méně - neprospěl

Kromě toho je zapotřebí 450 bodů k získání zápočtu. Pokud nejste s Vaší známkou spokojeni, ale máte alespoň 450 bodů (tedy zápočet), můžete požádat o písemnou zkoušku. Pokud se však tak rozhodnete, Vaše známka z domácích úkolů již není platná, tj. může se stát, že u zkoušky neprospějete, i když máte dostatek bodů z domácích úkolů.

Každá domácí úloha má termín. V termínu jsou všechna řešení shromážděna, otestována a ohodnocena. Vaše řešení můžete předložit i po uplynutí termínu, ale každý den zpoždění proti termínu je penalizován 10 body, které se odečtou od získaných bodů při ohodnocení odevzdaného řešení.

Literatura
Poslední úprava: T_KSI (24.05.2005)

Aho, Sethi, Ullman: Compilers - Principles, Techniques and Tools, Addison-Wesley 1986

Chytil M.: Automaty a gramatiky, SNTL 1984

Melichar B.: Konstrukce překladačů. ČVUT 1999

Grune, Bal, Jacobs, Langendoen: Modern Compiler Design, Wiley 2000

Sylabus -
Poslední úprava: RNDr. Jakub Yaghob, Ph.D. (22.04.2016)

  • Typická struktura překladače procedurálního jazyka
  • Mezikódy; vnitřní reprezentace překládaného programu
  • Lexikální a syntaktická analýza; analýza shora dolu: LL(k) gramatiky, implementace rekurzivním sestupem; analýza zdola nahoru: LR(1) gramatiky a analyzátory, upravené konstrukce SLR(1), LALR(1); Flex, Bison
  • Sémantická analýza; vazba na syntaktickou analýzu; atributy; základní úkoly sémantické analýzy procedurálních jazyků
  • Generování mezikódu
  • Vysokoúrovňové optimalizace, např. vyhodnocování konstantních podvýrazů, eliminace společných podvýrazů, algebraické úpravy; základní blok, control flow, data flow, analýza doby životnosti, další techniky analýzy
  • Moderní architektury procesorů a jejich efekt na překladače; základní bloky generátoru kódu
  • Interpretované jazyky
  • Běhová podpora; organizace paměti procedurálních jazyků

Vstupní požadavky -
Poslední úprava: RNDr. Jakub Yaghob, Ph.D. (01.03.2017)

Součástí výuky jsou praktické domácí úlohy v jazyce C++. Postačí znalosti pokryté předmětem NPRG041, dokonce stačí i souběžné studium s tímto předmětem.

 
Univerzita Karlova | Informační systém UK