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

正文內(nèi)容

編譯原理課件07_語義分析和中間代碼產(chǎn)生-預(yù)覽頁

2025-06-11 18:50 上一頁面

下一頁面
 

【正文】 (3) (5) assign a (4) 三地址語句 ? x[i]:=y op arg1 arg2 (0) [ ] = x i (1) assign ( 0) y ? x:=y[i] op arg1 arg2 (0) = [ ] y i (1) assign x (0) 三地址語句 ? 間接三元式 ?為了便于優(yōu)化 , 用 三元式表 +間接碼表 表示中間代碼 ?間接碼表 :一張指示器表 , 按運(yùn)算的先后次序列出有關(guān)三元式在三元式表中的位置 。 addtype (, ) L? id addtype (, ) 聲 明 語 句 D ? id L { addtype (id. entry, L. type)} L ? , id L1 {L. type := L1. Type。 offset := offset + } T ? integer { := integer。 := 4 } offset:用于跟蹤可用的相對地址的位置 。 D 。 push(t, tblprt)。 S {t := top(tblptr)。 enterproc(top(tblptr), , t) } D?id : T {enter(top(tblptr), , , top(offset))。 聲 明 語 句 exchange readarray x a 表 頭 空 sort quicksort 指向 readarray partition v k 表 頭 quicksort readarrary i 表 頭 exchange 表 頭 指向 exchange partition 賦值語句的翻譯 ? 簡單算術(shù)表達(dá)式及賦值語句 為賦值語句生成三地址代碼的 S屬性文法定義 產(chǎn)生式 語義規(guī)則 S→id:=E := || gen( ‘:=’ ) E→E 1+E2 :=newtemp。 := E→id :=。 emit( ‘:=’ E ‘*’ E )} 產(chǎn)生賦值語句三地址代碼的翻譯模式 E→ E1 { :=newtemp。 emit( ‘:=’ ‘[’ ‘]’) end } A[i1,i2,…,i k] ((… i1 n2+i2)n3+i3)…)n k+ik) w + base((…((low 1 n2+low2)n3+low3)…)n k+lowk) w (8) Elist→id [ E { :=。 emit(t ‘:=’ ‘*’ limit(,m))。 :=m } A[i1,i2,…,i k] ((… i1 n2+i2)n3+i3)…)n k+ik) w + base((…((low 1 n2+low2)n3+low3)…)n k+lowk) w (5) L→Elist ] { :=newtemp。 :=null } 例 : 賦值語句 : x:=A[y,z] ? T1:=y*20 ? T1:=T1+z ? T2:=A84 ? T3:=4*T1 ? T4:=T2[T3] ? x:=T4 類型轉(zhuǎn)換 ? 用 E的類型屬性 ? 對應(yīng)產(chǎn)生式 E?E1 op E2的語義動作中關(guān)于: { if =integer a =integer :=integer else :=real } ? 算符區(qū)分為整型算符 int op和實(shí)型算符 real op, ? x:=y+ i*j 其中 x、 y為實(shí)型; i、 j為整型 。 :=real end else if =integer and =real then begin u:=newtemp。 emit (u ‘:=’ ‘inttoreal’ E )。 emit( ‘:=’ E ‘or’ )} E→E 1 and E2 {:=newtemp。 emit( ‘:=’ ‘0’)。 :=。 :=。 := 表達(dá)式中執(zhí)行 goto哪里去了呢 ? 產(chǎn)生布爾表達(dá)式三地址代碼的語義規(guī)則 產(chǎn)生式 語義規(guī)則 E→ (E 1) :=。 一遍掃描實(shí)現(xiàn)布爾表達(dá)式的翻譯 ? 采用四元式形式 ? 把四元式存入一個數(shù)組中,數(shù)組下標(biāo)就代表四元式的標(biāo)號 ? 約定 四元式 (jnz, a, , p) 表示 if a goto p 四元式 (jrop, x, y, p) 表示 if x rop y goto p 四元式 (j, , , p) 表示 goto p ? 有時(shí) ,四元式轉(zhuǎn)移地址無法立即知道 ,我們只好把這個未完成的四元式地址作為 E的語義值保存 ,待機(jī) 回填 。 ?函數(shù) makelist(i), 它將創(chuàng)建一個僅含 i的新鏈表,其中i是四元式數(shù)組的一個下標(biāo) (標(biāo)號 );函數(shù)返回指向這個鏈的指針。 :=merge(, )。 :=} (4) E→(E1) { :=。 emit(‘j, - , - , 0’) } (6) E→id { :=makelist(nextquad)。 :=。 := || gen( ‘:’) || || gen(‘goto’ ) || gen( ‘:’) || ? whiledo語句 S → while E do S1 To To goto : …… : : whiledo語句的屬性文法 產(chǎn)生式 語義規(guī)則 S→while E do S 1 :=newlabel。 :=gen( ‘:’) || || gen( ‘:’) || || gen(‘goto’ ) 考慮如下語句 : while ab do if cd then x:=y+z else x:=yz 考慮如下語句 : while ab do if cd then x:=y+z else x:=yz ? 生成下列代碼: L1: if ab goto L2 goto Lnext L2: if cd goto L3 goto L4 L3: T1:=y+z x:=T1 goto L1 L4: T2:=yz x:=T2 goto L1 Lnext: 一遍掃描翻譯控制流語句 ? 考慮下列產(chǎn)生式所定義的語句 : (1) S→if E then S (2) | if E then S else S (3) | while E do S (4) | begin L end (5) | A (6) L→L。 :=merge(, , ) } 3. M→ ? { :=nextquad } 4. N→ ? { :=makelist(nextquad)。S 改寫為: L→L1。 100 (j, a, b, 102) 101 (j, , , 107) 102 (j, c, d, 104) 103 (j, , , 100) 104 (+, y, z, T) 105 (:=, T, , x) 106 (j, , , 100) 107 標(biāo)號與 goto語句 ? 標(biāo)號定義形式 L: S; ? 標(biāo)號引用 goto L; ? 示例: ?向后轉(zhuǎn)移: L1: …… …… goto L1。 C2: S2。 emit(‘call’ ) } 2. Elist→Elist, E { 將 queue的隊(duì)尾 } 3. Elist→E { 初始化 queue僅包含 } 作業(yè) ? P133—3, 4, 6, 7
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1