波蘭表示法轉換器
在中序、前序波蘭表示法與後序逆波蘭表示法之間轉換,即時取得清楚易讀的結果。
轉換運算式表示法
輸入運算式,選擇來源與目標表示法。
關於波蘭表示法轉換
波蘭表示法是一種書寫數學與邏輯運算式的方式,不必依循將運算子放在數值之間的慣例。一般中序表示法將運算子放在運算元之間,例如 A + B。前序表示法將運算子放在前方,寫成 + A B;後序表示法則放在後方,寫成 A B +。前序通常稱為波蘭表示法,後序則稱為逆波蘭表示法或 RPN。由於運算子與運算元的順序明確,前序與後序運算式通常不需要括號。
本工具支援四種常見轉換:中序轉前序、中序轉後序、前序轉中序、後序轉中序。中序輸入可辨識識別字、十進位數、括號,以及加、減、乘、除、次方運算子。採用標準優先順序:先次方,再乘除,最後加減。括號可明確改變順序。次方運算採右結合,因此 a ^ b ^ c 等同於 a ^ (b ^ c)。
中序轉換使用調度場演算法,依優先順序排列符記。堆疊暫存運算子,數值則直接移至輸出。前序結果再由產生的後序序列組合而成。前序轉中序與後序轉中序使用存放部分運算式的堆疊。遇到運算子時,取出對應的兩個運算元,組合並加上括號,再放回堆疊。最後剩下的項目就是完整的中序運算式。
前序與後序輸入的空格很重要,因為空格用來區分各個運算元和運算子。請寫成 * + A B C,而不是 *+ABC。中序運算式可加空格,也可省略,因為括號與運算子字元能分隔符記。轉換器保留變數名稱與數值,並加上空格和括號,方便檢視結果。
表示法轉換適合用於學習運算式樹、編譯器剖析、堆疊機、計算機與資料結構。後序運算式可藉由簡單堆疊由左至右求值,前序則可類似地由右至左處理。將熟悉的中序公式轉為其中一種形式,能明確呈現運算子優先順序,也方便核對運算式剖析練習。
波蘭表示法範例
以下範例展示不同表示法中的等價運算式。
| 輸入 | 輸出 | 轉換 |
|---|---|---|
| (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)) | 後序轉中序 |
如何使用表示法轉換器
- 從四種轉換類型中選擇一種,指定輸入與目標表示法。
- 輸入運算式;若來源為前序或後序,每個符記之間都須加空格。
- 選擇「轉換」,解析運算式並顯示等價表示法。
- 檢查結果中的運算子順序,或選擇「重設」清空運算式後重新開始。
波蘭表示法轉換常見問題
什麼是波蘭表示法?
波蘭表示法將每個運算子放在運算元前方,例如 A + B 變為 + A B。當每個運算子的運算元數量已知時,就不需要括號。
什麼是逆波蘭表示法?
逆波蘭表示法將運算子放在運算元後方,例如 A + B 變為 A B +。也稱為後序表示法,通常以堆疊求值。
前序與後序運算式需要空格嗎?
需要。本工具要求前序或後序符記之間使用空格,以免多字元數值或名稱產生歧義。例如應寫 + total 25,而不是 +total25。
轉換器如何處理運算子優先順序?
中序運算式中,次方的優先順序最高,其次為乘除,最後為加減。括號可改變這個預設順序。
可以同時使用數字與變數名稱嗎?
可以。運算元可為十進位數,或由字母、數字、底線組成的識別字。轉換器只重新排列符記,不計算數值。