Compilers

Gennaro COSTAGLIOLA Compilers

0522500069
DIPARTIMENTO DI INFORMATICA
EQF7
COMPUTER SCIENCE
2019/2020

YEAR OF COURSE 2
YEAR OF DIDACTIC SYSTEM 2016
PRIMO SEMESTRE
CFUHOURSACTIVITY
648LESSONS
Objectives
KNOWLEDGE AND UNDERSTANDING
• THE MAIN CONCEPTS OF THE PROGRAMMING LANGUAGES
• THE MAIN TECHNIQUES TO DEVELOP A COMPILER
• THE PHASES OF A COMPILER
• THE NEEDED FORMALISMS FOR FORMALLY SPECIFYING A PROGRAMMING LANGUAGE
• THE MAIN ALGORITHMS FOR THE AUTOMATIC GENERATION OF TRANSLATORS AND COMPILERS

APPLYING KNOWLEDGE AND UNDERSTANDING
• THE USE OF TOOLS, AS FLEX AND JAVACUP, FOR THE IMPLEMENTATION OF A PROGRAMMING LANGUAGE
• THE DEVELOPMENT OF THE FIRST PHASES OF A COMPILER
Prerequisites
THE COURSE REQUIRES THE BASIC KNOWLEDGE OF DATA STRUCTURES AND ALGORITHMS, ARCHITECTURE, HIGH-LEVEL LANGUAGE PROGRAMMING.
Contents
THE COURSE INTRODUCES THE MAIN CONCEPTS FOR THE DEVELOPMENT OF A COMPILER WITH EMPHASIS ON THE FRONT END AND BACK END. THE MAIN TOPICS ARE:

• HISTORY, PARADIGMS AND CHARACTERISTICS OF THE PROGRAMMING LANGUAGES
• LEXICAL ANALYSIS
• LEXICAL SPECIFICATION OF THE PROGRAMMING LANGUAGES WITH JFLEX
• BASIC CONCEPTS ON GRAMMARS
• PARSING TOP-DOWN AND BOTTOM-UP
• SYNTACTIC SPECIFICATION OF THE PROGRAMMING LANGUAGES WITH JAVACUP
• SYNTAX-DRIVEN TRANSLATIONS
• INTERMEDIATE REPRESENTATIONS
• SEMANTIC ANALYSIS AND TYPE CHECKING
• INTRODUCTION TO THE RUNTIME MANAGEMENT
• INTRODUCTION TO CODE GENERATION

Teaching Methods
ABOUT TWO THIRDS OF THE LECTURES INCLUDE TOPICS PRESENTATION AND THE REMAINING LECTURES ARE DEDICATED TO EXERCISES IN CLASS. THE INDIVIDUAL STUDY WILL ALSO INCLUDE PROJECT DEVELOPMENT.
GIVEN THE CHARACTERISTICS OF THE DISCIPLINE, THE ATTENDANCE IS STRONGLY RECOMMENDED, ALTHOUGH NOT MANDATORY.
Verification of learning
THE EVALUATION IS BASED ON A WRITTEN AND AN ORAL EXAM. THE WRITTEN PART OF THE EXAM WILL INCLUDE OPEN QUESTIONS AND EXERCISES TO EVALUATE THE FULFILLMENT OF THE OBJECTIVES OF THE COURSE. IN THE ORAL PART THE STUDENTS WILL DISCUSS ABOUT THEIR DEVELOPMENT OF THE FIRST PHASES OF A COMPILER. IN PARTICULAR, THE DISCUSSION WILL INCLUDE THE CODE MODIFICATION OF THE PRESENTED PROJECT, DIRECTLY ON A PC. THE FINAL GRADE IS GIVEN BY THE WEIGHTED AVERAGE OF THE PARTIAL GRADES SO OBTAINED. THE WRITTEN PART IS WORTH 60% WHILE THE CODE MODIFICATION AND PROJECT DESCRIPTION ARE WORTH THE REMAINING 40%.

Texts
V. AHO, R. SETHI, AND J. D. ULLMAN, COMPILERS: PRINCIPLES, TECHNIQUES, AND TOOLS, ADDISON-WESLEY, SECOND EDITION 2007

TO BE CONSULTED:
PRATT, T. W. AND M. V. ZELKOWITZ, PROGRAMMING LANGUAGES: DESIGN AND IMPLEMENTATION, 4RD ED., PRENTICE-HALL, 2000


More Information
THE STUDENTS ARE EXPECTED TO PASS AT LEAST TWO HOURS OF INDIVIDUAL STUDY FOR EACH HOUR IN CLASS.
THE COURSE IS WEB-ASSISTED THROUGH THE DEPARTMENT WEB PLATFORM WHERE ALL THE ACTIVITIES AND THE MATERIAL OF THE COURSE WILL BE PUBLISHED.

  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2021-02-19]