■
…何か「+」より「-」の優先度を高くしないといけない気がする…。
「5 + 4 * 3 + 2 / 6」を変換する際、
最後が
[5 4 3 * 2 6 /]{+ +}
になるんだけど、
「+」「-」の優先度を同じと仮定すると、
演算子の積まれ方・残り方は交換しても同じになるはずなので、
・「5 - 4 * 3 + 2 / 6」 → [5 4 3 * 2 6 /]{- +}
・「5 + 4 * 3 - 2 / 6」 → [5 4 3 * 2 6 /]{+ -}
の二つも成り立つはずだけど、
[5 4 3 * 2 6 /]{- +}はどうやっても、「5 - 4 * 3 + 2 / 6」にならない。*1
でも、優先度が「-」>「+」ならば、
積算の直後に「-」が積まれて*2、
「5 4 3 * - 2 6 / +」になるので、元の式と等しくなる。
…と思ったんだけど、どうなんだろ。
……いや待てよ、優先順位が同列だったら先に積んである方を出力すればいいのか…?
…むぅ…(汗)