Exercice 1. Concevez une grammaire non-ambiguë pour le langage généré par cette grammaire ambiguë : ::= i ::= if e then ::= if e then else Exercice 2. Soit la grammaire suivante pour les expressions : ::= ::= | "+" | "-" ::= | "*" | "/" ::= | | "(" ")" Concevez une grammaire attribuées qui détermine pour chaque sous-expression son type, en utilisant les mêmes règles que le langage C. Supposez que les variables ont soit le type "int" ou "double", et que cette information est l'attribut "type" de la catégorie . Exercice 3. Étudiez le compilateur miniscm : - la structure des sources du compilateur - la spécification Silex et LALR-SCM - le makefile et les tests - la logique de compilation (fichier miniscm.scm) Exercice 4. Écrire en Scheme une version simplifiée de la fonction "read" de Scheme en utilisant l'approche par descente récursive.