後綴表示法

後綴表示法

通常將運算符寫在運算量之間,例如a+b,這種表示法稱為中綴表示法。後綴表示法又稱逆波蘭表示法,它是波蘭邏輯學家盧卡西維奇發明的一種表示表達式的方法。這種表示法把運算量寫在前面,把運算符寫在後面(後綴),例如a+b寫作ab+,a+b*c寫作abc*+,(a+b)*c寫作ab+c*等等。

基本介紹

  • 中文名:後綴表示法
  • 外文名:postfix notation
  • 定    義:又稱逆波蘭表示法
  • 套用學科:計算機原理術語
概念,工作原理,

概念

通常將運算符寫在運算量之間,例如a+b,這種表示法稱為中綴表示法。後綴表示法又稱逆波蘭表示法,它是波蘭邏輯學家盧卡西維奇發明的一種表示表達式的方法。這種表示法把運算量寫在前面,把運算符寫在後面(後綴),例如a+b寫作ab+,a+b*c寫作abc*+,(a+b)*c寫作ab+c*等等。一般而言,若θ是一個k(k≥1)目運算符,它對k個運算量(廣義地說是k個後綴式)
作用的結果將被表示成
。這種表示法不帶括弧,根據運算量和運算符出現的先後位置以及每個運算符的目數,就完全決定了一個表達式的計算順序。後綴表示法的特點是:
(1)運算量的排列順序與中綴表示法相同;
(2)運算符是按運算的順序排列的;
(3)運算符緊跟在被運算的對象之後出現。
後綴表示法雖然不符合人的習慣,但對計算機來說,可以很容易地使用一個棧來計算它的值或轉換成另一種代碼。因此,它便成了編譯過程中翻譯表達式的另一種常用的中間代碼形式。

工作原理

語法制導生成後綴式
(1)利用算符優先分析法進行語法分析。
首先,為分析過程設定一個一維數組POST來暫存後綴式,並置下標k=1。假定算符優先分析表已造好,就可利用通用算符優先分析算法進行語法分析、在對素短語進行歸約時,執行如上的語義子程式,便可獲得表達式的後綴表示。
(2)利用優先函式進行語法制導翻譯。
假定表達式的優先函式如下表所示:
+
*
i
(
)
#
f
6
8
8
12
2
11
1
g
4
7
10
10
10
2
1
除了下推棧外,我們也設定了一個一維數組POST存放後綴式,並令下標t=1;POST[t]=0;下推棧的初始指針k=1;S[K]=#。
後綴表示法的計值或產生中間代碼
利用後綴式計值的過程是:自左至右掃描後綴式,每碰到運算量就把它推進棧,每碰到k目算符就把它作用於棧頂的k項,並用運算結果來代替這k項。
例如,考慮後綴式ab+c*的計值過程,它的步驟是:
(1)把a推進棧;
(2)把b推進棧;
(3)將棧頂兩項相加,並從棧中彈出這兩項,將相加結果壓入棧;
(4)把c推進棧;
(5)將棧頂兩項相乘,並從棧中彈出這兩項,將相乘結果壓入棧。
最後,在棧頂只留下該表達式計算結果。若要生成某中間代碼,只需對上述過程作少許改動,其算法可寫作:自左至右掃描後綴式,每碰到運算量就把它推進棧,每碰到k目算符,就將它作用於棧頂的k項,並生成相應的中間代碼,且以結果的臨時變數序號代替該棧頂的k項。

相關詞條

熱門詞條

聯絡我們