Correction du TP5
Introduction
Cette correction du TP5 est faite de manière incrémentale. Elle prend quelques libertés avec l’énoncé exact du TP5, pour préparer le TP6. Ce document ne contient qu’un plan rapide de la correction, qui sera faite en temps réel.
La correction du TP5 lui-même
- Création d’une pile simple.
- Opérateurs arithmétiques simples.
- La fonction
tokenize. - La fonction
rpn(nomméeevaldans l’énoncé).
Quelques améliorations
- Simplification: utilisation de la fonction
apply_opet du module Pythonoperator, par exempleop_adddevient :
def op_add(self): return self.apply_op(operator.__add__)
- Utilisation d’une table de hash pour les opérateurs, sans même passer par
op_. - Modification de
tokenizepour utiliser la liste d’opérateurs en clé. - Modification de
rpnpour prendre en paramètres une chaine ou une liste.
Et pour les curieux
- Gestion du nombre d’arguments variables (attention, ça marche difficilement avec les
operator.*, il faut ruser). - Simplification: création d’une fonction
stackify,op_adddevient :
op_add = stackify(operator.__add__)
-
stackifyest un décorateur. -
staticmethodpourtokenize.