Université Côte d'azur

UE Compilation

Code de l'ECUE : SLUIN602

Ce cours donne droit à 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.

Responsable(s) du cours

, Sid Touati

Présentiel

  • 18h de cours magistral
  • 36h de travaux dirigés
  • 6h de travaux pratiques

PREREQUIS

Avant le début du cours, je dois ...
  • Faire le test d'auto-positionnement en ligne (onglet syllabus)
  • Automates et grammaires
  • Programmation C
  • Structures de données

OBJECTIFS

A la fin de ce cours, je devrais être capable de...
  • 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

CONTENU

    • 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.

Accéder au Syllabus complet (Authentification requise)
Important
Ce syllabus n’a aucune valeur contractuelle. Son contenu est susceptible d’évoluer en cours d’année : soyez attentifs aux dernières modifications.