Traduction

Licence Informatique 3ème année --- TD 6

Structures conditionnelles et boucles


Dans ce TD, nous allons voir comment gérer les conditions if...else... et les boucles while. Le compilateur que nous allons écrire engendrera du p-code, pouvant être exécuté à travers une machine virtuelle.

É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

  1. Exécutez le code ainsi obtenu à l'aide de la machine virtuelle.
  2. Comment les instructions 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.