|
Only very few computer scientists will ever implement a compiler for a
programming language in their professional life. However, the models, theories
and algorithms for compiler construction are useful for software
development in general, and many implementation tasks will require to implement
small special purpose languages
This course focusses on all that what 30.01.-10.02. 2012 computer
scientist should know about the implementation of programming languages.
Aims
- Understanding the way compilers work: How are data structures, variable,
and objects represented in storage? How is the code organized for evaluating
expressions, executing commands, and calling methods?
- Mastering fundamental techniques for lexical, syntactical, and contextual
analysis of programming languages.
Contents
- Introduction:
Machines, interpreters, compilers, T diagrams, bootstrapping, phase
structure of compilers. Chomsky grammar hierarchy.
- Lexical Analysis (scanning):
regular expressions and definitions, finite automata, implementation of
identifier tables, lex scanner grnerator.
- Syntax Analysis (parsing):
Context-free grammars, top-down parsing (SLL(k)), error handling, abstract
syntax tree construction, bottom-up parsing (LR(k)), yacc parser generator.
- Contextual analysis:
Declaration analysis (identification) and type analysis, attribute
grammars, tree transduction, implementation of declaration tables.
- Transformation:
storage organisation, variable allocation,
transforming expressions, commands, and method calls.
|
|