if...else... et les boucles while.
Le compilateur que nous allons écrire engendrera du p-code, pouvant
être exécuté à travers une machine virtuelle.
Pour ce TP et les suivants, nous utiliserons une machine virtuelle dont la description se trouve ici.
Étude de programme
Téléchargez les fichiers suivants:
td6.lex,
td6.y,
td6-test,
makefile
Compilez puis exécutez la commande suivante:
td6 td6-test
if sont-elles gérées dans ce code?
Structures conditionnelles
Modifiez les programmes flex et bison de façon à autoriser
le else optionnel. Comme en C, vous devrez rattacher un else au if le plus
proche. Pour cela, vous utiliserez la commande %prec qui permet
d'attribuer à une règle une priorité correpondant à un autre opérateur.
Blocs et stockage d'une valeur
Modifiez les programmes flex et bison de façon
à autoriser
1) les blocs d'instructions encadrés par des accolades;
2) une variable globale notée $ qu'on pourra accéder en
lecture et en écriture grâce à une instruction de la forme $ = val;.
Boucles while
Modifiez les programmes flex et bison de façon à pouvoir utiliser des
boucles while.
Boucles while
Modifiez les programmes flex et bison de façon
à pouvoir gérer séparément des expressions numériques et des
expressions booléennes (seules les expressions numériques pouvant être
sauvegardées dans $). Gérez les différents opérateurs
arithmétiques et de comparaison.