Precedência entre operadores ---------------------------- A tabela abaixo é baseada na tabela de precedência disponível `aqui `__. Nessa tabela, os operadores estão em ordem decrescente de prioridade: na primeira linha os operadores executados em primeiro lugar e na última os operadores executados por último. Assim, o operador ``=`` possui a menor precedência dentre os operadores da tabela. A coluna direta indica a convenção de associação para os operadores da linha. ===================== ============================== operadores regra de associação ===================== ============================== ``(`` ``)`` esquerda-para-direita ``!`` ``^`` direira-para-esquerda ``*`` ``/`` ``%`` esquerda-para-direita ``+`` ``-`` esquerda-para-direita ``=`` direita-para-esquerda ===================== ============================== A tabela abaixo exemplifica a precedência dos operadores. Note, por exemplo, a associatividade da esquerda para direita entre operadores como ``+`` e ``-`` ou ``*`` e ``/`` e a associatividade da direita para a esquerda dos operadores ``!``, ``^`` e ``=``. ============================ ========================================== expressão interpretação ============================ ========================================== ``2 + 3 + 4`` ``(2 + 3) + 4`` ``2 ^ 3 ^ 4`` ``2 ^ (3 ^ 4)`` ``A * B / C`` ``(A * B) / C`` ``A = B + C / 3.2 / C`` ``A = (B + ((C / 3.2) / C))`` ``A = B = C = 3.2`` ``A = (B = (C = 3.2))`` ``A * _ B ^ C - 2`` ``((A * (! (B ** C)) - 2)`` ============================ ========================================== O dicionário ``PREC`` que está no módulo reflete a precedência dos operadores e pode ser útil para implementar a função ``infixa_para_posfixa()``: .. sourcecode:: python # trecho de código copiado do módulo operadores.py # dicionário com a precedência de cada operador PREC = { # 7 operadores aritmético EXPONENCIACAO: 5, # da DIREITA para a ESQUERDA MENOS_UNARIO: 5, # da DIREITA para a ESQUERDA RESTO_DIVISAO: 3, # da ESQUERDA para a DIREITA MULTIPLICACAO: 3, # da ESQUERDA para a DIREITA DIVISAO: 3, # da ESQUERDA para a DIREITA ADICAO: 2, # da ESQUERDA para a DIREITA SUBTRACAO: 2, # da ESQUERDA para a DIREITA # atribuicao ATRIBUICAO: 1, # da DIREITA para a ESQUERDA ABRE_PARENTESES: 0 # conveniente }