use a stack to evaluate