ΕΠ33 - Compilers

Information

Code : ΕΠ33

Type : Elective

Semester : 8

ECTS credits: 5

Course URL: https://eclass.hua.gr/courses/DIT107/

Expected Outcomes

The objective of this course is to teach students the theoretical foundations as well as the basic practical skills required in order to build compilers for a large number of programming languages.

Students will have the chance of building a large part of a compiler for a simple programming language.

Content

1st week lecture: Introduction to Compilers. Phases of a Compiler
2nd week lecture: Lexical Analysis
3rd week lab: Lexical Analyzer for a calculator
4th week lecture: Syntax Analysis. Top-Down Syntax Analysis
5th week lecture: Bottom-Up Syntax Analysis
6th week lab: Syntax Analyzer for a calculator
7th week lecture: Syntax Directed Translation
8th week lecture: Semantic Analysis
9th week lab: Abstract Syntax Trees and Semantic Analysis for a calculator
10th week lecture: Intermediate Code
11th week lecture: Runtime Environment
12th week lecture: Java Virtual Machine
13th week lab: Generating JVM bytecode for a calculator

Evaluation Means

Oral examination

Bibliοgraphy

- Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. 2nd edition. Addison-Wesley, 2007.
- Andrew W. Appel, Modern Compiler Implementation in C. Cambridge University Press, 1998.
- Andrew W. Appel, Modern Compiler Implementation in Java. Cambridge University Press, 1998.
- Κ. Lazos, P. Katsaros, Ζ. Karaiskos. Programming Language Compilers: Theory and Practice. Thessaloniki Publishers. 2004. In Greek.
- N. Papaspirou, E. Skordalakis, Compilers, Symmetria Publishers. In Greek.
- Keith D. Cooper, Linda Torczon. Engineering a compiler. Morgan Kaufmann Publishers, 2004.

- ACM Transactions on Programming Languages and Systems (TOPLAS)
- ACM SIGPLAN Symposium on Principles of Programming Languages (POPL)
- ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
- International Conference on Compiler Construction (CC)