func convert2postfix(tokens []string) []string { var stack util.Stack var result []string for _, token := range tokens { if isOperator(token) { OPERATOR: for { top, err := stack.Top() if err != nil || top == "(" { break OPERATOR } if opGTE(top.(string), token) { pop, _ := stack.Pop() result = append(result, pop.(string)) } else { break OPERATOR } break OPERATOR } stack.Push(token) } else if token == "(" { stack.Push(token) } else if token == ")" { CLOSE_PAREN: for { top, err := stack.Top() if err != nil || top == "(" { stack.Pop() // pop off "(" break CLOSE_PAREN } else { pop, _ := stack.Pop() result = append(result, pop.(string)) } } } else if isOperand(token) { result = append(result, token) } } for !stack.IsEmpty() { pop, _ := stack.Pop() result = append(result, pop.(string)) } return result }