編譯原理簡明教程(第3版)-課件 第10章 符號表和出錯處理_第1頁
編譯原理簡明教程(第3版)-課件 第10章 符號表和出錯處理_第2頁
編譯原理簡明教程(第3版)-課件 第10章 符號表和出錯處理_第3頁
編譯原理簡明教程(第3版)-課件 第10章 符號表和出錯處理_第4頁
編譯原理簡明教程(第3版)-課件 第10章 符號表和出錯處理_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

新工科建設(shè)·計算機類系列教材

免費提供編譯原理16目錄第一章引言第二章形式語言理論基礎(chǔ)第三章自動機理論基礎(chǔ)第四章詞法分析第五章語法分析—自頂向下分析方法第六章語法分析—自底向上分析方法第七章語義分析及中間代碼的生成第八章代碼優(yōu)化第九章目標(biāo)代碼的生成第十章符號表和出錯處理第十一章

面向?qū)ο笳Z言的編譯第十二章

并行編譯技術(shù)第十三章

軟件構(gòu)造22024/11/63學(xué)習(xí)目標(biāo)10符號表和出錯處理

符號表在整個編譯期間的作用主要有兩條:一是輔助語義的(即上下文有關(guān)的)正確性檢查;二是輔助代碼生成。著重需要掌握以下內(nèi)容符號表的作用符號表中的內(nèi)容嵌套結(jié)構(gòu)語言的棧式符號表

目錄10.1符號表的結(jié)構(gòu)與存放10.2符號表的建立10.3程序的錯誤10.4出錯處理10.5本章小結(jié)4

符號表是一個包含程序中的變量、子程序、常量、過程定義、數(shù)組信息等內(nèi)容的數(shù)據(jù)庫。

一般地,符號表由一些表項組成二維表格。

名字域

—存放符號或其內(nèi)部碼每個表項

屬性域

—存放屬性和特征例如:

名字域?qū)傩杂蛎?屬性1......名字n屬性n10.1符號表的結(jié)構(gòu)和存放符號表的組織方式簡單方式:固定名字域和屬性域的長度。

有的語言標(biāo)識符長度不超過6個字符,可定為6位。間接方式:在符號表的名字域中存放一個指針或一個指針和一個整數(shù),把標(biāo)識符存放到一個字符串?dāng)?shù)組中。見圖10.210.1.1符號表的組織和內(nèi)容符號表的內(nèi)容

屬性域的內(nèi)容因符號表名字域內(nèi)容不同而不同。例如數(shù)組:維數(shù)、下標(biāo)界偶、存儲區(qū)域等信息數(shù)組信息向量表。如圖10.3。

靜態(tài)表(編譯前事先構(gòu)造好):保留字表、標(biāo)符號表

準(zhǔn)函數(shù)名表等。

動態(tài)表(編譯過程中根據(jù)需要構(gòu)造的表):變量名表數(shù)組信息表、過程信息表等。10.1.1符號表的組織和內(nèi)容變量表

如圖10.4線性表(無序符號表):按程序中符號出現(xiàn)的先后次序建立的表。如圖10.5查找方式:只能線性查找,(查找效率低),結(jié)構(gòu)簡單,節(jié)省空間,適合于比較小的表。10.1.2線性符號表名字類型地址SUM實型100AVER實型102COUNT整型104項數(shù)名字域?qū)傩杂?a……2ave……3b1……4sum……………

有序符號表:按一定順序(如字典順序)排列符號。如圖10.6、10.7查找:折半查找法,查找效率較高。

但填入表時會增加移動開銷。10.1.3有序符號表項數(shù)名字域?qū)傩杂?a……2ave……3b1……4sum……………

散列符號表(哈希符號表):利用哈希函數(shù)值確定符號在表中的位置。hash函數(shù)性質(zhì):·函數(shù)值只依賴于對應(yīng)符號·函數(shù)計算簡單、高效·函數(shù)值能較均勻分布如:除法散列函數(shù)、乘法散列函數(shù)、多項式除法散列函數(shù)、平方取中散列函數(shù)等?!百|(zhì)數(shù)除余法”見圖10.8查詢效率較高,但要解決散列沖突問題。10.1.4散列符號表(哈希符號表)設(shè)計一個棧,新符號出現(xiàn)從棧頂壓入。查找時從棧頂→棧底例

PASCAL語言分程序嵌套結(jié)構(gòu)例10-1程序的棧式符號表如圖10.9、10.10、10.11查找時,最新加入的符號總是最先查找。

適合嵌套結(jié)構(gòu)的程序設(shè)計語言,但表太大時,查找速度較慢。10.1.5棧式符號表10.2.1符號表的建立12一、符號表的初始化漸增符號表。如線性符號表和有序符號表

定長符號表。如散列符號表在初始狀態(tài)時,表的內(nèi)容都應(yīng)該為空。一般符號表在詞法分析時創(chuàng)建,其它階段都可能要填表。如圖10.12、10.1310.2.2符號表的查填一、對符號表的操作

·對給定符號,查看是否是在表中

·對沒查到的符號,向表中填入

·對已查到的符號,查詢有關(guān)信息

·對已查到的符號,增加或更新有關(guān)信息

·刪除一個或一組無用表項二、查填符號表的形式可分為兩種情況:

1、隱式說明語言的符號表查填如FORTRAN“I–N”規(guī)則。語句中每出現(xiàn)一個符號均需查表,當(dāng)?shù)谝淮纬霈F(xiàn)時填表。142、顯式說明語言的符號表查填如Pascal、C語言

說明部分:出現(xiàn)的符號,先查表,若沒有,則填表。語句部分:出現(xiàn)的符號,先查表,若查不到,到外層

查(對于分程序結(jié)構(gòu)),最后仍未查到,說明該符號未

定義,輸出出錯信息。10.2.2符號表的查填通常用程序設(shè)計語言編寫的源程序往往包含一些錯誤,很少能一次在機器上通過,并算出預(yù)期結(jié)果,需要反復(fù)修改和調(diào)試。所以,人們希望編譯程序能有較強的錯誤處理能力,能檢查出程序中的各種錯誤,并準(zhǔn)確無誤地報告出這些錯誤的性質(zhì)和位置。1510.3程序的錯誤

編譯程序用來對源程序進行編譯,當(dāng)程序在語法(包括詞法)上正確時,可以得到相應(yīng)的等價的目標(biāo)代碼。當(dāng)程序在語義上正確時,以正確的輸入數(shù)據(jù)運行目標(biāo)代碼可以得到預(yù)期的輸出結(jié)果。然而,一個程序,尤其是大型軟件的程序,其中難免包含錯誤。1610.3.1錯誤存在的必然性1710.3.2錯誤的種類①詞法錯誤。②語法錯誤。③語義錯誤。④違反環(huán)境限制的錯誤。程序錯誤的種類

在編譯的過程中,發(fā)現(xiàn)源程序的錯誤時采取一定的措施,使得能繼續(xù)編譯下去,這稱為錯誤復(fù)原。如果把所給不正確程序變換成正確的程序,則稱之為錯誤校正。在錯誤復(fù)原時,應(yīng)重視以下兩個方面: 1.株連信息的遏止。 2.重復(fù)信息的遏止。1810.3.3錯誤復(fù)原詞法的錯誤:詞法分析時發(fā)現(xiàn)的詞法錯誤大多是單詞拼寫錯誤語法的錯誤:不同的語法分析技術(shù)發(fā)現(xiàn)錯誤的手段和方式是不同的語義的錯誤:一般分為兩類,一類是在編譯時可以發(fā)現(xiàn)的靜態(tài)語義錯誤,另一類是在運行時才能發(fā)現(xiàn)的動態(tài)語義錯誤。1910.4出錯處理2010.4.1詞法錯誤的處理

詞法分析時發(fā)現(xiàn)的詞法錯誤大多是單詞拼寫錯誤,這或者是因為書寫錯誤,或者是因為輸入錯誤假定不會有連續(xù)幾個字符的錯誤,可以假定有如下幾類詞法錯誤:拼錯一個字符,如RECORD錯寫成RCCORD。遺漏一個字符,如REPEAT錯寫成REPET。多拼一個字符,如UNTIL錯寫成UNTILE。相鄰兩個字符顛倒了次序,如LABEL錯寫成LABLE?;谇懊鎸υ~法錯誤的假設(shè),不存在連續(xù)幾個字符都出錯的現(xiàn)象,對詞法錯誤的校正一般有以下幾種方法:刪除一個字符插入一個字符。替換一個字符。交換相鄰兩個字符。2110.4.1詞法錯誤的處理2210.4.2語法錯誤的處理對于語法錯誤的處理,與詞法錯誤的情況一樣,自然涉及下列種類:錯誤的查出錯誤的定位錯誤的局部化重復(fù)錯誤信息的遏止2310.4.2語法錯誤的處理解決語法錯誤的處理主要有以下兩種方法:自頂向下分析中錯誤的處理自底向上分析中錯誤的處理

2410.4.3語義錯誤的處理語義錯誤一般分為兩類,一類是在編譯時可以發(fā)現(xiàn)的靜態(tài)語義錯誤,另一類是在運行時才能發(fā)現(xiàn)的動態(tài)語義錯誤。它主要分為下面兩種類型:靜態(tài)語義錯誤動態(tài)語義錯誤2510.4.3語義錯誤的處理語義錯誤往往難以采用系統(tǒng)而有效的方法來發(fā)現(xiàn)和處理。在語義分析時采用語法制導(dǎo)的翻譯,通過語法制導(dǎo)定義或翻譯方案實現(xiàn)類型一致性檢查和某些控制流靜態(tài)語義檢查等,可以發(fā)現(xiàn)源程序中運算符不合法、運算分量類型不相容以及控制流方面的靜態(tài)語義錯誤。為了發(fā)現(xiàn)其他的動態(tài)語義錯誤,通常采用以下兩種方式:1.靜態(tài)模擬檢查;2.利用調(diào)試工具。2610.5本章小結(jié)1.符號表是用來存放編譯程序各個階段收集的、出現(xiàn)在源程序中的各種名字的類型和特征第有關(guān)信息,并供編譯程序用于進行語法檢查、語義檢

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論