Upload
others
View
47
Download
0
Embed Size (px)
Citation preview
Chapitre 4 :
Introduction a la compilation
Prof. Abdelmajid DarghamFaculte des Sciences, Oujda
Filiere SMI - S4
Module Theorie des langages & Compilation
Universite Mohamed Premier
Septembre, 2012
Sommaire du chapitre 4
Pourquoi la compilation ?
Notion de compilation
Environnement d’un compilateur
La pahse d’analyse
La phase de synthese
Schema global d’un compilateur
Caracteristiques d’un bon compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Sommaire du chapitre 4
Pourquoi la compilation ?
Notion de compilation
Environnement d’un compilateur
La pahse d’analyse
La phase de synthese
Schema global d’un compilateur
Caracteristiques d’un bon compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Sommaire du chapitre 4
Pourquoi la compilation ?
Notion de compilation
Environnement d’un compilateur
La pahse d’analyse
La phase de synthese
Schema global d’un compilateur
Caracteristiques d’un bon compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Sommaire du chapitre 4
Pourquoi la compilation ?
Notion de compilation
Environnement d’un compilateur
La pahse d’analyse
La phase de synthese
Schema global d’un compilateur
Caracteristiques d’un bon compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Sommaire du chapitre 4
Pourquoi la compilation ?
Notion de compilation
Environnement d’un compilateur
La pahse d’analyse
La phase de synthese
Schema global d’un compilateur
Caracteristiques d’un bon compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Sommaire du chapitre 4
Pourquoi la compilation ?
Notion de compilation
Environnement d’un compilateur
La pahse d’analyse
La phase de synthese
Schema global d’un compilateur
Caracteristiques d’un bon compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Sommaire du chapitre 4
Pourquoi la compilation ?
Notion de compilation
Environnement d’un compilateur
La pahse d’analyse
La phase de synthese
Schema global d’un compilateur
Caracteristiques d’un bon compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
La compilation est tres importante, car :
1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).
2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.
3 s’afranchir de la machine utilisee : programmation dehaut niveau.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
La compilation est tres importante, car :
1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).
2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.
3 s’afranchir de la machine utilisee : programmation dehaut niveau.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
La compilation est tres importante, car :
1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).
2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.
3 s’afranchir de la machine utilisee : programmation dehaut niveau.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
La compilation est tres importante, car :
1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).
2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.
3 s’afranchir de la machine utilisee : programmation dehaut niveau.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
La compilation est tres importante, car :
1 elle permet d’ecrire des programmes dans plusieurs styles: prodecdurale (C, pascal), fonctionnelle (Lisp),logique (Prolog), oriente objet (C + +, Java).
2 elle permet d’identifier les erreurs dans un programme :erreurs lexicales, erreurs syntaxiques, erreurssemantiques.
3 s’afranchir de la machine utilisee : programmation dehaut niveau.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Les techniques de compilation ne servent pas qu’a creerdes compilateurs.
Elles sont tres utiles dans d’autres domaines, parmilesquels :
1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.
2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Les techniques de compilation ne servent pas qu’a creerdes compilateurs.
Elles sont tres utiles dans d’autres domaines, parmilesquels :
1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.
2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Les techniques de compilation ne servent pas qu’a creerdes compilateurs.
Elles sont tres utiles dans d’autres domaines, parmilesquels :
1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.
2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Les techniques de compilation ne servent pas qu’a creerdes compilateurs.
Elles sont tres utiles dans d’autres domaines, parmilesquels :
1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.
2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Les techniques de compilation ne servent pas qu’a creerdes compilateurs.
Elles sont tres utiles dans d’autres domaines, parmilesquels :
1 Les systemes de composition de texte : certainspassages du texte d’un editeur peuvent constituer descommandes pour generer des figures, des structuresmathematiques, de la mise en forme, ...etc.
2 Interpreteur de requetes : lignes de commandes,requetes dans une base de donnees, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,
expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,
expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,
expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.
2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,
expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.2 l’architecture des ordinateurs.
3 la theorie des langages formels : automates finis,expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,
expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,
expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.
5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Pourquoi la compilation ?
Utilite de la compilation
Un cours de compilation est tres riche en matiere deconnaissance.
La compilation touche plusieurs domaines :
1 les langages de programmation.2 l’architecture des ordinateurs.3 la theorie des langages formels : automates finis,
expressions regulieres, grammaires hors-contexte,automates a pile.
4 l’algorithmique.5 le genie logiciel.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Definition 1.1
Un compilateur est un programme qui :
lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).
Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Definition 1.1
Un compilateur est un programme qui :
lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).
Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Definition 1.1
Un compilateur est un programme qui :
lit un programme ecrit dans un premier langage (lelangage source),
et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).
Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Definition 1.1
Un compilateur est un programme qui :
lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).
Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Definition 1.1
Un compilateur est un programme qui :
lit un programme ecrit dans un premier langage (lelangage source),et le traduit en un programme equivalent ecrit dans unautre langage (le langage cible).
Au cours de ce processus de traduction, un role importantdu compilateur est de signaler a l’utilisateur lapresence d’erreurs dans le programme source.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Figure: Schema simplifie d’un compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Figure: Schema simplifie d’un compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Le processus de compilation s’effectue en generale endeux grandes phases :
1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.
2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.
La theorie des langages intervient au niveau de la phased’analyse.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Le processus de compilation s’effectue en generale endeux grandes phases :
1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.
2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.
La theorie des langages intervient au niveau de la phased’analyse.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Le processus de compilation s’effectue en generale endeux grandes phases :
1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.
2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.
La theorie des langages intervient au niveau de la phased’analyse.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Le processus de compilation s’effectue en generale endeux grandes phases :
1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.
2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.
La theorie des langages intervient au niveau de la phased’analyse.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Le processus de compilation s’effectue en generale endeux grandes phases :
1 La phase d’analyse : elle partitionne le pogrammesource en ses composants elementaires et en cree unerepresentation intermediaire.
2 La phase de synthese : elle construit le programmecible a partir de la representation intermediaire.
La theorie des langages intervient au niveau de la phased’analyse.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Chaque phase contient un certain nombre d’etapes (oumodules).
La sortie d’un module est l’entree du module suivant.
Les modules de la phase d’analyse sont :
1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Chaque phase contient un certain nombre d’etapes (oumodules).
La sortie d’un module est l’entree du module suivant.
Les modules de la phase d’analyse sont :
1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Chaque phase contient un certain nombre d’etapes (oumodules).
La sortie d’un module est l’entree du module suivant.
Les modules de la phase d’analyse sont :
1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Chaque phase contient un certain nombre d’etapes (oumodules).
La sortie d’un module est l’entree du module suivant.
Les modules de la phase d’analyse sont :
1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Chaque phase contient un certain nombre d’etapes (oumodules).
La sortie d’un module est l’entree du module suivant.
Les modules de la phase d’analyse sont :
1 l’analyse lexicale.
2 l’analyse syntaxique.3 l’analyse semantique.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Chaque phase contient un certain nombre d’etapes (oumodules).
La sortie d’un module est l’entree du module suivant.
Les modules de la phase d’analyse sont :
1 l’analyse lexicale.2 l’analyse syntaxique.
3 l’analyse semantique.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Chaque phase contient un certain nombre d’etapes (oumodules).
La sortie d’un module est l’entree du module suivant.
Les modules de la phase d’analyse sont :
1 l’analyse lexicale.2 l’analyse syntaxique.3 l’analyse semantique.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Les modules de la phase de synthese sont :
1 la generation de code intermediaire.2 l’optimisation du code intermediaire.3 la generation du code cible.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Les modules de la phase de synthese sont :
1 la generation de code intermediaire.2 l’optimisation du code intermediaire.3 la generation du code cible.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Les modules de la phase de synthese sont :
1 la generation de code intermediaire.
2 l’optimisation du code intermediaire.3 la generation du code cible.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Les modules de la phase de synthese sont :
1 la generation de code intermediaire.2 l’optimisation du code intermediaire.
3 la generation du code cible.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Notion de compilation
Les phases de la compilation
Les modules de la phase de synthese sont :
1 la generation de code intermediaire.2 l’optimisation du code intermediaire.3 la generation du code cible.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.
2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.
3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.
2 le debogeur : pour chercher les bougues et en proposerdes solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
La creation d’un programme cible executable peutnecessiter, en plus du compilateur, plusieurs autresprogrammes, qui constituent l’environnement ducompilateur.
L’environnement d’un compilateur inclue principalement :
1 le pre-processeur.2 l’assembleur.3 le relieur-chargeur.
D’autres elements sont egalement utiles comme :
1 L’editeur de texte : pour saisir le texte du code source.2 le debogeur : pour chercher les bougues et en proposer
des solutions.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le pre-processeur
Un programme source peut etre divise en modules stockesdans des fichiers separes.
La tache consistant a reconstruire le programme sourceest parfois confie a un programme special, appelepre-processeur.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le pre-processeur
Un programme source peut etre divise en modules stockesdans des fichiers separes.
La tache consistant a reconstruire le programme sourceest parfois confie a un programme special, appelepre-processeur.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le pre-processeur
Un programme source peut etre divise en modules stockesdans des fichiers separes.
La tache consistant a reconstruire le programme sourceest parfois confie a un programme special, appelepre-processeur.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Taches realisees par un pre-processeur
1 Macro-expansion : definition de ”marcos-definitions”ou plus simplement ”macros”.
Exemple en C : #define MAX 1002 Inclusion de fichiers : inclusion d’en-tetes dans le texte
d’un programme.Exemple en C : #include <stdio.h>
3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”
ou plus simplement ”macros”.
Exemple en C : #define MAX 1002 Inclusion de fichiers : inclusion d’en-tetes dans le texte
d’un programme.Exemple en C : #include <stdio.h>
3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”
ou plus simplement ”macros”.Exemple en C : #define MAX 100
2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.
Exemple en C : #include <stdio.h>
3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”
ou plus simplement ”macros”.Exemple en C : #define MAX 100
2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.
Exemple en C : #include <stdio.h>
3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”
ou plus simplement ”macros”.Exemple en C : #define MAX 100
2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.
Exemple en C : #include <stdio.h>
3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Taches realisees par un pre-processeur1 Macro-expansion : definition de ”marcos-definitions”
ou plus simplement ”macros”.Exemple en C : #define MAX 100
2 Inclusion de fichiers : inclusion d’en-tetes dans le texted’un programme.
Exemple en C : #include <stdio.h>
3 Extensions de langages : extension des fonctionnalitesd’un langage par l’intermediaire de sortes de macrosintrinseques. Par exemple Equel est un langage derequettes de base de donnees qui est integre a C . Lesinstructions qui commencent par ## sont considereespar le pre-processeur comme des instructions d’acces a labase de donnees, qui n’ont rien avoir avec C .
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleur
Le compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.
Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2
MOVE a, R1ADD #2, R1MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2MOVE a, R1
ADD #2, R1MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2MOVE a, R1ADD #2, R1
MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
L’assembleurLe compilateur produit du code en langaged’assemblage, qui est traduit par un assembleur encode machine.Certains compilateurs produisent du code en langaged’assemblage qui doit etre confie a un assembleur, alorsque d’autres se chargent de cette phase et produientdirectement du code translatable.
Exemples 1.2
b := a + 2MOVE a, R1ADD #2, R1MOVE R1, b
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Quelques definitions
Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.
Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.
Code machine absolu : code machine non translatable.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Quelques definitions
Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.
Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.
Code machine absolu : code machine non translatable.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Quelques definitions
Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.
Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.
Code machine absolu : code machine non translatable.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Quelques definitions
Langage d’assemblage : version mnemonique de codemachine, dans laquelle on emploie des noms au lieu decodes binaires pour designer des operations, et danslaquelle on donne aussi des noms aux adresses memoires.
Code machine translatable : code machine qui peutetre charge en memoire a partir de n’importe quelleadresse A. Plus precisement, si l’on ajoute A a toutesadresses dans le code, toutes les references serontcorrectes.
Code machine absolu : code machine non translatable.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le relieur-chargeur
Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.
Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.
Cette operation est aussi appelee edition de lien.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le relieur-chargeur
Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.
Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.
Cette operation est aussi appelee edition de lien.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le relieur-chargeur
Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.
Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.
Cette operation est aussi appelee edition de lien.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le relieur-chargeur
Un programme cible peut etre constitue de plusieursfichiers objet translatables, et necessite parfois desbibliotheques.
Le role du Relieur-chargeur est de les assembler pourcreer le programme cible executable.
Cette operation est aussi appelee edition de lien.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le chargeur
Le chargement consiste a prendre du code machinetranslatable, a modifier les adresses translatables et aplacer les instructions et les donnees ainsi modifiees enmemoire, aux emplacements appropriees.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le chargeur
Le chargement consiste a prendre du code machinetranslatable, a modifier les adresses translatables et aplacer les instructions et les donnees ainsi modifiees enmemoire, aux emplacements appropriees.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le relieur
Le relieur permet de constituer un unique programme apartir de plusieurs fichiers contenant du code machinetranslatable.
Ces fichiers peuvent avoir ete produits par plusieurscompilations separees, et un ou plusieurs d’entre euxpeuvent etre des fichiers ou des routines de bibliotheque,fournis par le systeme et displonibles pour toutprogramme qui en a besoin.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le relieur
Le relieur permet de constituer un unique programme apartir de plusieurs fichiers contenant du code machinetranslatable.
Ces fichiers peuvent avoir ete produits par plusieurscompilations separees, et un ou plusieurs d’entre euxpeuvent etre des fichiers ou des routines de bibliotheque,fournis par le systeme et displonibles pour toutprogramme qui en a besoin.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Le relieur
Le relieur permet de constituer un unique programme apartir de plusieurs fichiers contenant du code machinetranslatable.
Ces fichiers peuvent avoir ete produits par plusieurscompilations separees, et un ou plusieurs d’entre euxpeuvent etre des fichiers ou des routines de bibliotheque,fournis par le systeme et displonibles pour toutprogramme qui en a besoin.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Figure: Schema de l’environnement d’un compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Environnement d’un compilateur
Figure: Schema de l’environnement d’un compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse lexicale (scanning)
L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :
un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.
La suite de caracteres composant une unite lexicale estappelee lexeme.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse lexicale (scanning)
L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :
un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.
La suite de caracteres composant une unite lexicale estappelee lexeme.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse lexicale (scanning)
L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :
un identificateur;
un mot cle;un caractere de ponctuation;un operateur, ...etc.
La suite de caracteres composant une unite lexicale estappelee lexeme.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse lexicale (scanning)
L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :
un identificateur;un mot cle;
un caractere de ponctuation;un operateur, ...etc.
La suite de caracteres composant une unite lexicale estappelee lexeme.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse lexicale (scanning)
L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :
un identificateur;un mot cle;un caractere de ponctuation;
un operateur, ...etc.
La suite de caracteres composant une unite lexicale estappelee lexeme.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse lexicale (scanning)
L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :
un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.
La suite de caracteres composant une unite lexicale estappelee lexeme.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse lexicale (scanning)
L’analyseur lexical lit les caracteres formant leprogramme source et les regroupe en un flot d’uniteslexicales, dont chacune represente une suite de caracteresformant un tout logiquement coherent, comme :
un identificateur;un mot cle;un caractere de ponctuation;un operateur, ...etc.
La suite de caracteres composant une unite lexicale estappelee lexeme.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
Figure: Analyse lexicale d’une instruction
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
Figure: Analyse lexicale d’une instruction
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;
une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;une instruction d’affectation;
une instruction de test ou de boucle;un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;
un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse syntaxique (parsing)
L’analyseur syntaxique prend en entree un flot d’uniteslexicales et fournit en sortie un ensemble d’unitessyntaxiques.
Une unite syntaxique reflete une construction du langagesource, par exemple :
une declaration ou une expression;une instruction d’affectation;une instruction de test ou de boucle;un appel de fonction, ...etc.
Les unites syntaxiques sont en general representees pardes arbres dits arbres syntaxiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
Figure: Analyse syntaxique d’une instruction
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
Figure: Analyse syntaxique d’une instruction
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse semantique
L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.
Il controle entre autres :
1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse semantique
L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.
Il controle entre autres :
1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse semantique
L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.
Il controle entre autres :
1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse semantique
L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.
Il controle entre autres :
1 le typage;
2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse semantique
L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.
Il controle entre autres :
1 le typage;2 le flot d’execution : branchements apres un break;
3 unicite des objets, des etiquettes, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase d’analyse
L’analyse semantique
L’analyseur semantique controle le code pour s’assurerqu’il est conforme aux specifications du langage.
Il controle entre autres :
1 le typage;2 le flot d’execution : branchements apres un break;3 unicite des objets, des etiquettes, ...etc.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.
Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.
Exemples de representations intermediaires :
Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.
Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.
Exemples de representations intermediaires :
Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.
Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.
Exemples de representations intermediaires :
Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.
Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.
Exemples de representations intermediaires :
Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.
Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.
Exemples de representations intermediaires :
Code a trois adresses.
AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le generateur de code intermediaire construitexplicitement une representation intermediaire duprogramme source.
Cette representation intermediaire doit etre facile aproduire et facile a traduire en langage cible.
Exemples de representations intermediaires :
Code a trois adresses.AST : (Abstract Syntax Tree) arbre de syntaxeabstrait.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20
temp2 := c ∗ temp1temp3 := b + temp2a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20temp2 := c ∗ temp1
temp3 := b + temp2a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2
a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code intermediaire
Le code a trois adresses est similaire au langaged’assemblage d’une machine dans laquelle chaqueemplacement memoire peut jouer le role d’un registre.
Un fragment de code a trois adresses consiste en unesequence d’instructions, dont chacune a au plus 3operandes.
Exemples 1.3
temp1 := 20temp2 := c ∗ temp1temp3 := b + temp2a := temp3
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
L’optimisation de code intermediaire
L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.
Exemples 1.4
Le code precedent est optimise ainsi :
temp1 := c ∗ 20a := b + temp1
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
L’optimisation de code intermediaire
L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.
Exemples 1.4
Le code precedent est optimise ainsi :
temp1 := c ∗ 20a := b + temp1
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
L’optimisation de code intermediaire
L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.
Exemples 1.4
Le code precedent est optimise ainsi :
temp1 := c ∗ 20a := b + temp1
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
L’optimisation de code intermediaire
L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.
Exemples 1.4
Le code precedent est optimise ainsi :
temp1 := c ∗ 20a := b + temp1
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
L’optimisation de code intermediaire
L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.
Exemples 1.4
Le code precedent est optimise ainsi :
temp1 := c ∗ 20
a := b + temp1
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
L’optimisation de code intermediaire
L’optimiseur de code intermediaire tente d’ameliorerle code intermediaire de facon que le code machineresultant s’execute le plus rapidement possible.
Exemples 1.4
Le code precedent est optimise ainsi :
temp1 := c ∗ 20a := b + temp1
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.
Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.
Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.
Un aspect crucial de ce processus est l’assignation devariables aux registres.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.
Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.
Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.
Un aspect crucial de ce processus est l’assignation devariables aux registres.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.
Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.
Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.
Un aspect crucial de ce processus est l’assignation devariables aux registres.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.
Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.
Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.
Un aspect crucial de ce processus est l’assignation devariables aux registres.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Le generateur de code cible produit le code cible,c’est-a-dire du code machine translatable ou du codeen langage d’assemblage.
Les emplacements memoire pour chacune des variablesutilisees dans le programme sont selectionnees.
Les instructions intermediaires sont traduites en une suited’instructions machine qui effectuent la meme tache.
Un aspect crucial de ce processus est l’assignation devariables aux registres.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2
MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2MUL #20, R2
MOVE b, R1ADD R2, R1MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2MUL #20, R2MOVE b, R1
ADD R2, R1MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1
MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
La phase de synthese
La generation de code cible
Exemples 1.5
Le code optimise est traduit en langage d’assemblage.
On utilise les registres effectifs de la machine.
MOVE c, R2MUL #20, R2MOVE b, R1ADD R2, R1MOVE R1, a
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.
Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.
La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.
Un enregistrement de la table des symboles contient uncertain nombre d’attributs.
Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.
Cette fonction est assuree par un module appelegsetionnaire des erreurs.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.
Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.
La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.
Un enregistrement de la table des symboles contient uncertain nombre d’attributs.
Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.
Cette fonction est assuree par un module appelegsetionnaire des erreurs.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.
Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.
La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.
Un enregistrement de la table des symboles contient uncertain nombre d’attributs.
Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.
Cette fonction est assuree par un module appelegsetionnaire des erreurs.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.
Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.
La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.
Un enregistrement de la table des symboles contient uncertain nombre d’attributs.
Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.
Cette fonction est assuree par un module appelegsetionnaire des erreurs.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.
Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.
La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.
Un enregistrement de la table des symboles contient uncertain nombre d’attributs.
Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.
Cette fonction est assuree par un module appelegsetionnaire des erreurs.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.
Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.
La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.
Un enregistrement de la table des symboles contient uncertain nombre d’attributs.
Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.
Cette fonction est assuree par un module appelegsetionnaire des erreurs.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Une fonction importante d’un compilateur estd’enregistrer les unites lexicales et de collecter lesinformations sur ces unites.
Un module qui permet d’assurer cette fonction s’appellele gsetionnaire de la table des symboles.
La table des symboles est une structure de donneescontenant un enregistrement pour chaque unite lexicale.
Un enregistrement de la table des symboles contient uncertain nombre d’attributs.
Une autre fonction fondamentale d’un compilateur est lagestion des erreurs de programmation.
Cette fonction est assuree par un module appelegsetionnaire des erreurs.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Schema global d’un compilateur
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation
Caracteristiques d’un bon compilateur
1 Le code cible produit doit etre correct.
2 Le code produit est bien optimise.
3 L’executable est rapide.
4 Le processus de compilation est rapide.
5 Permettre la compilation separee.
6 Avoir un tres bon debogueur.
7 Detecter le plus grand nombre possible des erreurssemantiques.
Prof. Abdelmajid Dargham Chapitre 4 : Introduction a la compilation