|
|
@ -4,7 +4,6 @@ from Pile import Pile_chaine as Pile |
|
|
|
|
|
|
|
class Expression: |
|
|
|
def __init__(self, valeur, gauche=None, droite=None): |
|
|
|
|
|
|
|
self.valeur = valeur |
|
|
|
self.gauche = gauche |
|
|
|
self.droite = droite |
|
|
@ -18,12 +17,36 @@ class Expression: |
|
|
|
return self.gauche.evalue() + self.droite.evalue() |
|
|
|
if self.valeur == '*': |
|
|
|
return self.gauche.evalue() * self.droite.evalue() |
|
|
|
if self.valeur == '/': |
|
|
|
return self.gauche.evalue() / self.droite.evalue() |
|
|
|
if self.valeur == '-': |
|
|
|
return self.gauche.evalue() - self.droite.evalue() |
|
|
|
|
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
if type(self.valeur) == int: |
|
|
|
return str(self.valeur) |
|
|
|
else : |
|
|
|
return "({str(self.gauche)} {self.valeur} {str(self.droite)})" |
|
|
|
if self.valeur == '+': |
|
|
|
return "("+ str (self.gauche) + "+" + str (self.droite) + ")" |
|
|
|
if self.valeur == '*': |
|
|
|
return "("+ str (self.gauche) + "*" + str (self.droite) + ")" |
|
|
|
if self.valeur == '/': |
|
|
|
return "("+ str (self.gauche) + "/" + str (self.droite) + ")" |
|
|
|
if self.valeur == '-': |
|
|
|
return "("+ str (self.gauche) + "-" + str (self.droite) + ")" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ =="__main__": |
|
|
|
e = Expression('*', |
|
|
|
Expression(6, None, None), |
|
|
|
Expression('+', |
|
|
|
Expression(4, None, None), |
|
|
|
Expression(3, None, None) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Conversion: |
|
|
|
lst = [self.valeur,self.gauche, self.droite] |
|
|
@ -31,7 +54,7 @@ class Conversion: |
|
|
|
"""fonction npi2tree prenant en paramètre une liste correspondant à l’expression en notation |
|
|
|
polonaise inversée et renvoyant l’arbre (de type Expression) correspondant""" |
|
|
|
p = Pile(lst) |
|
|
|
# for i in lst (): |
|
|
|
for i in lst (): |
|
|
|
# if + or * : |
|
|
|
|
|
|
|
|
|
|
|