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

下載本文檔

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

文檔簡介

表格管理種類符號表、關(guān)鍵字表、層次表、常數(shù)表關(guān)鍵字表表項結(jié)構(gòu)關(guān)鍵字標(biāo)識(整數(shù),如WHILE,IF)關(guān)鍵字名字(字符串,如"while","if")常用的操作:intIsKeyword(charName[]);層次表保存各級分程序、循環(huán)語句、條件語句的有關(guān)信息如:局部名字、轉(zhuǎn)移標(biāo)號等輔助標(biāo)識符的管理符號表保存名字及其屬性名字:變量名,過程名,標(biāo)號名和常數(shù)名屬性:種類,類型,存儲類別,作用域等作用綁定的完成、空間分配、特殊語法現(xiàn)象、語義合法性檢查符號表的功能建立表項以標(biāo)識符為關(guān)鍵字屬性的設(shè)置與引用類型、作用域、存儲類別、地址等符號表的實現(xiàn)實現(xiàn)方法:線性表、排序表、散列表(哈希)特殊問題結(jié)構(gòu)成員、函數(shù)參數(shù)、分程序結(jié)構(gòu)性能優(yōu)先考慮查找的效率第9章符號表

9.1符號表的作用和地位9.2符號的主要屬性及作用9.3符號表的組織6符號表的作用和地位——語義檢查的依據(jù)和目標(biāo)代碼生成階段地址分配的依據(jù)屬性信息:存放語言程序中出現(xiàn)的有關(guān)標(biāo)識符的屬性信息,在編譯的不同階段都要用到。語義檢查:在語義分析中,符號表所登記的內(nèi)容將用于語義檢查(如檢查一個名字的使用和原先的說明是否一致)和產(chǎn)生中間代碼。存諸分配:在目標(biāo)代碼生成階段,當(dāng)對符號名進(jìn)行地址分配時,符號表是地址分配的依據(jù)。對一個多遍掃描的編譯程序,因為每遍所關(guān)心的信息各有差異,所用的符號表內(nèi)容也往往各有不同。一張符號表的每一項(或稱入口)包含兩大欄(或稱區(qū)段、字域),即名字欄和信息欄。

名字欄(NAME)信息欄(INFORMATION)第1項(入口1)

第2項(入口2)

第n項(入口n)信息欄包含許多子欄和標(biāo)志位,用來記錄相應(yīng)名字和種種不同屬性,由于查填符號表一般是通過匹配名字來實現(xiàn)的,因此,名字欄也稱主欄,主欄的內(nèi)容稱為關(guān)鍵字(keyword)。在整個編譯期間,對于符號表的操作大致可歸納為五類:往表中填入一個新的名字;對給定名字,查詢名字是否已在表中;對給定名字,訪問它的某些信息;對給定名字,更新它的某些信息;刪除一個或一組無用的項。不同種類的表格所涉及的操作往往也是不同的。上述五個方面只是一些基本的共同操作。9.飛2嘴符號挽屬性抓(信格息)幾種叉通常但都是血需要賽的。1妙符壘號名2柳符林號的營類型3引符薪號的邪存儲考類別4滔符宜號的勒作用文域及練可視譜性5伍符歲號變掙量的壁存儲櫻分配削信息6援符映號的醉其它壺屬性折①陵數(shù)暖組內(nèi)廊情向騰量規(guī)②藍(lán)記錄結(jié)構(gòu)護(hù)型的飄成員勁信息貧③函娛數(shù)及選過程沾的形鹿參符號瓦表的切組織總體套組織窯和表窄項屬斷性信難息組冊織第一揮種:園把急屬性大種類樹完全疼相同喉的那云些符衛(wèi)號組由在一盛起,括構(gòu)造泊出表蛾項是螞分別茫為等伏長的戒多個股符號傳表第二薪種:椅把所珍有語布言中合的符根號都介組織鴨在一隊張符啄號表縱中。袍組成誕一張?zhí)}包括慮了所存有屬沾性的汁龐大睡的符燭號表第三打種:鏈折衷羽方式脫是根軌據(jù)符島號屬項性相嫌似程較度分菜類組軌織成緣瑞若干捏張表舌,每傲張表移中記續(xù)錄的響符號豪都有苗比較箱多的倒相同州屬性膜。編譯猶程序帽按名陷字的源不同替種屬賊分別智使用遞許多篩符號紡表,駝如常喜數(shù)表采、變蠅量名察表、貫過程停名表注等等兩。PR腐OC腎ED孟UR方E柄IN成CW淘AP毅(M質(zhì),N贈)BE娛GI反N10當(dāng):K化=M晝+1M=販M+部4N=啦KEN傳D經(jīng)編涉譯頭赴三階永段后京所產(chǎn)小生的搖主要附表格特有:啦符號污名表SN克T、常數(shù)姑表CT側(cè)、入口晌名表EN粘T、標(biāo)號捕表LT和四羽元式晃表QT符號羅名表SN伸TNA斜ME狹I閱NF亡OR興MA認(rèn)TI歲ON(1榜)M參數(shù)稠,整箭數(shù),員變量(2邀)N參數(shù)領(lǐng),整道數(shù),寺變量(3恒)K整數(shù)疫,變洗量常數(shù)殊表CT值(VA拼LU線E)俗(1返)懲1的(2緞)耗4入口鞠名表EN揀TNA金ME勵I(lǐng)N笑FO場RM供AT嶄IO雄N(1館)I灑NC隔WA化P二目腦子程蓬序,聯(lián)入口QT未(1蔽)/*記錄納入口球名IN聾CW俘AP的入丑口地屠址*柜/標(biāo)號窗表LTLA乏BL成E歲I疑NF霧OR面MA賢TI幣ON(1名)1域0館QT譜(4習(xí))/*記錄福了標(biāo)搜號1效0對洞應(yīng)的抹四元刮式序梳列號棒*/四元索式表QT四元桌式表QTL1危:回i夠f筒a奮<筋bgo遇toL2就;go朝toLn之ex請t;L2全:杠i售f聾c瞎<執(zhí)5go菜toL3易;go脊toL4離;L3呈:廁i灰f匆x也>劇ygo閣toL5闊;go須toL1??;L5震:希x票:綢=阻z抱+酸1;go象toL3倒;L4佳:砍x穗:睛=菠y;go賞toL1雀;Ln破ex菠t:例:符號推表項比的排蔬列符號憶表作穩(wěn)為一料個多直元組賣,表交中元炊組的漆排列侮組織哲是構(gòu)王造符筋號表領(lǐng)的重篩要成明分。磁在編閘譯程飽序的鵲整個叉工作居過程晝中,頭符號哈表被療頻繁次地用唱來建勞立表棋項,禿找查架表項筑,填矩充和察引用銜表項波的屬混性。掃因此協(xié)表項豆的排冶列組乎織對蕩該系績統(tǒng)運(yùn)姨行的鑼效率萍起著還十分乖重要維的作舉用。杯在編擠譯程錦序中鑄,符很號表禽項的后組織斗傳統(tǒng)偽上采點用三爭種構(gòu)乓造方園法。叉即線弄性法坡,排椒序組瓜織法撕及散沖列法畝。關(guān)鍵縮慧字域狠的組渡織符號傲表的閃關(guān)鍵調(diào)字域暖(段瞇)--海--節(jié)符號丈名、規(guī)符號計本身(1印)峰等長即關(guān)鍵塊字域恭(段迎)符找號表鍋(P2坐15圖9少.9)(2鞠)鐮不等閃長關(guān)棒鍵字炎段符缸號表錄——就采用鍬關(guān)鍵木字池疤的索妥引結(jié)蒸構(gòu)。挖(P2抬15圖9促.1談0)分程店序結(jié)悅構(gòu)的做符號適表對于拉具有牙分程穿序型定結(jié)構(gòu)杠的語耗言程憑序,列不同計層次冒分程無序中沖定義測的標(biāo)殲識符盾號具愿有不半同的云作用謀域和葬不同山的可怖視性君規(guī)則雕。通遺常對豪于具粉有分餡程序隊結(jié)構(gòu)量的語姐言可民用兩屈種方吩式組堪織它串們的熱符號翠表:(1賠)對招每個鑄分程蹲序建搏立一將個獨廣立的取分表碑結(jié)構(gòu)齊的符輛號表應(yīng);(2申)把縣各分樣程序趟符號快組織值在一蓋張單莖表結(jié)闊構(gòu)的覆符號咱表中湊。分表挖結(jié)構(gòu)槐的組倚織管焰理基本武思想聲:每仍當(dāng)編波譯程巴序掃呢描到羽一個脹分程拌序結(jié)塑構(gòu)開殃始時盞,為勵該分袖程序妄建立輸一張頭符號鍛表,單在該誓分程底序中觀定義銀的標(biāo)坦識符段,都癥被登們錄在腸該符賀號表危中。而當(dāng)逐編譯際程序辭掃描恒到一塑個分順程序增的結(jié)照束時香,編熱譯程痰序釋章放為亞該分繼程序棒所建釋立的鼓符號球表。這種推符號蟲表的針分表氏結(jié)構(gòu)蘋與源錘程序右的分粗程序銀層次目結(jié)構(gòu)餃一一柳對應(yīng)P2忘27圖9遭.2浮3單表絕結(jié)構(gòu)閥的組刃織管舟理基本敬思想琴:所獻(xiàn)有分沿程序袍中定裙義的純標(biāo)識碧符都收集中診在單思張符微號表節(jié)中。陵為了綿實現(xiàn)懂分程斗序構(gòu)灰造中隱標(biāo)識坐符的嗽作用家域和糞可視督性規(guī)鋪則的昏要求籃,在衫符號適表中少可設(shè)我立一惡個屬嘉性域數(shù)用來特登錄噸符號誼所在晌分程韻序的繡層次唱。進(jìn)入理分程蠢序時傾,層鵝次要傍增加灣一層拒。在放退出較一個算分程快序時寨,層害次降純低一騾層,脹且需咸要把砍符號鞠表中渣,所竊有在敵退出雪的分肯程序新中登濤錄的染符號炮項清學(xué)除。P2胡28圖9頸.2眉5嵌套暮結(jié)構(gòu)型型程除序設(shè)傳計語具言(Pa躲sc奸al蝦)的特文點可采松用的澤辦法滑之一伐:將其艷符號井表設(shè)墳計為紋棧符桃號表晶,當(dāng)阿新的豎名字忙出現(xiàn)墾總是陣從棧樣頂填趟入。查找駐操作遇從符脾號表驚的棧秘頂往測底部職查(玻保證懲先查斬最近迅出現(xiàn)烤的名登字)翼。因為奶程序蕩是分天層的攜,并公且一野個過抬程結(jié)妥束時其將釋條放相勤應(yīng)的擁子符稿號表承,因矩此查旱找范舒圍與乏線性漂表比我相對器要小當(dāng)一些漂。嵌套遵結(jié)構(gòu)蝕型程寨序設(shè)響計語閥言(Pa鼻sc腸al廣)的特除點可采貸用的稠辦法閥之二撞:引入市一個撤顯示理(DI涉SP綁LA奸Y)層次媽關(guān)系腫表,淚稱為統(tǒng)過程襯的嵌框套層接次表挺。其碰作用套是為教了描摔述過薪程的耕嵌套暗層次董,指傅出當(dāng)炮前正射在活難動著搏的各嚴(yán)嵌套記的過健程(沃或函陜數(shù))煤相應(yīng)們的子貞符號袍表在再棧符僵號表歌中的璃起始梁位置評(相薄對地母址)漫。DI長SP速LA描Y表也戀是一穗個棧轎,棧舊頂指才針為le欣ve云l。當(dāng)進(jìn)稱入一棋個新帆過程漆時,le睡ve資l增加艇1;鐘每當(dāng)沒退出奸一個寇過程爸時,le央ve哲l減1警。DI沫SP靠LA窄Y[浙le沒ve泛l]總是虜指向禍當(dāng)前海正在古處理萍的最圓內(nèi)層右的過候程的州子符哭號表脅在棧杯符號耕表中飽的起友始位敢置。嵌套互結(jié)構(gòu)匯型程掀序設(shè)最計語勞言(Pa囑sc佛al瞎)的特馳點可采較用的鋸辦法趨之三皺:在符壯號表癢的信源息欄舒中引辨入一雞個指鼠針域孕(pr牲ev給io撓us哄)用以誼鏈接評它在狗同一宋過程透內(nèi)的壺前一罪域名疫字在印表中壘的下謹(jǐn)標(biāo)(肥相對先位置胖)。漆每一棚層的勢最后宜一個屆域名篩字,辰其pr照ev百io清us之值滴為0化。這浮樣,末每當(dāng)膏需要瓣查找睜一個暮新名搏字時拍,就回能通牛過DI蛾SP旁LA侄Y找出即當(dāng)前倘正在材處理敲的最領(lǐng)內(nèi)層句的過求程及剖所有誘外層瘡的子云符號預(yù)表在副棧符蕉號表口中的陪位置償。然鈴后,征通過pr廳ev攜io熟us可以匆找到恢同一困過程私內(nèi)的每所有聰被說慨明的節(jié)名字秒。說明孤部分魯?shù)姆诌\(yùn)析與計處理對每顧個過奮程說明瞞的對搶象(變量,常量和過程)造名卵字表登錄榴標(biāo)識言符的此屬性久。填寫標(biāo)識畜符的所在層次、屬性和分葬配的相對貍位置。標(biāo)歸識符督的屬璃性不斜同時落,所中需填較入的亂信息春也不覽同。登錄吧信息曉由EN捎TE病R過程漢完成芳。課本P2裕1說明秀部分倒的分稼析與處賽理(程序)說明煙類型錄的定擱義:ob持je聞ct蹈=望(co晉ns筍ta田nt,va巷ri盯ab途le,pr印oc筑ed懷ur氧e)(定義純量/枚舉類型徐)名字沖表的轎定義ta居bl鉛e:a禾rr形ay滔[0娘..tx蔥ma級x]睡of垮r武ec條or捷dna騾me赴:al巷fa;ca別seki辨nd:o株bj填ec樣t曲ofco鋪ns自ta江nt:(va浪l:i建nt環(huán)eg恢er昂);va跌ri梳ab逮le箭,p矛ro惜ce尚du抱re:(le戴ve采l,ad萍r,si縫ze:in團(tuán)te備ge筋r)庸;例程親序說準(zhǔn)明部圓分為濁:CO敬NS冠T搏A=鍵35魔,B值=4薄9;給V凈AR片C休,D雞,E陽;盛PR假OC強(qiáng)ED缺UR哄E既P;察V數(shù)AR眼G喚;助…名字租類型屢層列次/私值脆地吸址斑存儲柱空間Co丹ns代t(常量兵)無層次對應(yīng)仗符號掠表tx:鏈ta閥bl促e表的煮下標(biāo)企指針暈,是卷以值參雅數(shù)形式勞使用久的。dx:計算鳳每個慰變量夜在運(yùn)虎行棧隊中相母對本過程基地屢址的偏唐移量,放甘在ta臟bl爪e表中的ad聞r域,生成泛目標(biāo)樂代碼時再放在co越de中的a域參考PL歷/0編譯旅程序浩的Bl踏oc疾k函數(shù)狼及其姻遞歸懸調(diào)用變量福定義匆語句禿的處飾理語法妄:<奶變量面說明攤部分駁>:慎:公=va薄r<標(biāo)識諷符>誘{,<標(biāo)識鵝符>}怪;程序支:if豎s鹿ym旋=va念rs匪ymth蕩en轉(zhuǎn)b點eg跡inge濾ts孫ym;桿r跪ep叨ea梢tva擴(kuò)rd含ec護(hù)la枯ra擺ti鋪on;雜(紗*變量茶說明高處理*)wh親il輸e百sy小m=co住mm贏ado序b慢eg固inge則ts疲ym;va炒rd筋ec己la荒ra楚ti罪onen臭d;囑if師s切ym泛=se介mi巷co斜lo酷nth己enge塘ts愚ymel腸se報e攝rr浩or敗(5賣)萬u鞏nt隆il且s扇ym運(yùn)<>id堤en罪t;en著d;變量扔說明松處理pr扔oc瓣ed貼ur腐eva愁rd窄ec侵la卻ra扔ti顧on;be園gi駱n裂if笨s種ym賢=id慘en仗tth衛(wèi)en嬸be啞gi捎nen評te起r(va殃ri氏ab南le);ge伍ts職ymen必d架el役se工er鴿ro移r(盾4)甜en瞧d享(*va確rd約ec成la對ra趣ti薪on*)加;過程EN藏TE端R的實缸現(xiàn)tx:t赤ab頁le表的打指針pr帝oc象ed宣ur奶een宿te全r(k:o怨bj句ec查t供);非be弄gi托n復(fù)(*輸e煉nt漂er蜓o犧bj后ec買t海in紫to伍t公ab互le忠*種)tx:=tx+1賺;wi嚷th殿t形ab揚(yáng)le概[tx]輩do(*開域語句關(guān)*夢)be返gi瓜nna鋼me:=id;(辭*表示ta旬bl猜e[tx].na域me:=id;*證)ki辱nd:=k;降(*表示ta艇bl遲e[tx].ki板nd:=k;*黎)過程EN度TE飄R的實睬現(xiàn)ca派sekofco薄ns蛾ta就nt:be盜gi蘭n長ifnu賭m>am鏟axth夕enbe術(shù)gi神n鹽e戶rr瘦or丑(3牲1)賠;nu組m:=蘿0;握e飼nd脹;va雞l:=nu雙m;凱(得*ta畝bl僻e[tx].va籌l:=nu班m;*后)就e梯nd學(xué);過程EN沖TE方R的實泳現(xiàn)va杜ri益ab毀le:be苗gi惰nle繞ve丟l:=le古v;謹(jǐn)(攝*表示ta聚bl壘e[tx].le評ve浴l:=le礙v*)ad爭r:=dx;郊(*表示ta譽(yù)bl煮e[tx].ad生r:=dx*)dx:=dx+1子;凡e鹽nd匆;pr疾oc議ed梅ur:le脆ve今l:=le斧v(*表示ta姥bl徐e[tx].le繪ve隱l:=le蝴v;*殘)en的d句(*ca涌se*)過;en喂den撈d向(*億en午te桂r*煌);PL紅/0編譯因程序Ta罷bl狗e表的下標(biāo)旺指針tx補(bǔ)充敬說明捷:主程泊序BL墨OC壯K第1次調(diào)用bl墻oc末kBL逃OC償K(0,0,…弦)00..藥.BL紀(jì)OC初KBL梨OC謀K(LE質(zhì)V+刻1,TX,…朱)(遞歸進(jìn)入分程正序)LE紀(jì)VtxLE鑒Vtx(6)6(9)1tx是BL曾OC寒K的實際值參過程兩體的糖處理對語句擔(dān)進(jìn)行語法分析語義練分析當(dāng)遇慮到標(biāo)識兇符的惑引用旨時就調(diào)啄用PO混SI方TI鼠ON函數(shù)查TA數(shù)BL貞E表,看框是否有過正確獸定義,若賊已有第,則食從表鳥中取相差應(yīng)的有雷關(guān)信息,供視代碼總的生破成使執(zhí)用。若無捐定義晝則錯。當(dāng)語法饅語義快正確帖時,就生成相應(yīng)足語句嘩功能播的目標(biāo)驢代碼賦值語句統(tǒng)的處理if資s腹ym斜=id簡en顧tth繪en撇be束gi耗ni:仰=虹po酒si榜ti元on紛(i

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論