- formal languages and compiler architecture
|
- 582206 Models of Computation
|
- explain the role and tasks of a compiler as a part of a programming environment
- define what is a formal grammar
- write and read grammar specifications
|
- explain the architecture of a compiler
- explain the role and use of formal grammars in compiler construction
|
- use formal grammars to define domain-specific languages
- use translator tools as a part of application development
|
|
- 582206 Models of Computation
- general programming skills
|
- explain the role and tasks of a scanner
|
- implement a scanner for a given language
- read and write regular expressions
- explain how automata is used by scanner generators
- use a scanner generator to implement a lexical parsing for a given language
- use scanner as a part of a compiler
|
- construct a new scanner generator
|
|
- 582206 Models of Computation
- general programming skills
|
- explain the role and tasks of a parser
|
- define what is an LL (1) grammar
- explain top-down and bottom-up parsing
- describe and write a recursive-descent parser
- modify a given grammar to be suitable for syntactic analysis
- use parser generators (metaparsers)
- implement error-recovery for a parser
- use parser as a part of a compiler
|
- construct a new metaparser
|
|
- general programming skills
|
- explain the role and tasks of a semantic analyser
|
- explain major semantic formalisms used in practice
- write an attribute grammar for a simple language
- describe verbally and programmatically the static and dynamic checks for a simple language
- use semantic analyzer as a part of a compiler
|
- specify the semantics of a non-trivial existing language
|
|
- general programming skills
|
- explain the role and tasks of a code generator
|
- explain intermediate code and its use as a part of a compiler
- explain different formats of intermediate code representations and their pros and cons
|
- explain general code optimization strategies used in compilers
|