Charles Explorer logo
🇬🇧

Compiler Principles

Class at Faculty of Mathematics and Physics |
NSWI098

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

Annotation

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.