Académique Documents
Professionnel Documents
Culture Documents
3 Cours Compilation
Objectif
POURQUOI?
QUOI?
COMMENT?
4 Cours Compilation
plan
❖Définition: compilateur
❖Analyse lexicale (linéaire)
❖Analyse syntaxique (hiérarchique)
❖Analyse sémantique
❖Génération du code intermédiaire
❖Optimisation du code
❖Génération du code objet
5 Cours Compilation
POURQUOI? (1)
❖Comment procéder ?
6 Cours Compilation
POURQUOI? (2)
8 Cours Compilation
QUOI? (1)
messages
d'erreur
9 Cours Compilation
QUOI? (2)
10 Cours Compilation
COMMENT? (1)
Et comment ça marche ?
Comme un enfant qui apprend à lire...
❖On reconnait d'abord les mots
➔Analyse Lexicale
❖Puis, on vérifie que tous les mots sont dans le bon
ordre
➔Analyse Syntaxique
❖Enfin, on vérifie que tout ceci a un sens
➔Analyse Sémantique
11 Cours Compilation
Structure Globale
En deux parties :
❖analyse/reconnaissance
❖synthèse/transformation
Partie Partie
Texte Rep Texte
Avant Arrière
source sémantique cible
(analyse) (synthèse)
12 Cours Compilation
Les phases de la compilation
programme source
analyseur lexical
analyseur syntaxique
analyseur sémantique
gestion de la
table des symboles générateur de code intermédiaire gestion des erreurs
"optimiseur" de code
programme cible
13 Cours Compilation
Analyse lexicale (1)
14 Cours Compilation
Analyse lexicale (2)
15 Cours Compilation
Analyse lexicale (3)
Table de
symboles
16 Cours Compilation
Analyse lexicale (4)
❖Exemple:
position := initiale + vitesse*60
<id1,1> <aff,:=> <id2,2> <op,+> <id3,3> <op,*>
<nb,60>
Table de symboles
1 position …
2 initial …
3 rate …
17 Cours Compilation
Analyse lexicale(5)
expressions régulières
18 Cours Compilation
Analyse lexicale(6)
19 Cours Compilation
Analyse syntaxique(1)
20 Cours Compilation
Analyse syntaxique(2)
❖ Exemple: (Arbre d’Analyse Descendante )
Affectation
id := expr
id expr * expr
initiale id nombre
vitesse 60
21 Cours Compilation
Analyse sémantique(1)
l’arbre abstrait
Analyse contrôles
la table de symboles Sémantique sémantiques
22 Cours Compilation
Analyse sémantique(2)
parmi lesquels :
23 Cours Compilation
Analyse sémantique(2)
❖Exemple:
:= :=
id1 + id1 +
id2 * id2 *
60
24 Cours Compilation
Génération du code intermédiaire
25 Cours Compilation
Optimisation du code
temp1:=EntierVersReel(60)
temp2:=id3*temp1 temp1:= id3 * 60.0
temp3:=id2+temp2 id1:= id2 + temp1
id1:=temp3
26 Cours Compilation
Génération du code machine
MOVF id3, R2
MULF #60.0, R2
temp1:= id3 * 60.0 MOVF id2, R1
id1:= id2 + temp1 ADDF R2, R1
MOVF R1, id1
27 Cours Compilation
Récapitulatif...
temp1:=EntierVersReel(60)
temp2:=id3*temp1
position := initiale + vitesse * 60 Analyseur
temp3:=id2+temp2
sémantique
id1:=temp3
Analyseur lexical :=
id1 + Optimiseur de
id1 := id2 + id3 * 60 code
id2 *
Analyseur temp1:= id3 * 60.0
syntaxique id3 EntToReel id1:= id2 + temp1
60
Générateur de
:= code
Générateur code
id1 + intermédiaire MOVF id3, R2
MULF #60.0, R2
id2 * MOVF id2, R1
ADDF R2, R1
id3 60 MOVF R1, id1
28 Cours Compilation
TAF
RECHERCHE
LEX/YACC
ANTLR
29 Cours Compilation