University Côte d'azur

UE Compilation

ECUE's code : SLUIN602

This course give 6.0 ECTS.
PORTAIL SCIENCES ET TECHNOLOGIES
Informatique
Campus Valrose
Licence 3
Semestre pair
Français

PRESENTATION

La compilation est un des domaines fondamentaux en informatique. C'est le thème qui étudie la transformation automatique entre les langages structurés, comme les langages de programmation, les langages de description, les données structurées, etc.

Un compilateur est un logiciel qui permet de transformer un langage de programmation vers un autre. Typiquement, un compilateur génère un code assembleur ou binaire à partir d'un programme source, afin qu'il puisse être exécuté sur un processeur. Dans cette UE, nous allons nous concentrer sur les compilateurs: comment analyser un programme source écrit dans un langage de programmation défini, comment analyser détecter les erreurs lexicales, syntaxiques et sémantiques, comment générer ensuite un programme dans un langage proche de la machine cible (code d'un autre langage, code intermédiaire, code assembleur, etc.).

Ce cours est dédié aux étudiants de licence informatique, de double licence mathématiques-informatique.

Course's manager(s)

, Sid Touati

In class

  • 18h of lectures
  • 36h of directed studies
  • 6h of practical work

PREREQUISITES

Before the start of the course, I must ...
  • Faire le test d'auto-positionnement en ligne (onglet syllabus)
  • Automates et grammaires
  • Programmation C
  • Structures de données

OBJECTIVES

By the end of this course, I should be able to...
  • Programmer un analyseur lexico-syntaxique (un parseur)
  • Différencier les actions internes et les étapes d'un compilateur
  • Reconnaître la notion de types dans un langage de programmation
  • Etudier la gestion mémoire d'un programme
  • Programmer un compilateur
  • Programmer un générateur de code
  • Transformer automatiquement un langage structuré vers un autre
  • Décrire l'interaction entre le compilateur, le système d'exploitation et le processeur

CONTENT

    • Etapes d'un compilateur
    • Langages assembleur
    • Définitions de base
    • Automates non déterministe de reconnaissance des mots (tokens)
    • Traduction d'un automate non déterministe vers un automate déterministe
    • Outil Lex de génération d'analyseur lexical
    • Grammaire à contexte libre
    • Analyse descendante de grammaires LL
    • Analyse ascendante de grammaires LR
    • Outil yacc de génération d'analyseur syntaxique
    • Introduction

    • Définitions

    • Évaluation ascendante (S-attribuée)

    • Évaluation descendante (L-attribuée)

    • Évaluation ascendante (L-attribuée)

    • Équivalence des grammaires S-attribuées et L-attribuées

    • Identification

    • Portée d'un identificateur

    • Surcharge d'un identificateur

    • Portées importées

    • Système de typage

    • Un système de typage simple

    • Équivalences entre les types

    • Conversions des types

    • Présentation générale

    • Représentation de l'information

    • Allocation statique

    • Allocation dynamique

    • Fonctions et passage de paramètres

    • Présentation générale

    • Formes intermédiaires structurées (graphes)

    • Formes intermédiaires linéaires (textuel)

    • Formes intermédiaires hybrides

    • Introduction générale

    • Les expressions arithmétiques

    • Les expressions logiques

    • Les instructions conditionnelles

    • Les inconditionnelles

    • Les boucles

    • Les appels de fonctions

    • Introduction générale

    • Analyse de code

    • Optimisations locales

    • Optimisations à lucarne

    • Optimisations globales

  • Un projet de compilation est très important dans la vie d’un étudiant en informatique. Pour beaucoup d’entre vous, c’est probablement la seule occasion dans votre carrière d’écrire un compilateur. Il est donc important de faire des efforts pour le réaliser jusqu’au bout, car c’est travail très formateur que des étudiants des autres disciplines scientifiques ne font pas. Le projet est à réaliser par binômes.

Access to complete Syllabus (Authentification required)
Important
This syllabus has no contractual value. Its content is subject to change throughout this year: be aware to the last updates