PředmětyPředměty(verze: 964)
Předmět, akademický rok 2024/2025
   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 2024
Semestr: zimní
E-Kredity: 6
Rozsah, examinace: zimní s.:2/2, KZ [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Další informace: https://www.ksi.mff.cuni.cz/teaching/nswi098-web
Garant: RNDr. David Bednárek, Ph.D.
Vyučující: RNDr. David Bednárek, Ph.D.
Třída: Informatika Bc.
Informatika Mgr. - Softwarové systémy
Kategorizace předmětu: Informatika > Softwarové inženýrství
Prerekvizity : NTIN071
Anotace -
Ú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 NTIN071 Automaty a gramatiky.
Poslední úprava: Zavoral Filip, RNDr., Ph.D. (24.04.2024)
Podmínky zakončení předmětu -

V 5 domácích úkolech budete postupně vytvářet překladač pro podmnožinu jazyka C.

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

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

450-599 - 2 (velmi dobře)

350-449 - 3 (dobře)

349 nebo méně - neprospěl

Každá domácí úloha má termín, každý den zpoždění proti termínu je penalizován 10 body.

Poslední úprava: Bednárek David, RNDr., Ph.D. (27.09.2024)
Literatura
  • Thain, Introduction to Compilers and Language Design, 2nd edition, 2020, ISBN: 979-8-655-18026-0
  • Aho, Lam, Sethi, Ullman: Compilers - Principles, Techniques and Tools, 2nd Edition, Pearson Education 2006, ISBN 0-201-10088-6
  • Grune, Bal, Jacobs, Langendoen: Modern Compiler Design, Wiley 2000
  • Aho, Sethi, Ullman: Compilers - Principles, Techniques and Tools, Addison-Wesley 1986

Poslední úprava: Bednárek David, RNDr., Ph.D. (27.09.2024)
Sylabus -
  • 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ů

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

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.

Předmět TIN071 Automaty a gramatiky je nutný ke zvládnutí teorie předmětu a bez teorie není možné zvládnout praktická cvičení předmětu.

Poslední úprava: Yaghob Jakub, RNDr., Ph.D. (26.07.2022)
 
Univerzita Karlova | Informační systém UK