You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.6 KiB

from Pile import Pile_lst as p
class Expression :
def __init__ (self, valeur, gauche, droit):
"""Initialise la valeur de la racine (’+’, ’*’ ou un entier) et les fils gauche et
droit (qui seront soit None si la racine est un entier, soit des arbres) ;"""
self.valeur = valeur
self.gauche = gauche
self.droit = droit
def evalue (self) :
"""Renvoie la valeur de l’expression."""
if self.gauche is None and self.droit is None :
return self.valeur
if self.valeur == "+" :
return self.gauche.evalue() + self.droit.evalue()
elif self.valeur == "*":
return self.gauche.evalue() * self.droit.evalue()
def __str__ (self) :
"""Affiche l'expression"""
if self.gauche is None and self.droite is None :
return str(self.valeur)
exp = Expression('*',
Expression(6, None, None),
Expression('+',
Expression(4, None, None),
Expression(3, None, None)
)
)
exp.evalue()
def npi2tree (liste_npi) :
"""Prends en paramètre une liste correspondant à l’expression en notation
polonaise inversée et renvoyant l’arbre (de type Expression) correspondant"""
pile = p()
for elem in liste_npi :
if elem == "+" :
exp = Expression("+", Expression(Expression()))
elif elem == "*" :
exp = Expression("*", Expression(Expression()))
else :
pass
return pile[-1]