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éeeval
dans l’énoncé).
Quelques améliorations
- Simplification: utilisation de la fonction
apply_op
et du module Pythonoperator
, par exempleop_add
devient :
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
tokenize
pour utiliser la liste d’opérateurs en clé. - Modification de
rpn
pour 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_add
devient :
op_add = stackify(operator.__add__)
-
stackify
est un décorateur. -
staticmethod
pourtokenize
.