編譯原理 符號(hào)表12_第1頁(yè)
編譯原理 符號(hào)表12_第2頁(yè)
編譯原理 符號(hào)表12_第3頁(yè)
編譯原理 符號(hào)表12_第4頁(yè)
編譯原理 符號(hào)表12_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四章

符號(hào)表&詞法分析一、符號(hào)表及其作用二、符號(hào)表的內(nèi)容三、存儲(chǔ)分配&符號(hào)表的組織四、標(biāo)識(shí)符的處理五、符號(hào)表的結(jié)構(gòu)和存取六、詞法分析七、取單詞八、讀標(biāo)識(shí)符九、詞法分析器的自動(dòng)生成十、一個(gè)實(shí)例1一、符號(hào)表及其作用1.編譯程序邏輯圖表格管理錯(cuò)誤處理源程序詞法分析語(yǔ)法分析中間代碼生成中間代碼優(yōu)化目標(biāo)代碼生成目標(biāo)程序2一、符號(hào)表及其作用(續(xù)一)符號(hào)表(單詞屬性表)常量表變量表(標(biāo)識(shí)符表)保留字表特殊符號(hào)表數(shù)組信息表過(guò)程信息表……名字屬性3一、符號(hào)表及其作用(續(xù)二)符號(hào)表靜態(tài)表:保留字表,標(biāo)準(zhǔn)函數(shù)表等

動(dòng)態(tài)表:標(biāo)識(shí)符表,過(guò)程信息表等符號(hào)表查填隱式說(shuō)明語(yǔ)言的符號(hào)表查填: FORTRAN語(yǔ)言顯式說(shuō)明語(yǔ)言的符號(hào)表查填:pascal,c等符號(hào)表的作用:輔助語(yǔ)義正確性檢查、輔助目標(biāo)代碼的生成4二、符號(hào)表的內(nèi)容單詞的基本屬性(Pascal語(yǔ)言為例)1、保留字的屬性2、特殊符號(hào)的屬性3、常量的屬性eg.begin,end,procedure,to,for,with屬性eg.+,*,/,<,<>,等屬性屬性:名字、值、類型eg.100,false,0.5等5二、符號(hào)表的內(nèi)容(續(xù)一)4標(biāo)識(shí)符的屬性標(biāo)準(zhǔn)類型標(biāo)識(shí)符:integer,char,real常量標(biāo)識(shí)符簡(jiǎn)單變量標(biāo)識(shí)符過(guò)程/函數(shù)標(biāo)識(shí)符數(shù)組標(biāo)識(shí)符名字、值、類型名字、類型、地址vari,j,k:integer;vara:array[1..10]ofinteger;名字、類型、維數(shù)、上下界、下標(biāo)類型、數(shù)據(jù)區(qū)首地址等Proceduresearch(a:char);名字、形參、局部變量、過(guò)程/函數(shù)入口地址等eg.constpi=3.14159266二、符號(hào)表的內(nèi)容(續(xù)二)一個(gè)單詞一個(gè)屬性值:1)常量的屬性值為常量本身或者存放常量的單元地址,也即指向存放常量有關(guān)信息的常量表的入口指針。2)標(biāo)識(shí)符的屬性值為標(biāo)識(shí)符本身或者標(biāo)識(shí)符表的地址,也即存放標(biāo)識(shí)符有關(guān)信息的符號(hào)表的入口指針7二、符號(hào)表的內(nèi)容(續(xù)三)符號(hào)表的內(nèi)容符號(hào)的名字符號(hào)的類型地址碼數(shù)組的維數(shù)、下標(biāo)過(guò)程/函數(shù)參數(shù)…...8三、存儲(chǔ)分配&符號(hào)表的組織存儲(chǔ)分配原則:(參見(jiàn)例P81)1、標(biāo)號(hào)、類型標(biāo)識(shí)符和過(guò)程標(biāo)識(shí)符不分配單元。 (1)標(biāo)號(hào)對(duì)應(yīng)機(jī)器語(yǔ)言是一個(gè)地址,不需要分配單元。 (2)類型標(biāo)識(shí)符定義了某種類型,不需要分配單元。 (3)過(guò)程標(biāo)識(shí)符沒(méi)有值,也不需要分配單元。2、常量、簡(jiǎn)單變量、數(shù)組、形參和函數(shù)等需要分配單元。9三、存儲(chǔ)分配&符號(hào)表的組織(續(xù)一)靜態(tài)分配:編譯時(shí)能夠確定所需存儲(chǔ)空間的大小,并進(jìn)行存儲(chǔ)分配。1、同一分程序的不同分量分配在不同單元。2、內(nèi)外層中的不同量分配在不同的單元。形參的分配。eg.Proceduresum1(varsum:integer,I:integer);beginsum:=sum+I;end;10形參的分配。eg.Proceduresum1(varsum:integer,I:integer);beginsum:=sum+I;end;

原則:1、如果形參是按值調(diào)用,則分配一個(gè)單元存放實(shí)參的值2、如果形參是按名調(diào)用,則分配一個(gè)單元存放實(shí)參的地址。三、存儲(chǔ)分配&符號(hào)表的組織(續(xù)二)11四、標(biāo)識(shí)符的處理Programsumm(input,output)varI,sum:integer;procedurexxx(I:integer)begin…end;beginsum:=0;forI:=1to100dosum:=sum+I;end.12四、標(biāo)識(shí)符的處理標(biāo)識(shí)符的出現(xiàn)定義性出現(xiàn)應(yīng)用性出現(xiàn)填表查表13五、符號(hào)表的結(jié)構(gòu)和存取

符號(hào)表結(jié)構(gòu):無(wú)序符號(hào)表有序符號(hào)表 樹(shù)結(jié)構(gòu)符號(hào)表?xiàng)7?hào)表

hash表14六、詞法分析任務(wù):詞法分析階段:

掃描源程序的ASCII碼序列,拼出每一個(gè)單詞,并把每個(gè)單詞的ASCII碼序列替換為所謂的機(jī)內(nèi)表示TOKEN形式(屬性字),這時(shí)還檢查詞法錯(cuò)誤。掃描源程序識(shí)別單詞轉(zhuǎn)換成屬性字15六、詞法分析(續(xù)一)詞法分析的兩種處理結(jié)構(gòu)源程序詞法分析L1程序字符單詞符號(hào)表源程序詞法分析語(yǔ)法分析單詞符號(hào)表字符回送單詞161、單詞的種類單詞由字符組成。<字符>::=<字母>|<數(shù)字>|<特定符號(hào)>|<無(wú)效字符><字母>::=a|b|c|..z|A|B|C|...|Z<數(shù)字>::=0|1|2|3|...|9<特定符號(hào)>::=+|-|*|/|:=|<>|<|….<無(wú)效字符>::=<回車符>|<換行符>|<制表符>symbol=(ident,constsy,notop,mul,div,add,sub….)單詞的機(jī)內(nèi)表示采用長(zhǎng)度統(tǒng)一的二元形式(token字)(單詞種別碼,單詞的自身值)七、取單詞17流程圖七、取單詞跳過(guò)空格符和回車符字母特殊符號(hào)數(shù)字讀標(biāo)識(shí)符查保留字表保留字sy取數(shù)特殊符號(hào)syidentsy結(jié)束開(kāi)始errorNY查到NYconstsysyNYNY18八、讀標(biāo)識(shí)符1、標(biāo)識(shí)符的文法規(guī)則<標(biāo)識(shí)符>::=<字母>{<字母>|<數(shù)字>}<字母>::=a|b|c|..z|A|B|C|...|Z<數(shù)字>::=0|1|2|3|...|92、標(biāo)識(shí)符的狀態(tài)轉(zhuǎn)換圖S0S2字母非字母數(shù)字S1字母數(shù)字3、讀標(biāo)識(shí)符子程序(略)19九、詞法分析器的自動(dòng)生成詞法分析程序的自動(dòng)生成問(wèn)題Lex語(yǔ)言20十、一個(gè)實(shí)例1、查填符號(hào)表(見(jiàn)書(shū))2、流程圖21十、一個(gè)實(shí)例流程圖字母,數(shù)字Tempword:=Symbol+ch

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論