版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第七章:符號表管理技術(shù)7.1概述7.2符號表的組織與內(nèi)容7.3非分程序結(jié)構(gòu)語言的符號表組織7.4分程序結(jié)構(gòu)語言的符號表組織7.1概述(1)什么是符號表?在編譯過程中,編譯程序用于記錄源程序中各種名字的特性信息,
所以也稱為名字特性表。名字:
程序名、過程名、函數(shù)名、用戶定義類型、變量名、符號名字。特性信息:名字種類、類型、維數(shù)、參數(shù)個數(shù)及目標地址(存儲單元地址)等。(2)建表和查表的必要性
(符號表在編譯過程中的作用)
源程序中變量要先聲明,然后才能引用。用戶通過聲明語句,聲明各種名字,以及給出它們的類型維數(shù)等信息,編譯程序在出來這些聲明語句時,因?qū)⒙暶髦械拿忠约靶畔⒌卿浀椒柋碇?,同時編譯還要給變量分配存儲單元,而存儲單元地址也必須登錄在符號表中。當編譯程序編譯到引用所聲明的變量時(賦值或引用其值)要進行語法語義正確性檢查
類型是否符合要求和生成相應(yīng)的目標程序,這就需要查符號表來取得相關(guān)信息。1.語法分析和語義分析
說明語句賦值語句的語法規(guī)則
上下文有關(guān)分析;是否聲明;
類型一致性檢查2.生成目標代碼LOADa的地址ADDb的地址STOx的地址
例:intx,a,b;
…
…
L:x:=a+b;
…
建表分配存貯符號表數(shù)據(jù)區(qū)X簡單變量整型A簡單變量整型B簡單變量整型L標號(3)有關(guān)符號表的操作:填表和查表填表:當分析到程序中的說明或定義語句時應(yīng)將說明或定義的名字以及與之有關(guān)的信息填入符號表中例:ProcedureP()查表:(1)填表前查表檢查在程序的同一作用域內(nèi)名字是否重復(fù)定義(2)檢查名字的種類是否與說明一致(3)對于強類型語言要檢查表達式中各變量的類型是否一致(4)生成目標指令時要取得所需要的地址7.2符號表的組織與內(nèi)容(1)符號表的結(jié)構(gòu)與內(nèi)容符號表的基本結(jié)構(gòu)如下
名字特性(信息)
“名字”域:存放名字。一般為標識符的符號串,也可為指向標識符字符串串指針“特性”域:可包括多個子域,分別表示標識符的有關(guān)信息。如:名字(標識符)的種類:變量、函數(shù)、過程、數(shù)組、標號、參數(shù)等類型:如整型、浮點型、字符型、指針等性質(zhì):變量形參、值形參等名字:常量名地址:變量所分配單元的首址或地址位移大?。核嫉淖止?jié)數(shù)名字特性(信息)作用域的嵌套層次
對于數(shù)組:維數(shù)、上下界值、計算下標量地址所用的信息以及數(shù)組元素類型等對于記錄(結(jié)構(gòu)、聯(lián)合):域的個數(shù)、每個域名、地址位移、類型等對于過程或函數(shù):形參個數(shù)、所在層次、函數(shù)返回值類型、局部變量所占空間大小等對于指針:所指對象類型等(2)組織方式1.統(tǒng)一符號表:無論什么名字都填入統(tǒng)一格式的符號表中符號表表項應(yīng)按信息量最大的名字設(shè)計
填表查表比較方便
結(jié)構(gòu)簡單
但是浪費大量空間2.對于不同種類的名字分別建立各種符號表節(jié)省空間
但是填表和查表不方便3.折中辦法:大部分共同信息組成統(tǒng)一格式的符號表。特殊信息另設(shè)附表,兩者用指針連接.例:
begin
arrayB[1..100]
…
endB數(shù)組實型維數(shù)上下界首地址補充指針連接7.3非分程序結(jié)構(gòu)語言的符號表組織(1)分程序的結(jié)構(gòu)語言:每個可獨立進行編譯的程序單元是一個不包含有子模塊的單一模塊.如Fortran語言Fortran程序構(gòu)造主程序子程序及函數(shù)主程序和子程序中可定義common語句(2)標識符的作用域及基本處理辦法1.作用域:全局:
子程序名,函數(shù)名和公共區(qū)名局部:程序單元中定義的變量2.符號表的組織3.基本處理辦法<1>子程序函數(shù)名和公共區(qū)變量填入全局符號表全局符號表局部符號表<2>在聲明部分讀到標識符,造局部符號表查本程序單元局部符號表,有無同名<3>在語句部分讀到標識符
查表查本程序單元局部符號表有無同名有,重復(fù)聲明,報錯無,造表有,即已聲明無,查全局變量表有
全局量無
無定義標識符(3)符號表的組織方式4.程序單元結(jié)束:釋放該程序單元的局部符號表5.程序編譯完成:釋放全部符號表1.無序符號表:按掃描順序建表,查表要逐項查找
查表操作的平均長度為:n+1/22.有序符號表符號表按變量名進行字典式排序線性查表:n+1/2折半查表:log2n-1
3.散列符號表(Hash)表:符號表地址=Hash(標識符)解決:沖突7.4分程序結(jié)構(gòu)語言的符號表組織(1)分程序的結(jié)構(gòu)語言:塊內(nèi)可嵌入子模塊(2)標識符的作用域和基本處理方法作用域:標識符局部于所定義的模塊(最小模塊)①模塊中所定義的標識符作用域是定義該標識符的子程序A為內(nèi)分程序局部變量
A為內(nèi)分程序全局變量都是局部變量RealA;RealA;RealA;RealA;RealA;RealA;B:=A;begin……procedureP(i,j);begin…Lend…gotoL;P(3,5);…End;②過程或函數(shù)說明中定義的標識符(包括形參)
其作用域為本過程體例:③循環(huán)語句中定義的標識符,其作用域為該循環(huán)語句for…dobegin…Lend…gotoL;…不能從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)循環(huán)語句應(yīng)看作一層建查符號表均要遵循標識符作用域規(guī)定進行建表不能重復(fù)
不能遺漏查表按標識符作用域基本處理辦法:Realx,A,BIntegerx,y;procedurep()beginrealx;A:=x+2.0;…endB:=x+2.0定義重復(fù)錯誤必須填表查表是本層的查表是本層的(最外層的)處理方法假設(shè)標識符是先聲明后引用(標號例外,要特殊處理)a.在程序聲明部分讀到標識符時
聲明性出現(xiàn)
建表查本層符號表
有無重名b.在語句中讀到標識符(引用性出現(xiàn))查表查本層符號表
有無重名有
重復(fù)聲明
報錯無
填入符號表有
即已聲明
已取該名字信息
局部量無
是否是最外層?是
未聲明標識符
報錯否
轉(zhuǎn)到直接外層c.標準標識符的處理主要是語言定義的一些標準過程和函數(shù)的名字,它們是標識符的子集。如sincosabs…
(注意
它們不是語言的保留字)特點:
1)用戶不必聲明
就可全程使用2)設(shè)計編譯程序時標準名字及其數(shù)目已知處理方法:
1)單獨建表,使用不便,出錯2)預(yù)先將標準命填入名字表中,
因為它們是全程量,所以應(yīng)填入最外層第八章符號表編譯過程中編譯程序需要不斷匯集和反復(fù)查證出現(xiàn)在源程序中各種名字的屬性和特征等有關(guān)信息。這些信息通常記錄在一張或幾張符號表中。符號表的每一項包括兩部分:一部分是名字(標識符);另一部分是此名字的有關(guān)信息。每個名字的有關(guān)信息是指種屬(如簡單變量、數(shù)組、過程等)、類型(如整、實、布爾等)。這些信息將用于語義檢查、產(chǎn)生中間代碼以及最終生成目標代碼等不同階段。幾乎在編譯程序工作的全過程中,都需要對符號表進行頻繁訪問,可以認為查表或填表等操作,在編譯程序的編譯過程中是很大的一筆開銷。因此,合理地組織符號表,并相應(yīng)地選擇好查表和填表的方法,是提高編譯序工作效率的重要一環(huán)。例題與習題解答[例8。1]在編譯過程中,嵌套調(diào)用的過程間尋址問題如何解決?下面是一個示意性元程序,請給出編譯期間棧式符號表的變化情況。PROGRAMmaina=10;b,c:integer;d,e:real;PROCEDUREp(x:real);f:real;PROCEDUREq(y:real);g=5;n:boolean;BEGIN…IFe<0THENp(f);…..END;{q}BEGIN….Q(e);…END;{p}PROCEDUREt;j:real;BEGIN…p(e);…END;{t}BEGIN…WHILEc>0DO…;p(d);…END.{main}解:在編
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年外貿(mào)部外貿(mào)業(yè)務(wù)員面試題及答案
- 2026年房地產(chǎn)經(jīng)紀人招聘考試要點解析
- 煤層氣發(fā)電運行值班員安全宣貫測試考核試卷含答案
- 2026年航空乘務(wù)員入職考核試題及答案
- 重冶制團制粒工安全風險競賽考核試卷含答案
- 2026年單證專員面試題集
- 打葉復(fù)烤設(shè)備操作工崗前技術(shù)創(chuàng)新考核試卷含答案
- 2026年體育領(lǐng)域求職指南教練員招聘面試題集
- 水族造景工發(fā)展趨勢能力考核試卷含答案
- 鎖具制作工崗后水平考核試卷含答案
- 劇組用車合同范本
- 2024年法律職業(yè)資格《客觀題卷一》試題及答案
- 鋼鐵廠勞務(wù)合同范本
- 2025年沈陽華晨專用車有限公司公開招聘筆試考試備考題庫及答案解析
- 職業(yè)技能競賽和技術(shù)比武活動方案
- 《面對挫折我不怕》課件
- 租打碟機合同范本
- 2025-2026學年上學期北京小學數(shù)學三年級期末典型卷2
- 2025四川成都東方廣益投資有限公司下屬企業(yè)招聘9人備考題庫(含答案詳解)
- 云南特色農(nóng)產(chǎn)品市場需求調(diào)研報告
- 2025課堂懲罰 主題班會:馬達加斯加企鵝課堂懲罰 課件
評論
0/150
提交評論