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

正文內(nèi)容

[工學(xué)]哈工大編譯原理-文庫(kù)吧

2025-09-19 23:51 本頁(yè)面


【正文】 t+ } { : =integer。 : = 4} { := real。 := 8} {:= array( , )。 : = *} { := pointer( T1. type); : = 4} 辛明影 19 Name type kind …… addr X Y ………… real 簡(jiǎn)單變量 4 int 簡(jiǎn)單變量 0 x:integer。y:real P Offset=0 D D D 。 x : T Y : T Enter。offset Enter。offset Offset=0 t=4t=12 Int real =int =4 =real =8辛明影 20 1 .問(wèn)題的提出 二、 保留作用域信息 一般的語(yǔ)言中,標(biāo)識(shí)符的作用在程序正文中有一個(gè)確定的范圍。 因此,同一個(gè)標(biāo)識(shí)符在不同的程序正文中可能標(biāo)識(shí)不同的對(duì)象, 具有不同的性 質(zhì),要求分配不同的存儲(chǔ)空間。 辛明影 21 于是提出下面的問(wèn)題: 如何組織符號(hào)表, 使得同一個(gè)標(biāo)識(shí)符在不同的作用域中得到正確的引用而不產(chǎn)生混亂。 進(jìn)一步我們考慮一下具有嵌套定義的程序結(jié)構(gòu) 辛明影 22 2. 嵌套的程序結(jié)構(gòu) program sort( input, output); var x, a : array[ 0..10] of integer; begin … end. procedure readarray; var i : integer; begin … end; procedure quicksort( m, n : integer); var i ,k: integer; begin … end; procedure exchange; begin … end; procedure partition ( y , z : integer ) var i, j : integer; begin … end。 辛明影 23 嵌套說(shuō)明的文法: P→D D→D。 D D→id : T D→proc id。D。S …….. 此處的 T用于產(chǎn)生類(lèi)型; S用于產(chǎn)生語(yǔ)句 辛明影 24 嵌套說(shuō)明的程序結(jié)構(gòu)首先要解決的問(wèn)題是:非局部數(shù)據(jù)的訪問(wèn) 綜合上述情況,對(duì)于程序結(jié)構(gòu)采用分程 序結(jié)構(gòu)的程序來(lái)說(shuō),要解決的問(wèn)題是: 解決方法 :為每一個(gè)過(guò)程建立一個(gè)符號(hào)表 辛明影 25 具體翻譯時(shí),每當(dāng)碰到過(guò)程說(shuō)明 D→proc id。D1。S 時(shí) ,便創(chuàng)建一張符號(hào)表 ,并且把 D1中的所有說(shuō)明都填入此符號(hào)表中 新表中有一個(gè)指針,指向其 直接 外圍過(guò)程符號(hào)表 ,用于解決非局部數(shù)據(jù)的訪問(wèn) 同時(shí)還要在 直接 外圍過(guò)程符號(hào)表中增加一個(gè)指向該過(guò)程 D1符號(hào)表的指針 過(guò)程名 id 作為 直接外圍過(guò)程的局部名字記錄在 直接外圍過(guò)程 符號(hào)表中; 辛明影 26 Nil header x a readarray exchange quicksort sort header i header readarray exchange Header I k patition Header I j quicksort patition 嵌套過(guò)程的符號(hào)表 辛明影 27 翻譯時(shí)常用操作: 4. enterproc( table,name, newtable) 在外圍過(guò)程符號(hào)表中建立內(nèi)嵌過(guò)程的新表項(xiàng) 1. mktable( previous) 創(chuàng)建一張新符號(hào)表 2. Enter(table, name, type, offset)插入表項(xiàng) 3. addwidth( table, width) 記錄總域?qū)? 指向直接外層符號(hào)表 指向當(dāng)前過(guò)程符號(hào)表 指向直接外層符號(hào)表 指向內(nèi)層過(guò)程的符號(hào)表 指向當(dāng)前外層符號(hào)表 內(nèi)嵌過(guò)程名字 辛明影 28 Tblptr是一個(gè)棧,用于存放指向嵌套外層過(guò)程的符號(hào)表指針 Offset是一個(gè)棧,用于存放變量的相對(duì)地址,當(dāng)過(guò)程結(jié)束時(shí), offset里記錄的是過(guò)程占用的所有字節(jié)數(shù)。 翻譯時(shí)用到的數(shù)據(jù)結(jié)構(gòu): 辛明影 29 處理嵌套過(guò)程中的說(shuō)明語(yǔ)句翻譯方案 P→MD {addwidth(top(tblptr),top(offset))。 ① pop()。pop(offset)} M→ε {t:=mktable( nil); ② push(t,tblptr)。push(0,offset)} D→D1; D2 D→proc id。 N D1; S {t:= top( tblptr)。 addwidth(t,top(offset))。 pop( tblptr); pop( offset)。 ③ enterproc(top( tblptr), , t)} 辛明影 30 D→ id: T {enter(top(tblptr), top(offset))。 ④ top(offset): = top(offset) + } 例: procedure quicksort( m, n : integer); var i : integer; begin … end; procedure partition ( y , z : integer ) var i, j , x, v: integer; begin … end。 N→ε {t := mktable(top( tblptr)); ⑤ push(t, tblptr); push( 0, offset)} 辛明影 31 P M D proc Q 。 N D 。 S ③ ① ε ε ⑤ proc P 。 N ε ⑤ D 。 S ③ j : T int
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1