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.

35 lines
1.1 KiB

from Pile import Pile_chaine as Pile
class Expression:
def __init__(self, racine, gauche, droit):
"""initialisation d'un objet 'Expression'"""
self.racine = racine
self.gauche = gauche
self.droit = droit
def evalue(self):
"""renvoie la valeur de l'expression"""
if self.racine == "+":
return self.gauche.evalue() + self.droit.evalue()
if self.racine == "*":
return self.gauche.evalue() * self.droit.evalue()
return self.racine
def __str__(self):
"""affiche l'expression"""
#temporaire
if self.racine in ["+","*"]:
return "(" + str(self.gauche) + ")" + self.racine + "(" + str(self.droit) + ")"
return str(self.racine)
def npi2tree(liste_en_npi):
pile_expr = Pile()
for element in liste_en_npi:
if element in ["+", "*"]:
pile_expr.empiler(Expression(element, pile_expr.depiler(),pile_expr.depiler()))
else:
pile_expr.empiler(Expression(element, None, None))
return pile_expr.sommet()