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

正文內(nèi)容

第7章語義分析與中間代碼生成-在線瀏覽

2024-12-14 22:23本頁面
  

【正文】 ? 其定義域類型為 char char,值域類型為pointer(integer)。 2020/11/17 18 類型等價 ? 許多 類型檢查的規(guī)則 都具有如下的形式: ? if兩個類型表達式等價 then返回一種特定類型 else返回type_error。 ? 如果將類型名看作只代表它們自己的話,則上述條件中的前兩個將導致類型表達式的 名字等價 ? 兩個類型表達式名字等價當且僅當它們完全相同 2020/11/17 19 聲明語句的文法 ? P → prog id (input, output) D 。 D | List : T | proc id D 。 D D→id : T {enter( , , offset )。 := 4} T→real { := real。 := * } T→↑T1 { := pointer( )。id :i n te g e rTDDP例 x:real。 offset := offset + } 2020/11/17 23 例 x:real。D ?{offset:=0}x:T{enter(x,offset)。D ?{offset:=0}x:real{:=real。offset:=offset+}。offset:=8}。offset:=8}。 offset:=offset+} ?x:real{(x,real,0)。i:integer{:=integer。offset:=offset+} ?x:real{(x,real,0)}。offset:=12} 2020/11/17 24 嵌套過程中聲明語句的翻譯 ? 所討論語言的文法 P ? prog id (input, output) D 。 D | id : T | proc id D 。 S {addwidth (top(tblptr), top(offset))。 pop(offset) } M ? ? {t := mktable(nil)。 push(0,offset) } D ? D1 。N D1。 addwidth(t,top(offset))。pop(offset)。 top(offset): =top( offset) + } N ? ? {t := mktable(top(tblptr) )。 push(0,offset) } 嵌套過程中聲明語句的翻譯 2020/11/17 26 program sort(input,output)。 x:integer。 var i:integer。 begin x:=a[i]。a[j]:=x。 var k,v:integer。 var i,j:integer。 begin … end; begin … end; 例 一個帶有嵌套的pascal程序 (圖 ) 2020/11/17 27 表 頭 空 sort offset tblptr top top 0 2020/11/17 28 表 頭 空 sort offset tblptr top top 40 a array 0 2020/11/17 29 x integer 40 a array 0 表 頭 空 sort offset tblptr top top 44 2020/11/17 30 表 頭 空 sort readarrary 表 頭 offset tblptr top top 44 0 a array 0 x integer 40 2020/11/17 31 表 頭 空 sort readarrary 表 頭 offset tblptr top top 44 4 a array 0 x integer 40 i integer 0 2020/11/17 32 表 頭 空 sort readarrary 表 頭 4 offset tblptr top top 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray 2020/11/17 33 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 top top 0 2020/11/17 34 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 2020/11/17 35 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 quicksort 0 2020/11/17 36 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 quicksort 4 k integer 0 2020/11/17 37 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 quicksort 8 k integer 0 v integer 4 2020/11/17 38 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 quicksort 8 k integer 0 v integer 4 表 頭 partition 0 2020/11/17 39 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 quicksort 8 k integer 0 v integer 4 表 頭 partition 4 i integer 0 2020/11/17 40 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 quicksort 8 k integer 0 v integer 4 表 頭 partition 8 i integer 0 j integer 4 2020/11/17 41 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 quicksort 8 k integer 0 v integer 4 表 頭 8 partition i integer 0 j integer 4 partition 2020/11/17 42 表 頭 空 sort readarrary 表 頭 4 offset tblptr 44 a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 8 quicksort k integer 0 v integer 4 表 頭 8 partition i integer 0 j integer 4 partition quicksort 2020/11/17 43 表 頭 44 空 sort readarrary 表 頭 4 offset tblptr a array 0 x integer 40 i integer 0 readarray 指向 readarray exchange 表 頭 0 top top exchange 指向 exchange 表 頭 8 quicksort k integer 0 v integer 4 表 頭 8 partition i integer 0 j integer 4 partition quicksort 2020/11/17 44 記錄的翻譯 ? 空間分配 ? 設置首地址和各元素的相對地址 ? 大于所需的空間 (對齊 ) ? 例: struct Node { float x, y。 } node。 := top(offset)。 pop(offset) } L ? ? {t := mktable(nil)。push(0,offset)} 2020/11/17 47 賦值語句的翻譯 翻譯的需求 ? 充分了解各種語言現(xiàn)象的語義 ? 包括:控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、單詞 ? 充分了解它們的實現(xiàn)方法 ? 目標語言的語義 ? 了解中間代碼的語義 ? 了解運行環(huán)境 2020/11/17 48 輔助子程序與語義屬性設置 ? 輔助子程序 ? gencode(code), emit(code):產(chǎn)生一條中間代碼 ? newtemp:產(chǎn)生新的臨時變量 ? lookup:檢查符號表中是否出現(xiàn)某名字 ? 語義屬性設置 ? 中間代碼序列: code ? 地址: addr ? 下一條四元式序號: nextquad 2020/11/17 49 簡單賦值語句的翻譯 S ? id := E {p := lookup()。 emit(,‘:=’,‘+’,)} E ? ?E1 { := newtemp。 if p ? nil then := p else error } 2020/11/17 50 臨時名字的重用 ? 大量臨時變量的使用對優(yōu)化有利 ? 大量臨時變量會增加符號表管理的負擔 ? 也會增加運行時臨時數(shù)據(jù)占的空間 E ? E1 + E2的動作產(chǎn)生的代碼的一般形式為 計算 E1到 t1 計算 E2到 t2 t3 := t1 + t2 (( ))((( )( ))( )) 臨時變量的生存期像配對括號那樣嵌套或并列 2020/11/17 51 基于臨時變量生存期特征的三地址代碼 x := a ? b + c ? d ? e ? f 語 句 計數(shù)器 c的值 0 $0 := a ? b 1 $1 := c ? d 2
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1