COMPILATEURS
Un compilateur fait référence à un programme informatique utilisé pour traduire un code informatique écrit dans un langage de programmation (appelé langage source) dans un autre langage de programmation (appelé langage cible). Le terme compilateur s'applique principalement aux programmes qui traduisent les codes sources d'un langage de programmation de haut niveau vers un langage de programmation de niveau inférieur. Par exemple, du code machine, du code objet ou du langage assembleur pour créer un programme exécutable.
Il est important de noter qu’il existe de nombreux types de compilateurs. Dans le cas où le programme compilé peut s'exécuter sur un ordinateur dont le système d'exploitation ou le processeur est différent de celui exécuté par le compilateur, le compilateur est appelé compilateur croisé. En revanche, un compilateur bootstrap est écrit dans le langage qu’il souhaite compiler. Un décompilateur est un programme utilisé pour traduire un langage de bas niveau vers un langage de niveau supérieur. Un programme utilisé pour traduire entre des langages de haut niveau est appelé compilateur source à source. Il peut également être appelé transpileur. Un programme chargé de traduire la forme des expressions sans changement de langue est appelé réécrivain de langage. Le terme compilateur-compilateur fait référence aux outils utilisés pour créer des analyseurs chargés d'effectuer l'analyse syntaxique.
Certaines des opérations effectuées par un compilateur comprennent : le prétraitement, l'analyse, (traduction dirigée par la syntaxe), l'analyse sémantique, l'analyse lexicale, la génération de code, l'optimisation du code et la conversion des programmes d'entrée en une représentation intermédiaire. Les compilateurs sont responsables de la mise en œuvre de ces opérations en différentes phases qui favorisent des transformations correctes et une conception efficace de l'entrée source vers la sortie cible. Les erreurs de programme provoquées par un comportement incorrect du compilateur peuvent être très difficiles à localiser et à contourner. Les implémenteurs du compilateur investissent donc des efforts importants pour garantir l’exactitude du compilateur.
Il est important de noter que les compilateurs ne sont pas les seuls traducteurs utilisés pour transformer les programmes sources. Un logiciel informatique chargé de transformer puis d’exécuter les opérations indiquées est appelé interprète. Le processus de traduction influence la conception des langages informatiques, ce qui conduit à une préférence d'interprétation ou de compilation. En pratique, la mise en œuvre d'un interpréteur pour les compilateurs et les langages compilés peut être mise en œuvre pour les langages interprétés.
Notez que lors de l'utilisation d'un compilateur, un processus en deux étapes est utilisé pour exécuter un programme,
LA CHAÎNE D'OUTILS DE COMPILATION
Pour les programmes volumineux, le compilateur fait partie d'une chaîne d'outils en plusieurs étapes,
(préprocesseur)- (compilateur)- (assembleur)- (éditeur de liens)- (chargeur).
STRUCTURE D'UN COMPILATEUR
Les compilateurs modernes sont constitués de deux parties principales. Chacune de ces parties est souvent subdivisée. Ces deux parties principales sont le front-end et le back-end.
Le front-end est chargé d'analyser le programme source, de construire une représentation intermédiaire du programme et de déterminer ses éléments constitutifs. Généralement, le front-end est indépendant de la langue cible.
Le back-end, quant à lui, est chargé de synthétiser le programme cible à partir de la représentation intermédiaire produite par le front-end. Généralement, le back-end est dit indépendant de la langue source.