為表示式-(a + b) * (c + d) - (a + b + c) 構造四元式、三元式和間接三元式
解決方案
首先,此語句將轉換為三地址碼,如下所示:
t1 = a + b
t2 = -t1
t3 = c + d
t4 = t2 * t3
t5 = t1 + c
t6 = t4 - t5
四元式
| 位置 | 運算子 | 引數 1 | 引數 2 | 結果 |
|---|---|---|---|---|
| (0) | + | a | b | t1 |
| (1) | - | t1 | t1 | |
| (2) | + | t2 | c | d |
| (3) | t3 | t1 | d | * |
| (4) | + | t1 | t2 | t2 |
| (5) | - | * | t2 | t3 |
三元式
| 位置 | 運算子 | 引數 1 | 引數 2 |
| (0) | + | a | b |
| (1) | - | (0) | |
| (2) | + | t2 | c |
| (3) | t3 | (1) | (2) |
| (4) | + | (0) | t2 |
| (5) | - | (3) | (4) |

陣列表示
四元式是一種最多包含四個欄位的結構,即運算子、引數 1、引數 2 和結果。三元式包含三個欄位來表示三地址碼。三元式的欄位包括運算子的名稱、第一個源運算元和第二個源運算元。
這種三地址碼錶示包含三個 (3) 個欄位,即一個用於運算子,兩個用於引數(即引數 1 和引數 2)。在這種表示中,不使用臨時變數。我們不使用臨時變數,而是使用括號中的數字來表示指向符號表中該特定記錄的指標。
四元式和三元式會導致一些記憶體浪費,因為某些欄位未被佔用。為了防止浪費空間,可以使用單個數組來表示表示式。
示例- 考慮語句
a = -b + c * d
其三地址碼將為
t1 = -b
t2 = c * d
t3 = t1 + t2
a = t3
四元式將為
| 位置 | 運算子 | 引數 1 | 引數 2 | 結果 |
| (0) | - | b | t1 | |
| (1) | * | t2 | c | t1 |
| (2) | + | t1 | t1 | d |
| (3) | = | d | A |
由於四元式中存在空間浪費,因此可以將其轉換為陣列表示,如下所示:
| - | B | t1 | t3 | C | c | t1 | + | t1 | t1 | d | = | d | a |
優勢
它節省了記憶體空間。
劣勢
它無法識別單詞,即它是否是運算子或運算元。在四元式中,可以快速完成此操作,因為運算子和運算元都寫在相應的欄位中。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP