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 = [] >>>