Compilateurs Phases de Compilation dun compilateur Qualite Outils pour la construction de compilateurs
` la compilation Introduction a
2011-2012
1 / 19
Compilateurs
Introduction
Evolution des langages Langage machine Langage assembleur : Langages evolu es
Algorithmiques : C, PASCAL, ADA Logiques : PROLOG
`me eration Langages de 4e gen
Quest ce quun compilateur ? Un compilateur est un programme qui lit un programme ecrit dans un premier langage (langage source) et le traduit en un programme equivalent ecrit dans un autre langage (le langage cible).
Yousra Bendaly Hlaoui (ISITCOM) ` la compilation Introduction a 2011-2012 2 / 19
Compilateurs
Introduction
PSource
Compilateur
PAssembleur
Messages derreur
` la compilation Introduction a
2011-2012
3 / 19
Phases de Compilation
1. Phases de compilation
Phase de production eration Gen de code intermediaire Optimisation de code eration Gen de code
` la compilation Introduction a
2011-2012
4 / 19
Phases de Compilation
PCible
Yousra Bendaly Hlaoui (ISITCOM) ` la compilation Introduction a 2011-2012 5 / 19
Phases de Compilation
Partie frontale
Phases de Compilation
Partie frontale
Gnration de code intermdiaire
PLI
2011-2012
6 / 19
Phases de Compilation
3. Analyse lexicale
Analyse lexicale ou lineaire ` Au cours de laquelle le ot de caracteres formant le programme ` droite. source est lu de gauche a ` en unites lexicales qui sont une Ce ot de caracteres est groupe ` suite de caracteres ayant une signication collective lexicales (tokens) : identicateurs, constantes, Ces unites ` operateurs, separateurs (parentheses ou points virgules) ou mots clefs du langage
Flot de caractres
Analyseur Lexical
` la compilation Introduction a
2011-2012
7 / 19
Phases de Compilation
3. Analyse lexicale
` Regroupe les caracteres formant cette instruction en des unites lexicales qui sont les suivantes :
1 2 3 4 5 6 7
Lidenticateur position ; Le symbole daffectation := ; Lidenticateur initiale ; Le signe + ; Lidenticateur vitesse ; Le signe * ; Le nombre 60 ;
` la compilation Introduction a
2011-2012
8 / 19
Phases de Compilation
4. Analyse syntaxique
Analyse syntaxique, hierarchique ou grammaticale ` regrouper les unites lexicales du programme source en Consiste a par le compilateur structures grammaticales qui seront utilisees pour synthetiser le resultat par un arbre Les phrases grammaticales sont represent ees syntaxique dont les feuilles concordent avec la suite dunites ` droite. lexicales en les parcourant de gauche a
PSOURCE
Analyseur Lexical
Unit lexicale
Obtenir prochaine unit lexicale
Analyseur Syntaxique
Phases de Compilation
4. Analyse syntaxique
Exemple er ee par la Linstruction position := initiale + vitesse*60 est gen grammaire :
P id := Exp ; Exp id |nb|(Exp)|Exp + Exp|Exp Exp
Exp nombre
2011-2012 10 / 19
` la compilation Introduction a
Phases de Compilation
5. Analyse semantique
` certains controles Dans cette phase, on opere (controles de type, par exemple) an de verier que lassemblage des constituants du programme a un sens. On ne peut pas, par exemple, additionner avec une cha ` ` un reel ne de caracteres, ou affecter une variable a un nombre. de type, lanalyseur semantique Dans le controle peut inserer des operations de conversion pour les expressions dentier vers reel. Nous distinguons deux types derreurs semantiques :
ees au moment de la compilation semantiques statiques : control incompatibilite de type, portee dune (variable non declar ee, variable) ees au moment de lexecution semantiques dynamiques : control (division par zero, boucles innies, debordement memoire)
` la compilation Introduction a
2011-2012
11 / 19
Phases de Compilation
5. Analyse semantique
Exemple ee : Une Contrainte semantique doit etre veri
a ` deux operandes Loperateur de multiplication doit etre applique de reel) meme type (entier, entier) ou (reel, et 60 est un nombre entier, Pour notre exemple, Vitesse est un reel (60.0) il faut alors convertir 60 dentier vers reel
Var position, Initiale, Vitesse : rel; Analyseur Smantique Table des id de variables
N 1 2 3 Lexme Position Initiale Vitesse Type Rel Rel Rel
Exp nombre
entier vers rel
60 60.0
` la compilation Introduction a
2011-2012
12 / 19
Phases de Compilation
` trois adresses Exemple : traduction en un code a el (60) ; Temp1 := EntierVersR e Temp2 := Temp1 id 3 ; Temp3 := id 2 + Temp2 ; id 1 := Temp3 ;
Yousra Bendaly Hlaoui (ISITCOM) ` la compilation Introduction a 2011-2012 13 / 19
Phases de Compilation
7. Optimisation de code
Optimisation de code Cette phase tente dameliorer le code produit de telle sorte que le programme resultant soit plus rapide : elimination du code dune propagation des constantes, extraction fonction jamais appelee, des boucles des invariants de boucle. Exemple Temp1 := id 3 60.0 ; id 1 := id 2 + Temp1 ;
` la compilation Introduction a
2011-2012
14 / 19
Phases de Compilation
eration Gen de code cible Il sagit de produire les instructions en langage cible qui est dans ce cas deni par le type de processeur utilise. Exemple eration Gen de code intermediaire (Machine VON NEUMAN) ` registres Machine a
MOVF id3, R2 MULF 60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1
` la compilation Introduction a
2011-2012
15 / 19
Phases de Compilation
` 9. Phases paralleles
1. Gestion de la table des symboles La table des symboles Contient des informations sur les differents symboles et les attributs associes. (ou reserv et les identicateurs de Par exemple les mots cles es) lexicale id et leurs attributs : type, variables en speciant lunite adresse, etc lexicale id est trouvee par lAL, le A chaque fois quune unite ` est inser e dans la table des symboles sil na pas lexeme associe e dej a ` inser e et lAL retourne id et un pointeur vers une entree et de la table des symboles.
` la compilation Introduction a
2011-2012
16 / 19
Phases de Compilation
` 7. Phases paralleles
2. Gestion des erreurs Chaque phase peut rencontrer des erreurs. Il sagit de les ement detecter et dinformer lutilisateur le plus precis possible : erreur de syntaxe, erreur de semantique... Un compilateur qui se contente dafcher syntax error napporte pas beaucoup daide lors de la mise au point.
` la compilation Introduction a
2011-2012
17 / 19
` la compilation Introduction a
2011-2012
18 / 19
Yacc
Lex
` la compilation Introduction a
2011-2012
19 / 19