|
@ -7,8 +7,8 @@ def infixe2npi(liste_en_infixe): |
|
|
pile_op = Pile() |
|
|
pile_op = Pile() |
|
|
sortie = [] |
|
|
sortie = [] |
|
|
|
|
|
|
|
|
fonctions = ["sin","cos","tan","sqrt", "opp"] |
|
|
fonctions = ["sin","cos","tan","sqrt"] |
|
|
operateurs = ["+", "-", "*", "/", "^"] |
|
|
operateurs = ["+", "-", "*", "/", "^","opp"] |
|
|
priorite = {"sin":1, |
|
|
priorite = {"sin":1, |
|
|
"opp":1, |
|
|
"opp":1, |
|
|
"^":1, |
|
|
"^":1, |
|
@ -28,7 +28,7 @@ def infixe2npi(liste_en_infixe): |
|
|
print(40*"=") |
|
|
print(40*"=") |
|
|
for index_token, token in enumerate(liste_en_infixe): |
|
|
for index_token, token in enumerate(liste_en_infixe): |
|
|
print(20*"-") |
|
|
print(20*"-") |
|
|
print("tour de boucle n°",index_token, "\npile_op \t",pile_op, "\nsortie \t", sortie) |
|
|
print("token", token) |
|
|
#nombre |
|
|
#nombre |
|
|
if estUnNombre(token): |
|
|
if estUnNombre(token): |
|
|
if sortie != []: |
|
|
if sortie != []: |
|
@ -36,17 +36,22 @@ def infixe2npi(liste_en_infixe): |
|
|
#mul. implicite |
|
|
#mul. implicite |
|
|
sortie.append(token) |
|
|
sortie.append(token) |
|
|
sortie.append("*") |
|
|
sortie.append("*") |
|
|
|
|
|
print("c'est un nombre et il est dans le cas pile_op.est_vide()") |
|
|
else: |
|
|
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) |
|
|
#opération binaire normale ou fonction (avec avant elle ultimement une opération binaire) |
|
|
sortie.append(token) |
|
|
sortie.append(token) |
|
|
|
|
|
print("c'est un nombre et il est dans le cas last_token == pile_op.sommet()") |
|
|
if last_token == sortie[-1]: |
|
|
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 |
|
|
#on a affaire à une expression (chiffre (... 2), opération (... +), fonction (... fx)) qui est in fine un nombre |
|
|
cleanFx(pile_op, sortie) |
|
|
cleanFx(pile_op, sortie) |
|
|
sortie.append(token) |
|
|
sortie.append(token) |
|
|
sortie.append("*") |
|
|
sortie.append("*") |
|
|
else: |
|
|
else: |
|
|
sortie.append(token) |
|
|
sortie.append(token) |
|
|
|
|
|
print("c'est un nombre et il est dans le cas sortie == []") |
|
|
#fonction |
|
|
#fonction |
|
|
elif token in fonctions: |
|
|
elif token in fonctions: |
|
|
if sortie != []: |
|
|
if sortie != []: |
|
@ -55,7 +60,7 @@ def infixe2npi(liste_en_infixe): |
|
|
pile_op.empiler("*") |
|
|
pile_op.empiler("*") |
|
|
pile_op.empiler(token) |
|
|
pile_op.empiler(token) |
|
|
else: |
|
|
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 |
|
|
#composition de fonctions, ou fonction qui suit un opérateur |
|
|
pile_op.empiler(token) #normal |
|
|
pile_op.empiler(token) #normal |
|
|
if last_token == sortie[-1]: |
|
|
if last_token == sortie[-1]: |
|
@ -94,7 +99,7 @@ def infixe2npi(liste_en_infixe): |
|
|
pile_op.empiler("*") |
|
|
pile_op.empiler("*") |
|
|
pile_op.empiler(token) |
|
|
pile_op.empiler(token) |
|
|
else: |
|
|
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 |
|
|
#parenthèse qui suit une fonction ou parenthèse normale |
|
|
pile_op.empiler(token) #normal |
|
|
pile_op.empiler(token) #normal |
|
|
if last_token == sortie[-1]: |
|
|
if last_token == sortie[-1]: |
|
|