編譯原理 三元式和樹形表示

2021-09-22 10:26:37 字數 732 閱讀 7171

三元式主要由三部分組成:

其中,op是運算子,arg1、arg2分別是第一和第二兩個運算物件。當op是一目運算時,常常將運算物件定義為arg1。

為了盡量少地改動三元式表,我們可以另設一張間接碼表來表示有關三元式在三元式表的計值順序。用這種方法處理的中間**稱為間接三元式。

x =(

a+b)

∗cx=(a+b)*c

x=(a+b

)∗cy=d

↑(a+

b)y=d↑(a+b)

y=d↑(a

+b)

間接碼表

三元式表

(1)(1)(+,a,b)

(2)(2)(*,(1),c)

(3)(3)(=,x,(2))

(1)(4)(↑,d,(1))

(4)(5)(=,y(4))

(5)三元式(1)(+,a,b)在間接碼表**現了兩次,但三元式表中實際只有乙個三元式。

樹形結構實際上是三元式的另一種表示形式。

三元表示式,生成式

條件,條件成立返回值,不成立返回值 deffunc x,y if x y return x else return y func 1,2 等同於三元表示式 條件成立就返回左邊的值,不成立就是右邊的值 x 1 y 2 res x if x y else y print res 2def func x,...

三元組表示稀疏矩陣並相加

要求稀疏矩陣用三元組結構儲存,實現矩陣a b c,並採用矩陣形式顯示結果。定義兩個結構體,triple結構體用來存放每乙個非零元素的資訊 行標,列標,數值 tripledata用來存放兩個三元組矩陣的資訊 行數,列數,非零元素的個數 每乙個三元組結構都需要呼叫這兩個結構體,兩個結構體共同組成乙個稀疏...

三元表示式 生成式和函式遞迴

x 1 y 2res x if x y else y print res res 111111 if egon egon else 2222222222 print res 三元表示式可直接做返回值 def func x,y if x y return x else return y def fun...