Compilateur

Un compilateur est un programme qui traduit le code source en code objet pour être compris par une unité centrale de traitement (CPU) spécifique. Le fait de traduire le code source en code objet est appelé compilation. La compilation est généralement utilisée pour les programmes qui traduisent le code source d'un langage de programmation de haut niveau (tel que C ++) vers un langage de programmation de bas niveau (tel que le code machine) pour créer un programme exécutable. De même, lorsqu'une langue de bas niveau est convertie en une langue de haut niveau, le processus est appelé décompilation.


Phases d'un compilateur

Un compilateur exécute ses processus en phases pour promouvoir une conception efficace et corriger les transformations de l'entrée source en sortie cible. Les phases sont les suivantes:

1. Analyseur lexical

Il est également appelé un scanner. Le compilateur convertit la séquence de caractères qui apparaissent dans le code source en une série de caractères de chaîne appelés jetons. Ces jetons sont définis par des expressions régulières qui sont comprises par l'analyseur lexical. Il supprime également les erreurs lexicales, les commentaires et les espaces.

2. Analyseur de syntaxe

L'analyseur de syntaxe construit l'arbre d'analyse, qui est construit pour vérifier l'ambiguïté dans la grammaire donnée. L'analyseur de syntaxe prend tous les jetons un par un et utilise la grammaire sans contexte pour construire l'arbre d'analyse. Une erreur de syntaxe peut être détectée si l'entrée n'est pas conforme à la grammaire.

3. Analyseur sémantique

L'analyseur sémantique vérifie l'arbre d'analyse construit par l'analyseur de syntaxe. Il effectue également la vérification du type, la vérification des étiquettes et la vérification du contrôle de flux.

4. Générateur de code intermédiaire

Le générateur de code intermédiaire génère un code intermédiaire à exécuter par une machine. Le code intermédiaire est converti en langage machine à l'aide des deux dernières phases, qui dépendent de la plate-forme.

5. Optimiseur de code

L'optimiseur de code transforme le code afin qu'il consomme moins de ressources et produise plus de vitesse. La signification du code en cours de transformation n'est pas modifiée.

6. Générateur de code cible

Il s'agit de la dernière étape de la dernière étape de la compilation. Le générateur de code cible écrit un code qu'une machine peut comprendre et enregistre également l'allocation, l'instruction et la sélection. La sortie dépend du type d'assembleur. Le code optimisé est ensuite converti en code machine, formant l'entrée de l'éditeur de liens et du chargeur.

Types de compilateurs

Il existe de nombreux types de compilateurs, tels que:

  • Compilateur croisé: Le programme compilé s'exécute sur un ordinateur qui a un système d'exploitation ou un processeur différent de celui sur lequel le compilateur s'exécute. Il est capable de créer du code pour une plate-forme autre que celle sur laquelle le compilateur s'exécute
  • Compilateur source vers source: Également connu sous le nom de transcompilateur, il traduit le code source écrit dans un langage de programmation en code source d'un autre langage de programmation.
  • Compilateur juste à temps (JIT): Un compilateur qui diffère la compilation jusqu'à l'exécution. Ce compilateur est utilisé pour des langages tels que Python et JavaScript, et il s'exécute généralement dans un interpréteur.

Laisser un commentaire