- 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
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.