Anda di halaman 1dari 20

Chapitre I ` la Compilation Introduction a

Compilateurs Phases de Compilation dun compilateur Qualite Outils pour la construction de compilateurs

Yousra Bendaly Hlaoui (ISITCOM)

` 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

Au cours de ce processus de traduction


` son utilisateur la presence Le compilateur signale a derreurs dans le programme source.

PSource

Compilateur

PAssembleur

Messages derreur

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

3 / 19

Phases de Compilation

1. Phases de compilation

On distingue deux categories :


Phases danalyse
une Partitionne le programme source en ses constituants et en cree representation intermediaire.

` ou de production Phases de synthese


` partir de la representation Construit le programme cible a intermediaire.

Phase danalyse Analyse lexicale Analyse syntaxique Analyse semantique

Phase de production eration Gen de code intermediaire Optimisation de code eration Gen de code

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

4 / 19

Phases de Compilation

2. Structure dun compilateur


PSource
Analyse lexicale Gestion de la table de symboles Analyse Syntaxique Analyse smantique Gnration de code intermdiaire Table des identificateurs, mots rservs et constantes Optimisation de code Gnration de code machine Gestion des erreurs

PCible
Yousra Bendaly Hlaoui (ISITCOM) ` la compilation Introduction a 2011-2012 5 / 19

Phases de Compilation

2. Structure dun compilateur


PSOURCE

Partie frontale

Partie terminale PASSEMBLEUR


Yousra Bendaly Hlaoui (ISITCOM) ` la compilation Introduction a 2011-2012 6 / 19

Phases de Compilation

2. Structure dun compilateur


PSOURCE
Analyse

Partie frontale
Gnration de code intermdiaire

PLI

Partie terminale PASSEMBLEUR


Yousra Bendaly Hlaoui (ISITCOM) ` la compilation Introduction a

Gnrateur de code machine

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

Flot dunits lexicales

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

7 / 19

Phases de Compilation

3. Analyse lexicale

Exemple Lanalyse lexicale de linstruction daffectation :


position := initiale + vitesse*60

` 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 ;

Yousra Bendaly Hlaoui (ISITCOM)

` 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

Table des Symboles


Yousra Bendaly Hlaoui (ISITCOM) ` la compilation Introduction a 2011-2012 9 / 19

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

ere ` larbre syntaxique suivant : Lanalyse syntaxique gen

P id := Exp Exp + Exp id Exp id


Yousra Bendaly Hlaoui (ISITCOM)

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)

Yousra Bendaly Hlaoui (ISITCOM)

` 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

P id := Exp Exp + Exp id Exp id


*

Exp nombre
entier vers rel
60 60.0

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

12 / 19

Phases de Compilation

eration 6. Phase de gen de code intermediaire


eration Phase de gen de code intermediaire Au cours de laquelle la sequence dinstructions du programme est traduite en une sequence dinstructions dans un langage ` pile, le langage C, ) intermediaire (le langage pour machine a La representation intermediaire doit avoir etre :
1 2

` produire facile a ` traduire en langage cible facile a

` 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 ;

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

14 / 19

Phases de Compilation

eration 8. Gen de code cible

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

Yousra Bendaly Hlaoui (ISITCOM)

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

Yousra Bendaly Hlaoui (ISITCOM)

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

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

17 / 19

dun compilateur Qualite

dun compilateur Qualite

Fournir le maximum derreurs en une seule compilation Rapidite

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

18 / 19

Outils pour la construction de compilateurs

Outils pour la construction de compilateurs


Ecriture en langage evolu e Constructeurs automatiques de compilateurs : LEX et YACC

Gnrateur automatique danalyseur syntaxique Grammaire non contextuelle du langage

Yacc

Analyseur Syntaxique crit en C ou en LPascal Gnrateur automatique danalyseur lexical

Description des units lexicales du langage

Lex

Analyseur lexical crit en C ou en LPascal

Yousra Bendaly Hlaoui (ISITCOM)

` la compilation Introduction a

2011-2012

19 / 19

Anda mungkin juga menyukai