版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2020/10/11,1,Chapter5Semantic Analysis and Intermediate Code Generation,語(yǔ)義分析概述 語(yǔ)法制導(dǎo)翻譯 (Syntax-Directed Translation) 類(lèi)型確定與類(lèi)型檢查 (Type Checking) 中間代碼生成 (Intermediate Code Generation),2020/10/11,2,5.3 類(lèi)型確定與類(lèi)型檢查,類(lèi)型確定:確定標(biāo)識(shí)符所代表對(duì)象的數(shù)據(jù)類(lèi)型,要確定類(lèi)型,基本工作是處理說(shuō)明部分,把相關(guān)的類(lèi)型等屬性填入符號(hào)表相應(yīng)的條目中,2020/10/11,3,5.3 類(lèi)型確定與類(lèi)型檢查,一般的說(shuō)明語(yǔ)
2、句的處理:P474 (Fig.8.11),注意語(yǔ)義動(dòng)作 enter,為名字建立表項(xiàng),對(duì)第一條產(chǎn)生式及翻譯模式進(jìn)行改寫(xiě)(見(jiàn)P474),引入標(biāo)記非終結(jié)符號(hào)(Marker Nonterminals),改寫(xiě)后的語(yǔ)法制導(dǎo)定義是 S-屬性定義,適合于自底向上翻譯,2020/10/11,4,5.3 類(lèi)型確定與類(lèi)型檢查,例子:處理語(yǔ)句 id1 : real ; id2 : integer,1、自底向上建立分析樹(shù),2、在建立分析樹(shù)的同時(shí)執(zhí)行語(yǔ)義規(guī)則完成翻譯,2020/10/11,5,5.3 類(lèi)型確定與類(lèi)型檢查,* 對(duì)說(shuō)明語(yǔ)句的語(yǔ)義處理不產(chǎn)生中間代碼,P,D,M,D2,D1,;,T2,T1,:,id2,id1,:
3、,real,T3,integer,1,2,3,4,5,6,7,8,2020/10/11,6,5.3 類(lèi)型確定與類(lèi)型檢查,過(guò)程說(shuō)明的處理:P477 (Fig.8.13) 針對(duì)允許嵌套過(guò)程的語(yǔ)言,如 PASCAL,sort,exchange,quicksort,readarray,partition,簡(jiǎn)要說(shuō)明: P475 Fig.8.12 程序參見(jiàn) P416 (2)-(19)都是說(shuō)明部分,2020/10/11,7,5.3 類(lèi)型確定與類(lèi)型檢查,P477 (Fig.8.13),此翻譯模式只是一種解決方案,語(yǔ)義過(guò)程 mktable,enter,addwidth,enterproc,棧 tblptr,of
4、fset,2020/10/11,8,5.3 類(lèi)型確定與類(lèi)型檢查,例子:分析如下程序的說(shuō)明部分 畫(huà)出分析樹(shù),詳細(xì)說(shuō)明,id1 : T1 ; proc id2 ; id3 : T2 ; S,2020/10/11,9,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,1. t1 := mktable ( nil ) push ( t1 , tblptr ) push ( 0, offset ),id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,0,2020/10/11,10,P,D,M,D2,D1,;,;,T1,id
5、2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,2. enter ( top( tblptr), , T1.type, top(offset) ) top( offset ) := top(offset) + T1.width,id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,2020/10/11,11,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,3. t2 := mktable ( top ( tblptr ) ) push ( t2 , tblptr
6、) push ( 0, offset ),id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,t2,0,2020/10/11,12,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,4. enter ( top( tblptr), , T2.type, top(offset) ) top( offset ) := top(offset) + T2.width,id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,t2,4,2020/10/11,13,P,D
7、,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,5,5. t := top ( tblptr ) addwidth ( t, top ( offset ) ) pop ( tblptr ) pop ( offset ) enterproc ( top( tblptr), , t ),id1 : T1 ; proc id2 ; id3 : T2 ; S,t1,8,2020/10/11,14,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,5,6
8、,7,6. 7. addwidth ( top ( tblptr ), top ( offset ) ) pop ( tblptr ) pop ( offset ),id1 : T1 ; proc id2 ; id3 : T2 ; S,2020/10/11,15,P,D,M,D2,D1,;,;,T1,id2,proc,id1,:,;,D3,N,S,T2,id3,:,1,2,3,4,5,6,7,id1 : T1 ; proc id2 ; id3 : T2 ; S,2020/10/11,16,5.3 類(lèi)型確定與類(lèi)型檢查,記錄類(lèi)型的處理:P477 (Fig.8.14),例子:分析句型 record
9、id1 : T ; id2 : T end,2020/10/11,17,5.3 類(lèi)型確定與類(lèi)型檢查,T,D,record,D2,L,D1,;,T2,T1,:,id2,id1,:,end,1,2,3,4,5,2020/10/11,18,5.3 類(lèi)型確定與類(lèi)型檢查,類(lèi)型檢查(Type Checking):按照所用語(yǔ)言的語(yǔ)義規(guī)則檢查運(yùn)算的合法性與運(yùn)算分量類(lèi)型的一致性或相容性,2020/10/11,19,5.3 類(lèi)型確定與類(lèi)型檢查,表達(dá)式的類(lèi)型檢查(Type Checking of Expressions),1、E num E.type := integer ,2、E id E.type := loo
10、kup(id.entry) ,2020/10/11,20,5.3 類(lèi)型確定與類(lèi)型檢查,3、E E1 op E2 E.type := if E1.type=integer and E2.type=integer then integer else type-error 一致性檢查 * 假設(shè) op 的運(yùn)算分量必須是integer,結(jié)果也是integer,2020/10/11,21,5.3 類(lèi)型確定與類(lèi)型檢查, E.type := if E1.type=integer and E2.type=integer then interger else if E1.type=integer and E2.t
11、ype=real then real else if E1.type=real and E2.type=integer then real else if E1.type=real and E2.type=real then real else type-error 相容性檢查 必要的話(huà)可以使用強(qiáng)制轉(zhuǎn)換函數(shù) inttoreal * 假設(shè) op 的運(yùn)算分量可以是 integer 和 real,2020/10/11,22,5.3 類(lèi)型確定與類(lèi)型檢查,4、E E1 E2 E.type := if E2.type=integer and E1.type=array(s,t) then t else t
12、ype-error ,5、E E1 E.type := if E1.type=pointer(t) then t else type-error ,2020/10/11,23,5.3 類(lèi)型確定與類(lèi)型檢查,例:,E1,E,E4,E2,id1,num,+,*,E3,id2,1,2,3,4,5,2020/10/11,24,5.3 類(lèi)型確定與類(lèi)型檢查,語(yǔ)句的類(lèi)型檢查(Type Checking of Statements),1、S id:=E S.type := if id.type=E.type then void else type-error ,2、S if E then S1 S.type := if E.type=boolean then S1.type else type-error ,2020/10/11,25,5.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)科疾病遠(yuǎn)程會(huì)診實(shí)施匯報(bào)
- 2026年河北軟件職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試模擬試題帶答案解析
- 2026年滄州幼兒師范高等專(zhuān)科學(xué)校單招綜合素質(zhì)筆試備考試題帶答案解析
- 醫(yī)療機(jī)器人研發(fā)與應(yīng)用
- 2026年福建師范大學(xué)協(xié)和學(xué)院?jiǎn)握芯C合素質(zhì)筆試模擬試題帶答案解析
- 2026年博爾塔拉職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考試題帶答案解析
- 2026年河北美術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 2026年河南護(hù)理職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫(kù)有答案解析
- 2026年河北工藝美術(shù)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)筆試參考題庫(kù)帶答案解析
- 2026年福建江夏學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試參考題庫(kù)有答案解析
- 2026年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)汽車(chē)車(chē)身電子控制行業(yè)全景評(píng)估及投資規(guī)劃建議報(bào)告
- 2025-2026學(xué)年教科版三年級(jí)科學(xué)上冊(cè)期末階段綜合培優(yōu)卷
- 電子數(shù)據(jù)取證分析師安全培訓(xùn)水平考核試卷含答案
- 上海市園林工程估算指標(biāo)(SHA2-12-2025)
- 涉水工程影響國(guó)家基本水文測(cè)站影響評(píng)價(jià)分析報(bào)告
- 沈陽(yáng)盛京軍勝農(nóng)業(yè)發(fā)展科技有限公司及所屬企業(yè)2025年面向社會(huì)招聘?jìng)淇碱}庫(kù)帶答案詳解
- 入駐直播協(xié)議書(shū)
- 血液凈化中心(透析室)年度述職報(bào)告
- 酒吧消防安培訓(xùn)
- 養(yǎng)老院消防培訓(xùn)方案2025年課件
- Smaart7產(chǎn)品使用說(shuō)明手冊(cè)
評(píng)論
0/150
提交評(píng)論