Notions sur les compilateurs
Un compilateur a pour rôle de transformer tout programme écrit dans un langage source (Z) en un programme objet (code) réellement exécuté par la machine.
La compilation d'un programme passe par plusieurs phases :
analyse lexicale
analyse syntaxique
analyse sémantique
interprétation ou génération de code
Lorsqu'on passe par la phase de génération de code on parle de compilateur.
Lorsqu'on passe par la phase d'interprétation on parle d'interpréteur.
Analyse lexicale
L'analyse lexicale est une analyse microscopique des éléments formant un programme.
Ces éléments, appelés "unité lexicales, sont les mots réservés du langage, les identificateurs utilisateurs, les caractères spéciaux, les constantes, etc...
Un analyseur lexical élimine tout ce qui n'est pas utile pour la phase suivante qui est l'analyse syntaxique. Il ignore ainsi les commentaires et les blancs.
Analyse syntaxique
L'analyse syntaxique est une analyse macroscopique. Derrière tout langage de programmation il ya une grammaire formée de l'ensemble des règles utilisées pour l'écriture des programmes.
Analyse sémantique
L'analyse sémantique donne un sens aux différentes instructions du programme. Elle facilite l'étape de génération de code ou d'interprétation. Elle transforme ainsi l'ensemble de codes en une forme interne autour de laquelle gravitent un ensemble de tables indispensables pour la phase d'interprétation ou de génération de code.
Cette forme interne représente le découpage du programme en un ensemble d'opérations élémentaires directement interprétées dans un autre langage de de programmation ou traduites en code objet.
Génération de code
La phase de génération de code consiste à associer à chaque élément de la forme interne l'équivalent en code objet.
Interprétation
La phase d'interprétation consiste à associer à chaque élément de la forme interne l'équivalent dans le langage d'interprétation.