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

正文內(nèi)容

南開大學(xué)編譯原理第四章-全文預(yù)覽

2025-02-08 19:01 上一頁面

下一頁面
  

【正文】 ?利用一循環(huán)進(jìn)行檢測 ? hash表 ? 直接定位 ?取值范圍小, imin~imax ?標(biāo)號數(shù)組 label[imax imin + 1] ?值 j ? 對應(yīng)語句標(biāo)號 label[j imin] ?表達(dá)式求值 ? 直接定位標(biāo)號 翻譯方法 1 計(jì)算 E?t goto test L1: S1代碼 goto next L2: S2代碼 goto next … Ln1: Sn1代碼 goto next Ln: Sn代碼 goto next test: if (t == V1) goto L1 if (t == V2) goto L2 … if (t == Vn1) goto Ln1 goto Ln next: 翻譯方法 2 計(jì)算 E?t if t V1 goto L1 S1代碼 goto test L1: if t V2 goto L2 S2代碼 goto next L2: … Ln2: if t Vn1 goto Ln1 Sn1代碼 goto next Ln: Sn代碼 next: BackPatching技術(shù) ?第 4節(jié)語法制導(dǎo)定義實(shí)現(xiàn)方法 ? 兩遍掃描:創(chuàng)建語法樹,然后計(jì)算屬性值 ? 若單遍掃描:生成轉(zhuǎn)移語句時(shí)目的標(biāo)號未知 ? backpatching ? 語句 ?四元式數(shù)組,標(biāo)號 ——數(shù)組索引 ? makelist(i):創(chuàng)建列表,僅包含 i——指向四元式數(shù)組的索引 ? merge(p1, p2):合并列表 p p2 ? backpatch(p, i):將列表 p指向的所有語句中的空白地址用 i填入 語法制導(dǎo)定義 E→E 1 or M E2 { backpatch(, )。 = || || gen( ‘:=’ ‘+’ )。 E→ id1 relop id2 = gen(‘if’ ‘goto’ ) || gen(‘goto’ ) E→ true = gen(‘goto’ )。 = 。 = 。 = 。 = 。 = 。 = 。 emit( ‘:=’ ‘1’)。 emit( ‘:=’ ‘0’)。 emit( ‘:=’ ‘not’ )。 emit( ‘:=’ ‘or’ )。 = integer。amp。amp。amp。 emit( ‘:=’ c())。 else { = newtemp。 } (5) Elist→ id [ E { = 。 emit(t ‘:=’ t ‘+’ )。 = null。 } (2) E→ E 1 + E2 { = newtemp。 else error。 } E→ E1 { = newtemp。 } E→ E 1 + E2 { = newtemp。 push(0, offset)。 pop(tblptr)。 push(0,offset)。 pop(tblptr)。 D2 D ? proc id 。 pop(tblptr)。 } T ? integer { = integer 。 = ‘’ } 控制流語句的翻譯 ? while語句: S ? while E do S1 ?翻譯為 : if = 0 goto goto : ?語法制導(dǎo)定義: = newlabel。 = || || || gen( ‘:=’ ‘+’ ) } E ? E1 * E2 {= newtemp 。y, x := *y 語法制導(dǎo)翻譯生成三地址碼 ?賦值語句: id := E ?利用屬性 ? :保存 E的值的名字 ? :計(jì)算 E的三地址代碼 ?newtemp:生成臨時(shí)變量名 ?gen:輸出一條三地址碼指令 賦值語句的翻譯 PRODUCTION Semantic Rule S ? id := E { = || gen( ‘:=’ ) } E ? E1 + E2 {= newtemp 。 = } E ? id { = 。 = 1。 = 4} 作用域的處理 處理作用域的翻譯模式 P ? M D { addwidth(top(tblptr), top(offset))。 push(0, offset)} D ? D1 。 addwidth(t,top(offset))。 push(t,tblptr)。 = top(offset)。 push(t, tblptr)。 else error。 emit( ‘:=’ ‘*’ 。 if (p != null) = p。 else emit( ‘[’ ‘]’ ‘:=’ )。 } 普通變量?數(shù)組? 數(shù)組元素尋址的翻譯模式 (續(xù) ) (5) L→ id { = 。 emit(t ‘:=’ ‘*’ limit(, m))。 = m。 } em1 em em=em1*nm + im im 數(shù)組元素尋址的翻譯模式 (續(xù) ) (4) E→ L { if ( == null) = 。 = newtemp。 if ( == integer amp。 } else if ( == real amp。 } else if ( == integer amp。 emit( ‘:=’ u ‘real+’ 。 == integer) … 類型轉(zhuǎn)換例子 ? x := y + i * j x、 y——實(shí)數(shù) i、 j——整數(shù) t1 := i int* j t3 := inttoreal t1 t2 := y real+ t3 x := t2 記錄(結(jié)構(gòu))域的訪問 ?保存每個(gè)域的類型和相對地址 ?符號表 ? lookup可用于域名字 ?獨(dú)立符號表 ? t:符號表指針, record(t)? ?翻譯 p^.info + 1 ? p的類型 pointer(record(t)) ? p^的類型 record(t) ? 得到 t?查找 info域 布爾表達(dá)式的翻譯 ? E→E or E | E and E | not E | (E) | id relop id | true | false ? 兩種翻譯方式 ? 數(shù)值編碼: 0- false,非
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1