Compilation
• • • • • • 1.1 Les compilateurs 1.2 L'analyse de la source 1.3 Les phases d'un compilateur 1.4 Les cousins du compilateur 1.5 Le regroupement des phases 1.6 Les outils logiciels de compilation
1.1 Les compilateurs
programme source
compilateur
programme cible
messages d'erreur
1
• Langages source : Fortran, Pascal,C Cobol Langages spécialisés : S.Q.L., TeX, Maple • Langages cible : Langage machine Code intermédiaire Autre langage de programmation
Programme source Analyse
= relativement bien théorisé
Représentation intermédiaire (arbre) Synthèse
= beaucoup plus spécialisé
Programme cible
2
• Autres logiciels d'analyse : Éditeurs structurels
Aide à l'écriture d'un programme
Paragrapheurs
Mise en forme du programme source
Contrôleurs statiques
Aide au débogage
Interpréteurs
Pour langages spécifiques, Basic, A.P.L., langages de commandes, TeX, Maple, interprètes de requêtes Comme aide à la programmation, Pascal interprété
squelette du programme
préprocesseur programme source
Environnement du compilateur
compilateur programme cible (langage d'assemblage)
assembleur code translatable
bibliothèques, objets en code translatable
relieur-chargeur code absolu
3
1.2 L'analyse du programme source Découpage en trois phases : i) Analyse lexicale flot de caractères regroupés en unités lexicales
ii) Analyse syntaxique regroupement des unités lexicales en unités grammaticales
iii) Analyse sémantique contrôle ou établissement de la cohérence sémantique
Exemple d'analyse
aire:=base*hauteur/2 analyse lexicale
aire
:=
base
*
hauteur
/
2
analyse syntaxique affectation identificateur aire := expression identificateur base expression * expression identificateur hauteur expression / expression nombre 2
4
:= aire base hauteur * /
Arbre abstrait
2
analyse sémantique Contrôle de type, coercicion EntierVersRéel
2
1.3 Les phases d'un