0% ont trouvé ce document utile (0 vote)
26 vues18 pages

Introduction à la compilation et ses phases

Un compilateur traduit un programme d'un langage source à un langage cible en deux parties : l'analyse et la synthèse, tout en rapportant les erreurs. Les phases de compilation incluent l'analyse lexicale, syntaxique, sémantique, la génération de code intermédiaire, l'optimisation et la génération de code final. En parallèle, la gestion des symboles et la détection des erreurs sont essentielles pour assurer la cohérence et la continuité de la compilation.

Transféré par

tapsobajacob18
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues18 pages

Introduction à la compilation et ses phases

Un compilateur traduit un programme d'un langage source à un langage cible en deux parties : l'analyse et la synthèse, tout en rapportant les erreurs. Les phases de compilation incluent l'analyse lexicale, syntaxique, sémantique, la génération de code intermédiaire, l'optimisation et la génération de code final. En parallèle, la gestion des symboles et la détection des erreurs sont essentielles pour assurer la cohérence et la continuité de la compilation.

Transféré par

tapsobajacob18
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Technique de compilation

Enseignants : Mohamed Zeba


Généralités sur la compilation
Un compilateur

Un compilateur est un programme qui lit un programme écrit dans un


premier langage (le langage source) et le traduit en un programme équivalent
dans un autre langage (le langage cible).

Un compilateur est également un rapporteur des erreurs contenues dans le


code source.

Lors des différentes étapes d'analyse, il vérifie le code et signale les


éventuelles erreurs.
Un compilateur

Une compilation s’effectue en deux parties: l’analyse et la synthèse.


Exemples de langages compilés : Fortran, C, Ada, C++
Un compilateur

○ La partie d’analyse partitionne le programme source en ses constituants


et en crée une représentation intermédiaire.
○ La partie de synthèse construit le programme cible à partir de cette
représentation intermédiaire.
Un interpréteur

Un interpréteur analyse une à une les instructions d'un programme, les traduit
et les exécute.
○ L’interpréteur doit être présent sur le système où le programme
s’exécute
○ L’exécution est plus lente
○ On peut modifier le source pendant l’exécution
Génération des langages

● Première génération
Écrit en code binaire directement exécutable par la machine
● Deuxième génération
Écrit en assembleur, code proche du langage machine mais plus lisible
● Troisième génération
Syntaxe plus proche du naturel, meilleur lisibilité (ex: C, python,
Java,...)
● Quatrième génération (SQL, Visual Basic, Postscript,...)
● Cinquième génération (Prologue, OPS5,...)
Phases de la compilation

Analyse lexicale

Première phase de la compilation, cette phase permet de décomposer le code


source en entités élémentaires appelées lexèmes (ou tokens en anglais). Un
lexème est une suite de caractères ayant une signification précise et
appartenant à des catégories prédéfinies appelées unités lexicales.
Phases de la compilation

Analyse lexicale

Le but est de reconnaître une séquence de mots appartenant à un langage


défini à l’aide d’une expression régulière. On utilise pour cela des techniques
utilisant des automates finis.
Entrée: code source
Sortie: Séquence de lexèmes

Exemple: TD
Phases de la compilation

Analyse lexicale
Exemple: A = B1 + B2 * 60

A =: identificateur
= =: affection
B1 =: identificateur
+ =: opérateur arithmétique (addition)
B2 =: identificateur
* =: opérateur arithmétique (multiplication)
60 =: nombre
Phases de la compilation

Analyse syntaxique

Seconde phase de la compilation, elle vérifie si l'écriture du programme


source est conforme à la syntaxe du langage. La syntaxe d’un langage peut
être décrite par une grammaire. Cette grammaire décrit comment les unités
lexicales doivent être agencées. Les unités lexicales sont regroupés en unités
grammaticales.

Entrée: unités lexicales


Sortie: arbre syntaxe
Phases de la compilation

Analyse syntaxique
Exemple d'arbre abstrait
Phases de la compilation

Analyse sémantique

Elle contrôle la cohérence sémantique du programme source(analyser le


sens et fixer une interprétation)

La génération de code intermédiaire

Traduit l’arbre de syntaxe abstraite en un code pour une machine


abstraite
Phases de la compilation

Optimisation de code intermédiaire

Améliore la performance du code. Réalise les optimisations


indépendantes de l’architecture

Génération de code Final

La génération de code final traduit le langage intermédiaire en un


langage machine dépendant de l’architecture
Phases de la compilation

En parallèle des six phases citées plus hauts, nous avons deux traitements qui
s’effectuent:

Gestion d’une table de symbole

Elle contient les identificateurs des variables et attributs (type, valeur, portée,
…)

Détection des erreurs

La génération de code final traduit le langage intermédiaire en un


langage machine dépendant de l’architecture
Phases de la compilation

Détection des erreurs

Le compilateur doit traiter les erreurs de façon à ce que la compilation puisse


continuer.
Résumé
Résumé

Vous aimerez peut-être aussi