ポーランド記法変換ツール
中置記法、前置のポーランド記法、後置の逆ポーランド記法の間で式を変換し、読みやすい結果をすぐに表示します。
式の記法を変換
式を入力し、変換元と変換先の記法を選んでください。
ポーランド記法の変換について
ポーランド記法は、値の間に演算子を置く通常の書き方によらず、数学式や論理式を表現する方法です。一般的な中置記法では A + B のようにオペランドの間に演算子を置きます。前置記法では演算子を先頭に置いて + A B、後置記法では末尾に置いて A B + と書きます。前置形式はポーランド記法、後置形式は逆ポーランド記法または RPN と呼ばれます。演算子とオペランドの順序が明確なので、通常は括弧が不要です。
このツールは中置から前置、中置から後置、前置から中置、後置から中置の4種類に対応します。中置入力では識別子、十進数、括弧、加算・減算・乗算・除算・累乗の演算子を認識します。標準の優先順位に従い、累乗、乗除算、加減算の順に処理します。括弧で順序を明示的に変更できます。累乗は右結合として扱うため、a ^ b ^ c は a ^ (b ^ c) を意味します。
中置からの変換には操車場アルゴリズムを使い、優先順位に従ってトークンを並べます。演算子は一時的にスタックへ保存し、値は直接出力へ移します。前置出力は、得られた後置列から組み立てます。前置・後置から中置への変換では、部分式を保持するスタックを使います。演算子に出会うたびに対応する2つのオペランドを取り出し、結合して括弧で囲み、スタックへ戻します。最後の要素が完全な中置式になります。
前置・後置入力では、空白が各オペランドと演算子を識別するため重要です。*+ABC ではなく * + A B C と入力してください。中置式では括弧と演算子文字でトークンを区切れるので、空白はあってもなくても構いません。変数名と数値は保持し、確認しやすいよう空白と括弧を加えます。
記法変換は式木、コンパイラの構文解析、スタックマシン、電卓、データ構造の学習に役立ちます。後置式は単純なスタックで左から右へ評価でき、前置式は同様に右から左へ処理できます。なじみのある中置式を変換すると演算子の優先順位が明確になり、式の解析問題を確かめる実用的な方法になります。
ポーランド記法の例
異なる記法で同じ意味を持つ式の例です。
| 入力 | 出力 | 変換 |
|---|---|---|
| (A + B) * C - D | - * + A B C D | 中置から前置 |
| A + B * C | A B C * + | 中置から後置 |
| * + A B - C D | ((A + B) * (C - D)) | 前置から中置 |
| A B + C D - * | ((A + B) * (C - D)) | 後置から中置 |
記法変換ツールの使い方
- 4種類から選び、入力する記法と変換先を指定します。
- 式を入力します。前置・後置記法ではすべてのトークンを空白で区切ります。
- 「変換」を選び、式を解析して等価な記法を表示します。
- 結果の演算子の順序を確認するか、「リセット」で式を消してやり直します。
ポーランド記法変換のよくある質問
ポーランド記法とは何ですか?
演算子をオペランドの前に置く記法で、A + B は + A B になります。各演算子が取るオペランド数が決まっていれば括弧は不要です。
逆ポーランド記法とは何ですか?
演算子をオペランドの後に置く記法で、A + B は A B + になります。後置記法とも呼ばれ、通常はスタックで評価します。
前置・後置式には空白が必要ですか?
はい。複数文字の値を明確に区別するため、トークン間に空白が必要です。例えば +total25 ではなく + total 25 と書いてください。
演算子の優先順位はどう扱いますか?
中置式では累乗が最優先で、次に乗除算、最後に加減算です。括弧はこの通常の順序に優先します。
数値と変数名を混在できますか?
はい。オペランドには十進数や、英字・数字・アンダースコアからなる識別子を使えます。数値計算は行わず、トークンを並べ替えます。