什麼是字尾表示法?
在後綴表示法中,運算子出現在運算元之後,即運算子與運算元之間的運算子被取出並附加到運算元之後。
示例1 − 將 a ∗ d − (b + c) 轉換為字尾形式。
解決方案
ad ∗ bc + −
示例2 − 將 a + (b ∗⊝ c) 轉換為字尾形式。
解決方案
這裡 ⊝ 表示一元減運算子。
a b c ⊝ ∗ +
示例3 − 使用棧實現將字尾表示式轉換為中綴表示式
a d ∗ bc + −
解決方案
字串符號 | 棧 |
---|---|
ad ∗ bc + − | |
A | A |
D | ad |
* | (a * d) |
B | (a * d)b |
C | (a * d)b c |
+ | (a ∗ d)(b + c) |
- | (a ∗ d)-(b + c) |
示例4 − 計算字尾表示式的值。
57 + 2 ∗ 3/
解決方案
可以使用棧來評估此表示式。每個符號可以按順序插入,並且運算子可以應用於位於棧頂部的運算元及其旁邊的運算元。
符號 | 棧 | 描述 |
---|---|---|
5 | 5 | |
7 | 5 7 | 5 + 7 |
+ | 12 | |
2 | 12 2 | |
* | 24 | 12 * 2 |
3 | 24 3 | |
/ | 8 | 24/3 |
∴ 答案是 8。
控制語句中使用的字尾表示法
- 跳轉 − 跳轉到標籤 𝑙 可以用字尾表示法寫成 −
𝑙jump
- jlt(如果小於則跳轉) − e1 e2 𝑙 jlt 如果 e1 的值小於 e2,則跳轉到標籤。
- jeqz(如果等於零則跳轉) − e 𝑙 jeqz 如果 e 的值為零,則跳轉到 𝑙。
示例5 − 將以下語句轉換為字尾表示法。
if e then x else y
解決方案
If − else 語句可以寫成
If e then
x
else
𝑙1: y
𝑙2: exit
字尾表示法將是
示例6 − 將表示式轉換為字尾表示法。
if a then if c + d then a + c else a * c else a + b.
解決方案
它可以寫成
if a then
if c + d then
a + c
else
a * c
𝑙1
else
𝑙2: a + b
𝑙3: exit
廣告