| Course name |
Programming Languages: Compilers
|
| Course code |
04138
|
| Degree |
Laurea and Laurea Magistrale
|
| Semester |
2nd Semester
|
| Lecturer |
Prof. Cosimo Laneve
|
| Teaching language |
Italian
|
| Credit points |
12
|
| Lecture hours |
60
|
| Exercise hours |
24
|
| Timetable |
goto
http://www.informatica.unibo.it/cdl/informatica/
|
| Office hours Lecturer |
Tuesaday 12,00 -- 13.30
|
| Objectives |
This course aims allows
students to develop a deep understanding of Compilers
technology. Students will learn the most important techniques for the
representation, analysis, and code generation of Programming Languages.
The techniques will be then applied to the construction of a
compiler for
a programming language.
|
| Syllabus |
- Introduction to Compilers and Interpreters
- Grammars and Lexical Analyzers
- Syntax Analysis and Parser construction
- Top-Down Parser: recursive descent and LL(1)
- Bottom-Up Parser: LR(0), SLR, LR(1), LALR(1)
- Attribute grammars: synthesized and inherited attributes.
- Semantic Analysis: Type Checking
- Runtime environments: runtime memory, stack and heap, static and dynamic
environments, displays, garbage-collection
- Code Generation
|
| Teaching format |
Frontal lectures
|
| Assessment |
- Project: Compiler Development (10%)
- Written Exam (90%)
|
| Reading list |
- Modern
Compiler Implementation in C
Andrew W. Appel, Maia Ginsburg
Hardcover - 560 pages (January 1998)
Cambridge University Press
ISBN: 052158390X
- Compilers:
Principles, Techniques, and Tools
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman
Addison-Wesley Pub Co
ISBN: 0201100886
- Compiler Construction: Principles and Practice, Kenneth C. Louden. Brooks Cole, 1997.
- Advanced Compiler Design and Implementation, Steven Muchnick. Morgan Kaufmann, 1997.
|
| Software used |
Lex - A Lexical Analyzer Generator, M. E. Lesk and E. Schmidt
Yacc: Yet Another Compiler-Compiler, Stephen C. Johnson
Flex, A fast scanner generator, Vern Paxson
Bison, The YACC-compatible Parser Generator, Charles Donnelly and Richard Stallman
SPIM, A MIPS R2000/R3000 Simulator, James Larus
|
| Lectures |
Introduction ;
Lexical analysis ;
Top-Down parsing ;
Bottom-up parsing ;
Abstract Syntax Trees ;
Type Checking ;
Runtime environments .
Code Generation .
|
| Teaching outcome |
After this course, students will understand the
techniques used to generate a machine executable code starting from a
source program. They will be also able to build
compilers and to write translators.
|
| Newsgroup |
unibo.cs.lfc
|
|