Académique Documents
Professionnel Documents
Culture Documents
Introduction à la
compilatio
n
2 BI
IHET
Objectifs
• Présenter les principes de base a la réalisation de compilateurs
( analyse lexicale, syntaxique et semantique et
génération du code)
• Présenter les outils fondamentaux utilisés pour effectuer ces
analyses ( expressions régulières, automates, grammaires,….)
Compilation 2
Plan du module :
• Leçon 1: Introduction à la compilation
Compilation 3
Organisation de la matière
• Présence obligatoire en Cours et TD (éliminatoire)
• Pas de téléphone,
• Questions bienvenues
• Examen en Mai
Compilation 4
Un Compilateur
• Tout programme utilise outil essentiel à la réalisation des programmes
un informatiques.
premier langage en un programme équivalent écrit dans un autre langage (source ->
cible):
LHN ->LHN
LBN-> LHN (pirqtqge, récupération de vieux logiciels…)
Langage quelconque -> langage quelconque (word->HTML, PDF->Ps..
Compilation 5
Un Compilateur vs un interpréteur
Interpréteur = outil qui analyse, traduit, mais aussi exécute un programme écrit dans
un langage informatique.
L’interpréteur se charge donc également de l’exécution au fur et à mesure de son
interprétation.
Compilation 6
Un Compilateur
Compilation 7
Un Compilateur
Un compilateur= vérificateur et traducteur
Compilation 8
Un Compilateur
• Un compilateur signale de plus toute erreur contenue dans le programme
source.
Compilation 10
Qu’attend-on d’un compilateur ?
(2)
Chaque phase peut rencontrer des erreurs. Il faut détecter et informer l’utilisateur le plus
précisément possible.
Plusieurs types d’erreurs :
Erreurs lexicales : fautes d’orthographe dans un ident ou dans un mot clé ,
caractéres
illégaux,…
Erreurs syntaxiques : manque de parenthéses dans une expression arithmétique,
erreurs de structures de blocs, manque de séparateur,….
Erreurs sémantiques : identificateur non déclarée, incompatibilité entre opérateurs et
opérandes,…..
Erreurs logiques : erreurs arithmétiques : division par zéro, racine carré d’un nombre
négatif, dépassement des limites d’un tableau, boucle infinie,…
Compilation 11
Qu’attend-on d’un compilateur?
(3)
Efficacité
Le doit êtr si rapide particulier ne
e possible (en pas
compilateur
boucler) doit produir un code qui s’exécutera aussi
e
Le
rapidement que possible
compilateur
Correction
Le programme compilé doit représenter le même calcul que le programme
original.
Nécessite d’avoir une description indépendante des calculs représentés par les
programmes du langage source.
Compilation 12
Phases de compilation
Compilation 13
Phases de compilation
Compilation découpée en 2 étapes
1 L’analyse décompose et identifie les éléments et relations du programme source et
construit son image (représentation hiérarchique du programme avec ses relations),
2 La synthèse qui construit à partir de l’image un programme en langage cible.
Contenu de la table des symboles
Un enregistrement par identificateur du programme à compiler contenant les valeurs des
attributs pour le décrire.
Remarque
En cas d’erreur, le compilateur peut essayer de se resynchroniser pour éventuellement
essayer de reporter d’autres erreurs.
Compilation 14
Phases de compilation
Un compilateur se construit en plusieursphases:
Phase d ’analyse (Partie frontale / En avant)
Analyse syntaxique :
Transforme une suite un arbre de syntaxe abstraite
de caractères
représentant en des opérations à effectuer.
la description (ast)
Combinaison de l’analyse lexicale qui reconnait des “mots” aussi appelés token
ou entités et de l’analyse syntaxique qui reconnait des phrases bien formées.
Compilation 15
Phases de compilation
Compilation 16
Phases de compilation
Compilation 17
Phase
d’analyse
Analyse lexicale (linéaire)
Reconnaître les types des motslus
Compilation 19
Phase
d’analyse
Définition (Unité lexicale (ou token))
Type générique d’éléments lexicaux (correspond à un ensemble de strings
ayant une sémantique proche).
Exemple : identificateur, opérateur relationnel, mot clé “begin”...
Compilation 20
Phase
d’analyse
Opérateurs des expressions régulières :
. : concaténation (généralement omis)
+ : union
*: répétition (0,1,2, ... fois) = (fermeture de Kleene)
Compilation 21
Phase
d’analyse
Exemple (d’unités lexicales et de
lexèmes)
Compilation 22
Phase
d’analyse
Analyse syntaxique(Hiérarchique/Grammaticale)
Vérifier que les unités lexicales sont dans le bon ordre défini par le
langage
Découvrir la structure du programme.
IDENT
OP_REL
ENTIER
Il doit
Compilation signaler une erreur car il n’y a pas ( (parenthèse 23
Phase
d’analyse
Exemple: L’arbre suivant représente la structure de la phrase:
Val:= Val + 20;
Instruction
Affectation
Compilation 24
Phase
d’analyse
Compilation 25
Phase
d’analyse
Analyse sémantique (Contextuelle/Vérification de type)
Vérifier que les variables ont un type correct.
Cette opération s’effectue en parcourant l’arbre syntaxique et en vérifiant à chaque
niveau que les operations sont correctes.
Compilation 26
Phase
d’analyse
Compilation 27
Phase
d’analyse
Compilation 28