freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]第7章語(yǔ)義分析(參考版)

2024-10-22 00:25本頁(yè)面
  

【正文】 VAR table: array[1..50] of person。 age:integer。 F 可表示為類(lèi)型表達(dá)式: char char pointer(integer) 69 ? 記錄 TYPE person=RECORD name:array[1..8] of char。 構(gòu)造符: 數(shù)組 array( I, T) 乘積 T1 T2 記錄 record((N1 T1) (N2 T2) …………. ) 指針 pointer(T) 函數(shù) T1 T2 ……….. R 68 類(lèi)型表達(dá)式舉例 ? 數(shù)組 Var A: array[1..100 ] of real。簡(jiǎn)化的注釋分析樹(shù)如圖所示。 } 65 例: 將語(yǔ)句 if ab then while ab do a := a+b翻譯成三地址碼。 )。 emit(39。 backpatch(, )。 := merge(, merge(, ))。 } (4) ?S → if E then M1 S1 N else M2 S2 { backpatch(, )。goto –39。 } (3) ?N →ε { := mkchain(nextstat)。 } (2) ?S → if E then M S1 { backpatch(, )。 屬性 .begin:某三地址碼序號(hào),如 while語(yǔ)句三地址碼序列的首地址。設(shè) nextstat初值為 1,由于分析樹(shù)中 E5的真、假值鏈分別是 (5, 1)和 (6, 4),所以在后繼的分析中,一旦 E5的真、假出口被確定,就可以沿這兩個(gè)鏈正確回填。)。 emit( 39。} (9) | false { := mkchain(nextstat)。goto –39。 :=mkchain(?)。)。 emit(39。goto –39。if39。 := mkchain(nextstat+1)。)。 emit(39。goto –39。if39。 := mkchain(nextstat+1)。 := 。 := 。 := 。 } (3) | E1 and M E2 { backpatch(, )。 := merge(, )。 每執(zhí)行一次 emit后自動(dòng)加 1 59 語(yǔ)義規(guī)則可設(shè)計(jì)如下: (1) M →ε { := nextstat。 圖:三地址碼鏈上的操作 (a) 鏈的建立; (b) 鏈的合并; (c) 地址的回填 58 將文法改寫(xiě)為: E → E or M E | E and M E | not E | (E) | id relop id | id | true | false M →ε 同時(shí) , 為 M引入一個(gè)新的屬性 .stat, 它記錄當(dāng)前第一個(gè)可用三地址碼的序號(hào) 。 57 例: 假設(shè)有兩個(gè)序號(hào)分別為 i和 j的三地址碼 (i)goto–和 (j)goto–。 新增兩個(gè)屬性:屬性 .tc:真出口鏈,鏈接所有轉(zhuǎn)向真出口的三地址碼; 屬性 .fc:假出口鏈,鏈接所有轉(zhuǎn)向假出口的三地址碼。 else S12 x := y S1 51 生成的三地址代碼序列 L1: if a b goto L2 goto Lnext L2: if c 5 goto L3 goto L4 L3: if x y goto L5 goto L6 L5: t1 := x + 1 z := t1 goto L3 L4: x := y L6: goto L1 Lnext: 52 表示為四元式 ? If a goto p 表示為( j, a, , p) ? If xy goto p 表示為( j, x, y , p) ? Goto p表示為( j, , p) 53 L1: if a b goto L2 goto Lnext L2: if c 5 goto L3 goto L4 L3: if x y goto L5 goto L6 L5: t1 := x + 1 z := t1 goto L3 L4: x := y L6: goto L1 Lnext: 1: (j ,a ,b , ) 2: (j , , , ) 3: (j ,c ,5 , ) 4: (j , , , ) 5: (j ,x ,y , ) 6: (j , , , ) 7: (+,x1,1,T1) 8: (:=,T1, ,z) 9:(j , , , ) 10: (:=,y, ,x) 11: (j , , , ) 3 12 5 10 711 5 1 54 拉鏈與回填 實(shí)施時(shí)需要解決兩個(gè)問(wèn)題:在一次遍歷中 ① 如何實(shí)現(xiàn)表達(dá)式的真 、 假出口; ② 如何在語(yǔ)法分析的同時(shí)正確生成三地址碼序列 ,即所有的轉(zhuǎn)向均可確定 。goto39。:39。:39。 := newlabel。 ) || 語(yǔ)義過(guò)程 – 新標(biāo)號(hào)的產(chǎn)生 newlabel 48 S → while C do S1 的翻譯 ::? 語(yǔ)句等價(jià)于: If C then Begin S1 Goto C標(biāo)號(hào) end 49 循環(huán)語(yǔ)句的屬性文法 S → while C do S 1 := 。 ) || gen( 39。 ) || || gen( 39。 := || gen( 39。 else S2 := newlabel。 := || gen( ‘:‘) || 45 控制語(yǔ)句的翻譯 ? 高級(jí)語(yǔ)言的控制結(jié)構(gòu) – 順序 begin 語(yǔ)句 。 :=。goto‘ ) :=。 39。 := || gen( ‘:‘) || 屬性文法 := gen( 39。 :=。 Gen( ‘ :=‘ ‘1’)} 42 例:表達(dá)式 ab and cd 的三地址代碼 ? 1: if ab goto 4 ? 2: T1:=0 ? 3: goto 5 ? 4: T1:=1 ? 5: if cd goto 8 ? 6: T2:=0 ? 7: goto 9 ? 8: T2:=1 ? 9:T3:=T1 and T2 43 布爾表達(dá)式 出現(xiàn)在條件語(yǔ)句中 ,要確定轉(zhuǎn)向的語(yǔ)句標(biāo)號(hào) If E then S1 else S2 若 E為 a relop b ,:= If a relop b goto Goto 若 E為 E1 or E2,:= : 翻譯代碼為: : goto : :
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1