C'est quoi un compilateur ?
Définition : Un compilateur est un programme qui lit un programme écrit dans un premier langage (programme
source) et le traduit en un programme équivalent écrit dans un autre langage (cible). Pendant la traduction, le
compilateur signale les éventuelles erreurs à l’utilisateur
Donner l'environnement du compilateur
Donner la structure logique d'un compilateur
Donner un exemple d'une erreur, qui peut être détectée, au niveau de l'analyse sémantique
Classification de l’erreur de compilation –
Lexique : cela inclut les fautes d’orthographe des identifiants, des mots-clés ou des opérateurs
Syntactique : un point-virgule manquant ou une parenthèse déséquilibrée
Sémantique : affectation de valeur incompatible ou incompatibilité de type entre l’opérateur et l’opérande
Logique : code inaccessible, boucle infinie.
Erreurs sémantiques
Ces erreurs sont détectées lors de la phase d’analyse sémantique. Les erreurs sémantiques typiques sont
Type d’opérandes incompatible
Variables non déclarées
Ne pas faire correspondre les arguments réels avec un argument formel
Example : int a[10], b;
.......
.......
a = b;
Il génère une erreur sémantique à cause d’un type incompatible de a et b.
Quelle est la différence entre la compilation et l'interprétation
Base de comparaison Compilateur Interpreteur
Un programme Ne prenez qu'une
complet est ligne de code ou
Entrée
nécessaire à la d'instruction à la
fois. fois.
Il ne produit
Génère un code
aucun code
Sortie d'objet
d'objet
intermédiaire.
intermédiaire.
La compilation et
La compilation
Mécanisme de l'exécution sont
est faite avant
travail effectuées
l'exécution.
simultanément.
Comparativement
La vitesse Plus lent
plus rapide
La mémoire Il nécessite moins
requise est de mémoire car il
La mémoire davantage due à ne crée pas de
la création de code objet
code objet. intermédiaire.
Affiche toutes les
erreurs après la Il montre l'erreur
Les erreurs compilation, de chaque ligne
toutes en même une par une.
temps.
Détection Comparativement
Difficile
d'erreur plus facile
C, C ++, C #, Java, PHP, Perl,
Langages de
Scala, le Python, Ruby
programmation
manuscrit utilise utilise un
correspondants
un compilateur. interpréteur.