Students are able to
- describe syntactically structured data streams using (attributed) grammars (K6)
- transform grammars to eliminate LL(1) conflicts and left recursion (K6)
- develop a scanner for a set of terminal symbols given as a regular grammar (K6)
- develop a recursive descent parser with error handling for a language given as a context-free grammar (K6)
- create LALR(1) parser tables for a language given as a BNF grammar (K6)
- manage names, types and scopes of a program in a symbol table (K6)
- generate code for a stack machine from a Java-like source program (K6)
- explain the main features of virtual machines and their differences to physical machines (K2, K5)
- use a compiler generator (e.g. Coco/R) to generate the core parts of a compiler from a compiler description (K6)
|
- Foundations of formal languages (regular and context-free grammars, BNF, EBNF, deterministic finite automata, stack machines)
- Lexical analysis
- Syntax analysis (recursive descent parsing, LR(1), LALR(1))
- Attributed grammars
- Symbol table management
- Code generation
- Virtual machines
- Compiler generators
|