Utilisation des outils  Lex et Yacc


Le répertoire Bool contient un programme de "calculette booléenne" : l'utilisateur entre au clavier une séquence de caractères représentant une expression booléenne, le programme vérifie que la syntaxe de cette séquences est correcte, puis calcule et affiche sa valeur ("true" ou "false").  Ce programme a été écrit avec les outils Lex et Yacc.
 
Effectuez les opérations décrites dans la suite et répondez par écrit aux questions sur la fiche de compte-rendu ...

Partie 1

  1. Copiez l'ensemble des fichiers du répertoire Bool dans un répertoire de votre choix
  2. Examinez les fichiers suivants :
  3. Compilez en exécutant la commande make
  4. Examinez les fichiers produits, notamment :
  5. Exécutez le programme Bool en essayant différentes expressions booléennes (correctes ou non).

Partie 2

  1. Modifiez les fichiers Bool.l et Bool.y pour ajouter à la grammaire un opérateur "not" (négation). Cet opérateur devra être plus prioritaire que tous les autres.
  2. Compilez et testez le nouveau programme obtenu.

Partie 3

  1. Modifiez les fichiers Bool.l et Bool.y pour ajouter à la grammaire un opérateur "IF e1 THEN e2 ELSE e3". Cet opérateur prend en argument 3 expressions booléennes, renvoie une expression booléenne (e2 lorsque e1 est vraie, e3 sinon), et est moins prioritaire que tous les autres.
  2. Compilez et testez le nouveau programme obtenu.

Partie 4

  1. Ajoutez maintenant un opérateur "IF e1 THEN e2" qui prend en argument 2 expressions booléennes et renvoie une expression booléenne (e2 lorsque e1 est vraie, faux sinon).
  2. Compilez. Que se passe t'il ? D'où vient le problème ?
  3. Corrigez le problème en modifiant la syntaxe des opérateurs "IF e1 THEN e2 ELSE e3" et "IF e1 THEN e2".