表示式分析


編寫算術表示式的方法被稱為符號。一個算術表示式可以寫成在三個不同的但等效的符號,即, 不改變的本質或表達的輸出。這些符號是 -

  • 中間符號
  • 字首(波蘭)符號
  • 字尾(反向波蘭)符號

這些符號被命名為它們如何利用運算子表示式。我們將在這裡學會這些內容。

中間符號

我們編寫表示式中綴記號,例如,A-B+C,其中運算子用於在兩者之間的運算元。這是很容易為我們人類所讀,寫和說中綴表示法,但不能使用計算裝置順利計算。用演算法來處理中間符號是困難和昂貴的時間和空間消耗。

字首表示法

在此標記,運營商的字首運算元,即算提前寫入運算元。在此標記,操作符到字首運算元,即操作符提前寫入運算元。 例如,+ab. 這相當於其中綴符號 a+b. 字首表示法也被稱為波蘭表示法。

字尾表示法

這個符號風格被稱為逆波蘭表示法。在此標記風格,操作者字尾運算元,即,操作符是在運算元後寫的。例如,ab+. 這相當於其中綴符號:a+b.

下表簡要試圖展示在所有三個符號的差異 ?

S.n. 中綴表示法 字首表示法 字尾表示法
1 a + b + a b a b +
2 (a + b) * c * + a b c a b + c *
3 a * (b + c) * a + b c a b c + *
4 a / b + c / d + / a b / c d a b / c d / +
5 (a + b) * (c + d) * + a b + c d a b + c d + *
6 ((a + b) * c) - d - * + a b c d a b + c * d -

解析表示式

正如我們所討論的,它並不是設計一個演算法或程式來解析中綴符號非常有效的方法。相反,這些中綴符號首先被轉換成或者字尾或字首符號,然後計算。

分析任何算術表示式,我們需要注意運算子優先順序和關聯性。

優先順序

當一個運算元是在兩個不同的操作符之間,其中操作符將先採取運算元,由操作者於其他的優先順序決定。例如 -

Operator Precendence

由於乘法運算的優先順序高於加法,b * c 將首先計算。運算子優先順序的表格在稍後提供。

關聯性

關聯性描述了使用相同的優先順序運算子出現在一個表示式規則。例如,在表示式 a+b?c, +和 - 都具有相同的優先順序,那麼該表示式的一部分將首先計算,通過這些運算子的關聯性決定的。在這裡,無論是 + 和 - 是左關聯的,所以表示式將被計算作為 (a+b)?c.

優先順序和結合,確定一個表示式的計算順序。運算子優先順序和結合表如下所示(最高到最低)?

S.n. 操作符 優先順序 關聯性
1 Esponentiation ^ 最高 右關聯
2 Multiplication ( * ) & Division ( / ) 次高 左關聯
3 Addition ( + ) & Subtraction ( ? ) 最低 左關聯

在表示式計算任何時間點,順序可以通過使用括號所改變。 例如,

在A + B * C,表達部分:B * C將首先計算,這是由於乘法優先於加法。我們在這裡使用括號,使 A + B 首先進行評估計算,如(A + B)* C。