0% ont trouvé ce document utile (0 vote)
139 vues3 pages

Solution TD1

Le document présente cinq exercices sur la compilation. Il explique les étapes de la compilation d'un compilateur et les différences entre C++ et Java. Les exercices portent sur l'appariement de notions de compilation et la résolution d'exercices sur le code.

Transféré par

Hamdi Rabeh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
139 vues3 pages

Solution TD1

Le document présente cinq exercices sur la compilation. Il explique les étapes de la compilation d'un compilateur et les différences entre C++ et Java. Les exercices portent sur l'appariement de notions de compilation et la résolution d'exercices sur le code.

Transféré par

Hamdi Rabeh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Centre Universitaire de Mila Informatique – Semestre 5

Institut des sciences et de la technologie COMPILATION – TD N° 01

Exercice 1.
 Quelles sont les phases de construction d'un compilateur?
 Citer deux différences principales entre les deux langages C++ et Java.
Solution:
 Les phases de construction d'un compilateur:
programme source

Analyse
lexicale

Analyse
syntaxique

Analyse
sémantique
Tables des gestion des
symboles erreurs
Code
Intermédiaire

Optimisation
de code

Génération de
code

programme objet
 Les différences entre C++ et Java:
Les deux différences principales en termes de compilation entre les deux langages C++ et Java sont :

 C++ dépend de la plate-forme, et Java est indépendante de la plate-forme.


 C++ utilise uniquement le compilateur (C++ est compilé et exécuté à l’aide du compilateur qui
convertit le code source en code machine). JAVA utilise à la fois un compilateur et un interpréteur.
Le code source JAVA est converti en bytecode au moment de la compilation. L’interpréteur exécute
ce bytecode au moment de l’exécution et génère une sortie.

Exercice 2.

 Faire correspondre les notions et les définitions.


1) Langage source a) Programme qui permet de construire un analyseur
lexical.
2) Langage Assembleur b) Traducteur qui exécute les instructions du programme
source l'une après l'autre.
3) Générateur lexical c) Langage de programmation de haut niveau.

4) Analyse Lexicale d) Le langage dans lequel on écrit le programme original

5) Interprète e) Une représentation symbolique du langage machine

6) C/C++, JAVA, PHP,… f) Regroupe le flot de caractères d'entrée groupé en


unités lexicales.

1/2 2020-2021
Solution:
1)  d) 2)  e) 3) a) 4)  f) 5)  b) 6)  c)

Exercice 3.
 Faire correspondre les notions et les définitions.
1) GCC a) Langage de balisage

2) Motorola 68000 b) Langage Assembleur

3) Le Langage OCaml c) Interprète

4) Quadruplets d) Compilateur

5) HTML e) Langage intermédiaire

Solution:
1)  d) 2)  b) 3)  c) 4)  e) 5)  a)

Exercice 4.

 Traduire les mots suivant en Français:


Anglais Français Anglais Français
compiler compilateur linker éditeur de lien
scanner analyseur lexical loader chargeur
token unité lexicale parser analyseur syntaxique
push down automata automate à pile target program programme cible
bytecode code à trois adresses syntax tree arbre syntaxique

Exercice 5.
Pour le code à structure de blocs en langage C suivant, indiquer quelles valeurs sont affectées à w, x, y et z.
int w, x, y, z; int w, x, y, z;
int i = 4; int j = 5; int i = 3; int j = 4;
{ int j = 7; { int i = 5;
i = 6; w = i + j;
w = i + j; }
} x=i+j;
x = i + j; { int j = 6;
{ int i = 8; i = 7;
y = i + j; y = i + j;
} }
z = i + j; z = i + j;
Programme (a) Programme (b)

Solution:
Programme (a) Programme (b)
w w=i+j=6+7=13 w w=i+j=5+4=9
x x=i+j=6+5=11 x x=i+j=3+4=7
y y=i+j=8+5=13 y y=i+j=7+6=13
z z=i+j=6+5=11 z z=i+j=7+4=11

2/2 2020-2021
3/2 2020-2021

Vous aimerez peut-être aussi