Languages and compilers
The teaching is organized as follows:
The aim of the course is to introduce the techniques of automatic translation. The target is to learn a general methodology for the compilers design.
The course teaches the fundamental concepts of programming languages, such as functions, types, memory management, and control. The aim is to give a thorough understanding of problems in the design of programming languages. This understanding enables students to grasp the advantages and disadvantages of using different kind of programming languages.
Lexical analysis of the code. Syntactical analysis: top-down (LL) and bottom-up (LR) parsing.
Syntax-directed definitions and syntax-directed translations: attributes, semantical actions. Intermediate code generation: abstract syntax trees, intermediate code. Object-code generation. Code optimization.
Virtual machines: interpreters and compilers. Syntactical descriptions of programming languages: context free grammars. Structured operational semantics.
Memory management: scoping rules, functions, procedures, parameter passing, stack of activation records, heap.
Control: structuring of statements, abstraction, exceptions.
Data and types: data types, base types, structured types, type systems, type inference and polymorphism.
|Maurizio Gabbrielli, Simone Martini
||Linguaggi di programmazione: principi e paradigmi