mas não entendi a implementação em código.
Quando a precedência é da direira par a esquerda, quando há empate na precedência entre o operador sendo examinado e o operador no topo da pilha, o operador do topo da pilha deve permancer na pilha e o novo operador será empilhado. Com isso garantimos que na expressão posfixa esses operadores apareçam no ordem inversa àquela que foram examinados.
>>>
>>> tokens = tokeniza("2^3^4^5")
>>> imprima_tokens(tokens)
[N(2), O('^'), N(3), O('^'), N(4), O('^'), N(5)]
>>> posfixa = infixa_para_posfixa(tokens)
-----
token a ser examinado = N(2)
posfixa =[]
pilha = []
-----
token a ser examinado = O('^')
posfixa =[N(2)]
pilha = []
-----
token a ser examinado = N(3)
posfixa =[N(2)]
pilha = [O('^')]
-----
token a ser examinado = O('^')
posfixa =[N(2), N(3)]
pilha = [O('^')]
-----
token a ser examinado = N(4)
posfixa =[N(2), N(3)]
pilha = [O('^'), O('^')]
-----
token a ser examinado = O('^')
posfixa =[N(2), N(3), N(4)]
pilha = [O('^'), O('^')]
-----
token a ser examinado = N(5)
posfixa =[N(2), N(3), N(4)]
pilha = [O('^'), O('^'), O('^')]
-----
desempilhando tokens...
posfixa =[N(2), N(3), N(4), N(5)]
pilha = [O('^'), O('^'), O('^')]
-----
desempilhando tokens...
posfixa =[N(2), N(3), N(4), N(5), O('^')]
pilha = [O('^'), O('^')]
-----
desempilhando tokens...
posfixa =[N(2), N(3), N(4), N(5), O('^'), O('^')]
pilha = [O('^')]
-----
posfixa =[N(2), N(3), N(4), N(5), O('^'), O('^'), O('^')]
pilha = []
>>>
>>> tokens = tokeniza("2+3+4+5")
>>> imprima_tokens(tokens)
[N(2), O('+'), N(3), O('+'), N(4), O('+'), N(5)]
>>> posfixa = infixa_para_posfixa(tokens)
-----
token a ser examinado = N(2)
posfixa =[]
pilha = []
-----
token a ser examinado = O('+')
posfixa =[N(2)]
pilha = []
-----
token a ser examinado = N(3)
posfixa =[N(2)]
pilha = [O('+')]
-----
token a ser examinado = O('+')
posfixa =[N(2), N(3)]
pilha = [O('+')]
-----
token a ser examinado = N(4)
posfixa =[N(2), N(3), O('+')]
pilha = [O('+')]
-----
token a ser examinado = O('+')
posfixa =[N(2), N(3), O('+'), N(4)]
pilha = [O('+')]
-----
token a ser examinado = N(5)
posfixa =[N(2), N(3), O('+'), N(4), O('+')]
pilha = [O('+')]
-----
desempilhando tokens...
posfixa =[N(2), N(3), O('+'), N(4), O('+'), N(5)]
pilha = [O('+')]
-----
posfixa =[N(2), N(3), O('+'), N(4), O('+'), N(5), O('+')]
pilha = []
>>>