def precedence(tokens):
lparen = Token("op", "(")
rparen = Token("op", ")")
level = 0
opening = 0
output = []
while tokens:
if len(tokens) > 1 and tokens[1].value in operators:
_, precedence = operators.get(tokens[1].value)
if precedence > level:
level = precedence
output.append(lparen)
opening += 1
else:
level = precedence
for i in range(opening):
output.append(rparen)
opening = 0
output.append(tokens.pop(0))
for i in range(opening):
output.append(rparen)
return output