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

正文內(nèi)容

南開大學(xué)編譯原理第四章-文庫吧

2025-01-03 19:01 本頁面


【正文】 id { p = lookup()。 if (p != null) = p。 else error。 } 在符號表中查找標識符 臨時名字的重用 ? newtemp每次產(chǎn)生不同名字,浪費空間 ?E→E 1 + E2? 計算 E1?t1 計算 E2?t2 t = t1 + t2 ?計算 E2的臨時變量的生存期都包含在 t1內(nèi) ?重用算法 ——計數(shù)器 c,初始為 0 ? 臨時名字作為運算對象使用 ?c ? 生成新的臨時名字 ——$c, c++ 例 ?x = a * b + c * d – e * f $0, $1為運算對象, c減 2,變?yōu)?0?結(jié)果又保存在 $0 數(shù)組元素尋址 ?一維數(shù)組 ? type A[low..high]。 ? 計算 A[i]的地址 ?A的起始地址 ——base ?數(shù)組元素大小 ——w ?A[i]與 A起始位置的“距離” ——(i – low) * w ?最終結(jié)果: base + (i – low) * w ? i * w + (base – low * w) ?(base – low * w)為常量,可在編譯時計算 A[i] base (i – low) * w 數(shù)組元素尋址(續(xù)) ?二維數(shù)組: ? type A[low1..high1, low2..high2] ? 計算 A[i1, i2]地址 ?數(shù)組的數(shù)組,兩次利用一維數(shù)組計算方法 ?行: n2=high2–low2+1個元素的一維數(shù)組 ?元素 二維數(shù)組: n1=high1low1+1個“行”的一維數(shù)組 ?i1行的位置 (i1 low1) * n2 ?A[i1, i2]距行開始位置的距離: i2 – low2 ?最終結(jié)果 base + ((i1 low1) * n2 + i2 low2) * w ?((i1*n2) + i2)*w + (base – ((low1*n2) + low2)*w) ?(base – ((low1*n2) + low2)*w)為常量 A[low1, low2] … A[low1, high2] … A[i1, low2] … A[i1, i2] … base n2 * w 數(shù)組元素尋址(續(xù)) ?擴展到多維情況 ? type A[low1..high1, …, low k..highk] ?計算 A[i1, i2, …, i k]的地址 ?最終結(jié)果 ?((…((i 1n2 + i2)n3 + i3)…)n k + ik) * w + base– ((…((low 1n2+low2)n3 + low3)…)n k + lowk) * w 實現(xiàn)方法 L→ id [ Elist ] | id ? L→ Elist ] | id Elist→Elist , E | E Elist→Elist , E | id [ E ?(…((i 1n2 + i2)n3 + i3)…)n m + im的計算 e1=i1, em=em1*nm + im ? :數(shù)組維數(shù) ? :下標表達式計算結(jié)果, em ? limit(array, j):第 j維的大小, nm ? :基地址(地址計算常量部分) ? :偏移,普通變量為 null 數(shù)組元素尋址的翻譯模式 ? 文法 (1) S→ L := E (2) E→ E + E (3) E→ ( E ) (4) E→ L (5) L→ Elist ] (6) L→ id (7) Elist→ Elist , E (8) Elist→ id [ E 數(shù)組元素尋址的翻譯模式 (續(xù) ) (1) S→ L := E { if ( == null) emit( ‘:=’ )。 else emit( ‘[’ ‘]’ ‘:=’ )。 } (2) E→ E 1 + E2 { = newtemp。 emit( ‘:=’ ‘+’ )。 } (3) E→ ( E 1 ) { = 。 } 普通變量?數(shù)組? 數(shù)組元素尋址的翻譯模式 (續(xù) ) (5) L→ id { = 。 = null。 } (6) Elist→ Elist 1 , E { t = newtemp。 m = + 1。 emit(t ‘:=’ ‘*’ limit(, m))。 emit(t ‘:=’ t ‘+’ )。 = 。 = t。 = m。 } (5) Elist→ id [ E { = 。 = 。 = 1。 } em1 em em=em1*nm + im im 數(shù)組元素尋址的翻譯模式 (續(xù) ) (4) E→ L { if ( == null) = 。 else { = newtemp。 emit( ‘:=’ ‘[’ ‘]’)。 }} (5) L→ Elist ] { = newtemp。 = newtemp。 emit( ‘:=’ c())。 emit( ‘:=’ ‘*’ width())。 } 地址計算常量部分 例 10 20的數(shù)組, low1=low2=1, n1=10, n2=20, w=4 翻譯 x := A[y, z] 生成的三地址碼: t1 := y * 20 t1 := t1 + z t2 := c t3 := 4 * t1 t4 := t2[t3] x := t4 類型轉(zhuǎn)換 ?E→E 1 + E2的語義動作 = newtemp。 if ( == integer amp。amp。 == integer) { emit( ‘:=’ ‘int+’ 。 = integer。 } else if ( == real amp。amp。 == real) { emit( ‘:=’ ‘real+’ 。 = real。 } else if ( == integer amp。amp。 == real) { u = newtemp。 emit(u ‘:=’ ‘inttoreal’ )。 emit( ‘:=’ u ‘real+’ 。 = integer。 } else if ( == real amp。amp。 == integer) … 類型轉(zhuǎn)換例子 ? x := y + i * j x、 y——實數(shù) i、 j——整數(shù) t1 := i int* j t3 := inttoreal t1 t2 := y real+ t3 x := t2
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1