added reverse(), shunting yard respects precedence