I remeber the problem, I had to solve this in pascal about 20 years ago, in college. What if while you were parsing the statement and you had a - as an operator and you hit a ( before you hit an operand, could you then just push a -1 to the stack and then change the operator to * ? that would do the same thing with out changing the stament.