diff --git a/infixe.py b/infixe.py index 287fa73..76abbcc 100644 --- a/infixe.py +++ b/infixe.py @@ -7,8 +7,8 @@ def infixe2npi(liste_en_infixe): pile_op = Pile() sortie = [] - fonctions = ["sin","cos","tan","sqrt", "opp"] - operateurs = ["+", "-", "*", "/", "^"] + fonctions = ["sin","cos","tan","sqrt"] + operateurs = ["+", "-", "*", "/", "^","opp"] priorite = {"sin":1, "opp":1, "^":1, @@ -28,7 +28,7 @@ def infixe2npi(liste_en_infixe): print(40*"=") for index_token, token in enumerate(liste_en_infixe): print(20*"-") - print("tour de boucle n°",index_token, "\npile_op \t",pile_op, "\nsortie \t", sortie) + print("token", token) #nombre if estUnNombre(token): if sortie != []: @@ -36,17 +36,22 @@ def infixe2npi(liste_en_infixe): #mul. implicite sortie.append(token) sortie.append("*") + print("c'est un nombre et il est dans le cas pile_op.est_vide()") else: - if last_token == pile_op.sommet(): + print(last_token, pile_op.sommet()) + if last_token == pile_op.sommet() or pile_op.sommet() == "opp": #opération binaire normale ou fonction (avec avant elle ultimement une opération binaire) sortie.append(token) + print("c'est un nombre et il est dans le cas last_token == pile_op.sommet()") if last_token == sortie[-1]: + print("c'est un nombre et il est dans le cas last_token == sortie[-1]") #on a affaire à une expression (chiffre (... 2), opération (... +), fonction (... fx)) qui est in fine un nombre cleanFx(pile_op, sortie) sortie.append(token) sortie.append("*") else: sortie.append(token) + print("c'est un nombre et il est dans le cas sortie == []") #fonction elif token in fonctions: if sortie != []: @@ -55,7 +60,7 @@ def infixe2npi(liste_en_infixe): pile_op.empiler("*") pile_op.empiler(token) else: - if last_token == pile_op.sommet(): + if last_token == pile_op.sommet() or pile_op.sommet() == "opp": #composition de fonctions, ou fonction qui suit un opérateur pile_op.empiler(token) #normal if last_token == sortie[-1]: @@ -94,7 +99,7 @@ def infixe2npi(liste_en_infixe): pile_op.empiler("*") pile_op.empiler(token) else: - if last_token == pile_op.sommet(): + if last_token == pile_op.sommet() or pile_op.sommet() == "opp": #parenthèse qui suit une fonction ou parenthèse normale pile_op.empiler(token) #normal if last_token == sortie[-1]: diff --git a/test_interface.py b/test_interface.py index 99b2eec..0d29d4e 100644 --- a/test_interface.py +++ b/test_interface.py @@ -242,7 +242,7 @@ class Interface(tk.Frame): arbre_expr = npi2tree(lst_expr, self.etat_affichage) self.affichage_expression.config(text = str(arbre_expr) + "=" + str(arbre_expr.evalue())) except IndexError: - messagebox.showerror("Erreur","Erreur de syntaxe") + messagebox.showerror("Erreur","Erreur de syntaxe ici") except ValueError: #faire un truc plus beau messagebox.showerror("Saisie invalide", "Vous n'avez pas entré un nombre, ou la fonction est inconnue.")