逆ポーランド記法で被演算子が3個以上の演算はありうるのか?

投稿者: Anonymous

中間記法「3 + 4」は逆ポーランド記法だと「3 4 +」のように書けます。
では、被演算子が3個以上、たとえば中間記法「3 + 4 + 5」は逆ポーランド記法ではどのように書けばよいのでしょうか?
「3 4 + 5 + 」と書けばよさそうですが、「3 4 5 +」のように書くことはできないのでしょうか?
(乗算でも同様にできそうですが引き算だとどうなるのかちょっとよくわからないですね)

解決

中間記法「3 + 4 + 5」は逆ポーランド記法ではどのように書けばよいのでしょうか?

ご質問中にあるように、3 4 + 5 +でも構いませんし、3 4 5 + +でも構いません。

「3 4 5 +」のように書くことはできないのでしょうか?

+がどのような演算として定義されているかによるわけですが、他の箇所に合わせて2数の加算と考えると、3 4 5 +だと、最後の4 5だけが加算されて、3 9と書いたのと同じ状態になってしまいます。

もし「スタック上から3つの数を取り出して全部を足し合わせる演算」、なんてものが定義できれば、3 4 5 add3なんて書き方もありになります。


逆ポーランド記法を基礎に置いた言語(と言うよりスタック操作を基礎、と言った方が良いかもしれませんが)Forthだとこんな感じ。(以降は行コメントです。)

: add3 + + ;    スタックを3個読み取る演算子(ワード)`add3`の定義
3 4 5 add3      `add3`を演算として使う

(結果)=>12

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *