編譯原理符號(hào)表的原理及典型實(shí)例課件_第1頁
編譯原理符號(hào)表的原理及典型實(shí)例課件_第2頁
編譯原理符號(hào)表的原理及典型實(shí)例課件_第3頁
編譯原理符號(hào)表的原理及典型實(shí)例課件_第4頁
編譯原理符號(hào)表的原理及典型實(shí)例課件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、編 譯 原 理,1,學(xué)習(xí)交流PPT,第九章 符號(hào)表,2,學(xué)習(xí)交流PPT,在編譯程序工作的過程中,需要不斷收集、記錄和使用源程序中一些語法符號(hào)的類型和特征等相關(guān)信息。這些信息一般以表格形式存儲(chǔ)于系統(tǒng)中。如常數(shù)表、變量名表、數(shù)組名表、過程名表、標(biāo)號(hào)表等等,統(tǒng)稱為符號(hào)表。 對(duì)于符號(hào)表組織、構(gòu)造和管理方法的好壞會(huì)直接影響編譯系統(tǒng)的運(yùn)行效率。,第九章 符號(hào)表,3,學(xué)習(xí)交流PPT,一、符號(hào)表的作用和功能,收集符號(hào)屬性 上下文語義的合法性檢查的依據(jù) 作為目標(biāo)代碼生成階段地址分配的依據(jù),詞法分析:a是一個(gè)單詞; 語法分析:a出現(xiàn)在一條變量聲明語句和一條賦值語句中; 語義分析:a是一個(gè)整形變量,并分配地址。,4

2、,學(xué)習(xí)交流PPT,二、符號(hào)表的內(nèi)容,標(biāo)識(shí)符的名字 與標(biāo)識(shí)符有關(guān)的信息 類型信息(包括種類和屬性) 地址碼 層次信息 行號(hào)信息 ,5,學(xué)習(xí)交流PPT,二、符號(hào)表的內(nèi)容,例:Pascal語言的名字信息表nametab,名字標(biāo)識(shí)符,名字種類,可以是常量(constant)、變量(variable)、類型(type)、過程(procedure),名字所在的程序體的靜態(tài)層次。規(guī)定主程序的層次為1,主程序中定義的層次為2,依次類推,名字的類型,類型有整型(ints)、字符型(chars)、布爾型(bool)、數(shù)組(arrays),對(duì)于無類型的名字填入notype,一個(gè)布爾量,用于標(biāo)明名字是否為變量形參名,

3、當(dāng)名字是否為變量形參名時(shí)填入false,其他情況填入true或不填,當(dāng)名字為數(shù)組類型或數(shù)組變量名時(shí),ref指向該數(shù)組在數(shù)組信息表中的位置;當(dāng)名字為過程名時(shí),ref指向該過程在程序體表(btab)中的位置;其他情況ref為0,adr, 當(dāng)名字為變量名時(shí)(包括形參,存入該變量(或形參)在相應(yīng)活動(dòng)記錄中分類的存貯單元的相對(duì)地址;對(duì)于過程名,填入他們相應(yīng)代碼的入口地址 val, 當(dāng)名字為變量名時(shí),填入他們的相應(yīng)值 size, 當(dāng)名字為類型名時(shí),填入該類型數(shù)據(jù)所需存貯單元的數(shù)目,指向同一程序體中定義的上一個(gè)名字在nametab中的位置,每個(gè)程序體在nametab中登記的第一個(gè)名字的link為0,6,學(xué)習(xí)

4、交流PPT,二、符號(hào)表的內(nèi)容,例:Pascal語言的名字信息表nametab,type a=array1.10, 1.10 of integer;,nametab,7,學(xué)習(xí)交流PPT,例:Pascal語言的數(shù)組信息表atab,數(shù)組的下標(biāo)類型,數(shù)組元素類型,當(dāng)元素為數(shù)組時(shí),它指向該元素?cái)?shù)組信息在atab表中的位置,其他情況為0,數(shù)組下限,數(shù)組上限,數(shù)組元素的體積,數(shù)組本身的體積,二、符號(hào)表的內(nèi)容,8,學(xué)習(xí)交流PPT,type a=array1.10, 1.10 of integer;,nametab,atab,9,學(xué)習(xí)交流PPT,三、符號(hào)表的組織,按照屬性種類完全相同的那些符號(hào)組織 在一起; 把

5、所有語言中的符號(hào)都組織在一張符號(hào) 表中; 根據(jù)符號(hào)屬性相似程度分類組織成若干 張表,每張表中記錄的符號(hào)都有比較多 的相同屬性。,10,學(xué)習(xí)交流PPT,三、符號(hào)表的組織,假設(shè)有下列三類符號(hào)及其所需屬性,第一種組織法:按屬性分類,優(yōu)點(diǎn):管理一致,空間效率高 缺點(diǎn):管理復(fù)雜,11,學(xué)習(xí)交流PPT,三、符號(hào)表的組織,假設(shè)有下列三類符號(hào)及其所需屬性,第二種組織法:?jiǎn)我唤M織,優(yōu)點(diǎn):管理一致,集中單一 缺點(diǎn):管理復(fù)雜,12,學(xué)習(xí)交流PPT,三、符號(hào)表的組織,假設(shè)有下列三類符號(hào)及其所需屬性,第三種組織法:折中方法,13,學(xué)習(xí)交流PPT,四、符號(hào)表的數(shù)據(jù)結(jié)構(gòu),線性表符號(hào)表項(xiàng)按照符號(hào)被掃描到的先 后順序登錄,a

6、b a d c b ,14,學(xué)習(xí)交流PPT,四、符號(hào)表的數(shù)據(jù)結(jié)構(gòu),有序表符號(hào)表項(xiàng)按照符號(hào)的字符代碼串 的值的大小排列,a b a d c b ,15,學(xué)習(xí)交流PPT,四、符號(hào)表的數(shù)據(jù)結(jié)構(gòu),散列表符號(hào)表項(xiàng)的位置由對(duì)該符號(hào)進(jìn)行 某種函數(shù)操作所得到的函數(shù)值來確定,a b a d c b ,16,學(xué)習(xí)交流PPT,五、符號(hào)表與作用域,int main() int a=0; int b=0; int b=1; int a=2; printf(“%d,%dn”,a,b); int b=3; printf(“%d,%dn”,a,b); printf(“%d,%dn”,a,b); printf(“%d,%dn”,a,b); ,17,學(xué)習(xí)交流PPT,int main() int a=0; int b=0; int b=1; int a=2; printf(“%d,%dn”,a,b); int b=3; printf

溫馨提示

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

評(píng)論

0/150

提交評(píng)論