Analyse syntaxique descendante par descente récursive:
En utilisant flex (et en particulier la possibilité de renvoyer
un résultat de yylex à une autre fonction qui pourra ensuite
rappeler yylex; voir page 9 de la man), écrire une analyseur par descente
récursive pour des expressions arithmétiques comme celles de
C.
- D'abord un analyseur simple pour des expressions construites de
constantes et identificateurs en n'utilisant que des multiplications,
- ensuite ajouter les autres opérateurs et les parenthèses,
- et enfin modifier l'analyseur afin d'afficher la version postfixe
de l'expression (sans parenthèses),
- Et, si vous avez du temps, ajouter à la version postfixe
une indication, pour chaque identificateur, constante et opération
arithmétique, du registre à utiliser (dans une machine avec
registres numérotés à partir de 0, où chaque
opération prend deux valeurs stockées en registres et produit
un résultat dans un registre; on essayera de minimiser le nombre de
registres utilisés sans changer l'ordre des calculs).
Il faut noter qu'une grammaire possible pour les expressions est
la suivante:
E ::= T | E addop T
T ::= F | T mulop F
F ::= constante | identificateur | ( E )
addop :: + | -
mulop ::= * | /