困ったなあ  現在800行を少し超えた所
case op of
'+' : push(pop + pop);
'-' : push(pop - pop);
'*' : push(pop * pop);

みたいに書いたら、当然左のpopが先に実行されるようで、負数や除算が反対になっちゃう。
格好良く書く方法ないかなあ