Le prétraitement remplace des parties de texte par d'autres textes grâce à un système de macros. La compilation traduit le programme source en instructions assembleur. L'assemblage effectue la traduction vers des instructions machines. Enfin l'édition de liens permet d'ajouter la bibliothèque d'exécution, contenant principalement la gestion mémoire, et de faire la jonction avec le système d'exploitation pour les primitives.
Programme source prétraite ¯ Programme source compile ¯ Programme assembleur assemble ¯ Instructions machine relie ¯ Code exécutable
Figure 7.1 : Schéma pour la production d'un exécutable
L'analyse lexicale transforme la suite de caractères en une suite d'unités lexicales (lexèmes). Les lexèmes correspondent principalement aux entiers, nombres flottants, caractères, chaînes de caractères et identificateurs. Le message Illegal character provient de cette analyse.
Suite de caractères analyse lexicale ¯ Suite de lexèmes analyse syntaxique ¯ Arbre de syntaxe analyse sémantique ¯ Arbre de syntaxe décoré génération de code intermédiaire ¯ Suite d'instructions du LI optimisation du code intermédiaire ¯ Suite d'instructions du LI génération du code cible ¯ Programme assembleur
Figure 7.2 : Étapes d'un compilateur
Syntax error
indiquent que la phrase
analysée ne respecte pas la grammaire du langage.La notation graphique utilisée pour décrire les composants de la figure 7.3 et leur agencement est standard dans le monde de la compilation. Une boîte simple représente un fichier écrit dans le langage indiqué dans la boîte. Une boîte double représente l'interprétation d'un langage par un programme écrit dans un autre. Une boîte triple indique qu'un langage source est compilé vers un langage cible en utilisant un compilateur écrit dans un troisième langage. La figure 7.4 donne la légende de chacune des boîtes.
La légende de la figure 7.3 est la suivante :