波蘭表示法轉換器

在中序、前序波蘭表示法與後序逆波蘭表示法之間轉換,即時取得清楚易讀的結果。

轉換運算式表示法
輸入運算式,選擇來源與目標表示法。

關於波蘭表示法轉換

波蘭表示法是一種書寫數學與邏輯運算式的方式,不必依循將運算子放在數值之間的慣例。一般中序表示法將運算子放在運算元之間,例如 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 * CA B C * +中序轉後序
* + A B - C D((A + B) * (C - D))前序轉中序
A B + C D - *((A + B) * (C - D))後序轉中序

如何使用表示法轉換器

  1. 從四種轉換類型中選擇一種,指定輸入與目標表示法。
  2. 輸入運算式;若來源為前序或後序,每個符記之間都須加空格。
  3. 選擇「轉換」,解析運算式並顯示等價表示法。
  4. 檢查結果中的運算子順序,或選擇「重設」清空運算式後重新開始。

波蘭表示法轉換常見問題

什麼是波蘭表示法?

波蘭表示法將每個運算子放在運算元前方,例如 A + B 變為 + A B。當每個運算子的運算元數量已知時,就不需要括號。

什麼是逆波蘭表示法?

逆波蘭表示法將運算子放在運算元後方,例如 A + B 變為 A B +。也稱為後序表示法,通常以堆疊求值。

前序與後序運算式需要空格嗎?

需要。本工具要求前序或後序符記之間使用空格,以免多字元數值或名稱產生歧義。例如應寫 + total 25,而不是 +total25。

轉換器如何處理運算子優先順序?

中序運算式中,次方的優先順序最高,其次為乘除,最後為加減。括號可改變這個預設順序。

可以同時使用數字與變數名稱嗎?

可以。運算元可為十進位數,或由字母、數字、底線組成的識別字。轉換器只重新排列符記,不計算數值。