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 -
To get credit, students need to complete the exercises assigned in class and pass the credit test during the semester.
The exam is oral with a written preparation.
Last update: Bednárek David, RNDr., Ph.D. (24.08.2026)
Podmínkou pro udělení zápočtu je vypracování úkolů zadaných na cvičení a úspěšné složení zápočtového testu během výuky v semestru.
Zkouška je ústní s písemnou přípravou.
Last update: Bednárek David, RNDr., Ph.D. (24.08.2026)
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
Runtime support; memory organization for procedural languages; JIT compilation
Last update: Bednárek David, RNDr., Ph.D. (24.08.2026)
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
Běhová podpora; organizace paměti procedurálních jazyků; JIT překlad
Last update: Bednárek David, RNDr., Ph.D. (24.08.2026)
Course registration requirements -
Important parts of the course are assignments in C++. Required language features are covered by the course NPRG041. It is possible to enroll the course NSWI098 simultaneously with the course NPRG041.
The course TIN071 Automata and Grammars is necessary to understand the theory of the course and without theory it is impossible to finish the practical exercises of the course.
Last update: Bednárek David, RNDr., Ph.D. (24.08.2026)
Součástí výuky jsou praktické ú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: Bednárek David, RNDr., Ph.D. (24.08.2026)