Interpréteur d'expressions constantes
Implémenter une fonction capable d'évaluer un nœud d'AST dans un environnement donné, en passant par yéter. Il s'agit d'une fonction différente de celle qu'on utilisera dans l'interpréteur, je pense, parce que l'interpréteur n'est pas censé reposer sur yéter (on va juste saturer le cache si on stocke chaque exécution possible d'une expression dans chaque contexte possible).
Par environnement, je veux dire que votre fonction doit pouvoir évaluer la valeurs
- des constantes globales (elles ont accès aux autres constantes globales : attention aux boucles)
- des constantes locales à un nœud donné (ont accès aux constantes globales et aux autres constantes locales)
- des expressions constantes à l'intérieur des équations d'un nœud (indexation de tableau
tableau[1 + N]
, paramètres statiquesfonction<<4 + 3 * N>>(true)
, etc.): elles ont accès aux constantes globales et locales
Il faudra renvoyer des erreurs si une expression n'est pas évaluable dans un contexte constant.
En parallèle, il faudra également définir une fonction pour évaluer des expressions non-constantes, c'est à dire pendant l'exécution. On s'en servira dans l'interpréteur. La question est de savoir si on peut s'épargner de les implémenter en double...