Introductory compiler course concentrates primarily on theoretical and practical principles of fore-end compiler construction. Exercises emphasise elementary using of tools for compiler construction. A student will be capable to construct his/her own compiler into an intermediate code or an another language after finishing this course.
Last update: T_KSI (24.05.2005)
Ú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.
Last update: Zavoral Filip, RNDr., Ph.D. (24.04.2024)
Course completion requirements -
There will be 5 home assignments which are designed to incrementally build a compiler for a subset of the C language.
You may receive up to 100 points for assignments #1 and #2 and up to 150 points for assignments #3-#5. The sum of your points will determine your final mark as follows:
600 or more - 1 (excellent)
450-599 - 2 (well done)
350-449 - 3 (OK)
349 or less - failed
Each assignment has a deadline, the penalty for late submission is 10 points per day.
Last update: Bednárek David, RNDr., Ph.D. (27.09.2024)
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.
Last update: Bednárek David, RNDr., Ph.D. (27.09.2024)
Literature - Czech
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
Last update: Bednárek David, RNDr., Ph.D. (27.09.2024)
Syllabus -
Typical compiler structure for procedural languages
Intermediate codes; internal representation of a compiled program
Lexical and syntax analyses; top-down analysis: LL(k) grammars, implementation by recursive-descent; bottom-up analysis: LR(1) grammars and parsers, modified construction SLR{1), LALR(1); Flex, Bison
Semantic analysis; link with syntax analysis; attributes; basic tasks of semantic analysis for procedural languages
Intermediate code generation
High-level optimizations, e.g. constant folding, common subexpression elimination, algebraic transformations; basic block, control flow, data flow, live-range analysis, other analysis techniques
Modern processor architectures and their impact on compilers; fundamental units of code generator
Interpreted languages
Runtime support; memory organization for procedural languages
Last update: Yaghob Jakub, RNDr., 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ů
Last update: Yaghob Jakub, RNDr., Ph.D. (22.04.2016)
Entry requirements -
Important parts of the course are home assignments in C++. Required language features are covered by the course NPRG041. It is possible to visit the course NSWI098 simultaneously with the course NPRG041.
The course TIN071 Automata and Grammars is necessary to master the theory of the course and without theory it is impossible to master the practical exercises of the course.
Last update: Yaghob Jakub, RNDr., Ph.D. (26.07.2022)
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.
Last update: Yaghob Jakub, RNDr., Ph.D. (26.07.2022)