Home
•
Course Info
•
Schedule
•
Mini Projects
•
Results
•
Resources
•
Exam
•
News
Center
Master Program
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Web Home
Cco
---+ _Compiler Construction_ ---- <div class="newsbar"> %INCLUDE{WebNews}% </div> Computer programs are usually written in a so-called high-level programming language, such as C, Java, or Haskell. Execution of such programs requires either a compiler or an interpreter for the language. In its most general form, a compiler is a piece of software that takes as input a program written in a certain (usually: high-level) language and produces as output a translation of that program into another (more low-level) language. Examples include: compilers that translate C programs into machine code for an IA-32 processor; compilers that translate Java programs into bytecode instructions for the Java Virtual Machine; but also: software for translating Latex documents into HTML. In contrast, interpretation is concerned with the direct execution of (the actions described by) a source program. In this course, we study the workings of compilers and interpreters. We do so by considering some of the language constructs that typically appear in modern imperative and functional programming languages, and by looking at what kind of analyses these constructs require in order to be compiled or interpreted. We delve into formalisms, tools, and programming techniques that are particulary well-suited for crafting compilers and interpreters, but that are often also useful and relevant for other, more general forms of software construction.