Vous êtes sur la page 1sur 15

Cours : Compilation

Chapitre1 : Introduction à la notion de compilation


1
Enseignante : Fehima Achour
fehima.achour@gmail.com
2 Plan Du Cours
 I. Qu’est ce qu’un compilateur ?
 II. Structure d’un compilateur
 1.Phases d’analyses
 2.Phases de production
 3. Phases parallèles
3 Plan Du Cours
 I. Qu’est ce qu’un compilateur ?
 II. Structure d’un compilateur
 1.Phases d’analyses
 2.Phases de production
 3. Phases parallèles
4 I. Qu’est ce qu’un compilateur ?

Un compilateur est un logiciel particulier qui traduit un


programme écrit dans un langage de haut niveau (par le
programmeur) en un programme cible ou langage de bas
niveau (assembleur) exécutable par un ordinateur.

 C’est donc l’instrument fondamental à la base de toute


réalisation informatique.

Programme source Compilation Programme cible

Message d’erreur

Principe du compilateur
5 Plan Du Cours
 I. Qu’est ce qu’un compilateur ?
 II. Structure d’un compilateur
 1.Phases d’analyses
 2.Phases de production
 3. Phases parallèles
6 II. Structure d’un compilateur
La compilation se décompose en deux phases.
Chaque phase constitue une partie de traduction en elle
même.

• Reconnaître les variables, les instructions, les


opérateurs.
Phase d’analyse • Elaborer la structure syntaxique du programme.
• Elaborer certaines propriétés sémantiques.

Phase de
synthèse et de • Produire le code cible.
production
7 II. Structure d’un compilateur
1. Phases d’analyses

Analyse Analyse Analyse


lexicale syntaxique sémantique
8 II. Structure d’un compilateur
1. Phases d’analyses

A) Analyse lexicale (analyse linéaire, scanning) :


 il s’agit de reconnaître les types de mots lus et récupérer les mots, que
l’on appelle « tokens », à partir d’une suite de caractères.
 Pour cela on lit le Programme source de gauche à droite et les
caractères sont regroupés en unités lexicales.
 Les outils théoriques nécessaires à la mise en œuvre d’un analyseur
lexical sont les expressions régulières et les automates à états
finis.
9 II. Structure d’un compilateur
1. Phases d’analyses
B) Analyse syntaxique (Analyse hiérarchique ou analyse
grammaticale, parsing) :
 On vérifie que l’ordre des tokens correspond à l’ordre définit pour le langage.

(vérifier la syntaxe du langage à partir de la définition de sa grammaire).

 Cette phase produit une représentation sous forme d’arbre de la suite des

tokens obtenus lors de la phase précédente (arbre syntaxique).

 Les outils théoriques nécessaires à la mise en œuvre d’un analyseur syntaxique

sont les grammaires et les automates à pile.


10 II. Structure d’un compilateur
1. Phases d’analyses
C) Analyse sémantique (analyse contextuelle, type checking) :

 Certains contrôles (de type par exemple) sont opérés afin de

vérifier que l’assemblage des constituants du programme à un sens.

 Cette phase produit une représentation sous forme d’un arbre

syntaxique décoré.

 On ne peut pas par exemple additionner un réel avec une chaîne

de caractères, ou affecter une variable à un nombre, …


11 II. Structure d’un compilateur
2. Phases de production

 Génération de code : produire les instructions en

langage cible (langage machine ou langage d’assemblage).

 Optimisation du code : améliorer le code produit de

telle sorte que le programme résultant soit plus rapide.


12 II. Structure d’un compilateur
3. Phases parallèles

 Gestion de la table des symboles : la table des symboles sert


à stocker les identificateurs du programme source (type,
emplacement mémoire, nombre, type et mode de passage des
paramètres d’une fonction, …). Le remplissage de cette table a lieu
lors des phases d’analyses.
 Gestion des erreurs : chaque phase peut rencontrer des erreurs.
Il s’agit de les détecter et d’informer l’utilisateur le plus précisément
possible : erreur de syntaxe, de sémantique, ….
13
14
15

Vous aimerez peut-être aussi