Vous êtes sur la page 1sur 4

Chap I : Structure dun compilateur

I. Dfinition : Un compilateur est un programme qui prend en entre un programme source et produit la sortie un programme excutable ; Prog source (Java, C++, C,..) Compilateur Prog excutable

Un compilateur passe par les tapes suivantes :

II. Les phrases dun compilateur : 1. Analyse lexicale (scan) : Elle consiste couper le programme source en des lexmes (un lexme est la plus petit entit qui a un sens dans le langage de programme, un lexme peut tre une affectation, une comparaison, un identificateur...) Les AF permettent de mettre en uvre cette tape. 2. Analyse syntaxique (parse) : Cette tape consiste vrifier que les expressions crite dans le programme source sont bien forms. Le parseur prend en entre les lexmes et vrifie les manires dcriture sont conforme

la grammaire du langage de programme source. Gnralement la syntaxe des langages de programmation est dcrite par une grammaire hors contexte. Remarque : Les tapes de scan et de parse se font en mme temps. 3. Analyse smantique : Permet de vrifier que lexpression a un sens dans le langage source gnralement la smantique dun langage de programme est dcrite par une grammaire sensible au contexte. Remarque : Les trois premires tapes prcdentes sont appels le front-End du compilateur. Elles sont gnralement automatises grce lapplication des rsultats du TLA. 4. Gnration du code intermdiaire : A partir des instructions crites dans le programme source le compilateur gnre un code intermdiaire pour pouvoir lexcuter. Exemple : Poste := initial + vitesse * 60 ; [id1] := [id2] [+] [id3] [*] [nombre] ;

5. Optimisation du code : Il sagit dliminer les oprations inutiles dans le code intermdiaire gnrer Temps1 := [id3]*nb ; [id1] := [id2] +temp1 ; 6. Gnration du code cible : Il sagit de partir dune reprsentation intermdiaire optimis pour aboutir un code assembleur ou directement du code binaire. Exemple : MOVF MULF id1, R3 #60, R3

MOVF id2, R2 ADDF R3, R1

MOVF R1, id3

III. Lenvironnement dun compilateur :

IV. Outils logiciels : Plusieurs outils sont disponibles pour aider construire des compilateurs : Par exemple : - Gnrateur danalyseur lexicaux : ces outil engendre un analyseur lexical sous forme dexpression rationnel (Exemple : Flex, Lex) - Gnrateurs danalyseurs syntaxiques : engendre des analyseurs syntaxiques partir dune grammaire (Exemple : Yacc, Boison) - Gnrateurs de traducteurs : engendrer un traducteur partir de grammaire et de rgle smantique (Exemple : Yacc, Boison).

ChapII : Analyse lexicale

Lanalyse lexicale permet de : -Eliminer les caractres inutiles tels que caractre de retour la ligne, tabulation, commentaire. -Identifier et trouver les parties dinstructions qui sont destins au compilateur tels que : #definie #include. -Identifier les symboles reprsentant les identificateurs, les constantes, les rels -Identifier les mots cls du langage.

Vous aimerez peut-être aussi