編譯原理自下而上語法_第1頁
編譯原理自下而上語法_第2頁
編譯原理自下而上語法_第3頁
編譯原理自下而上語法_第4頁
編譯原理自下而上語法_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

自下而上語法分析掌握自底相上分析的基本思想,基本概念掌握算符優(yōu)先關系的判定,求FIRSTVT集,LASTVT集,構造算符優(yōu)先關系表,能運用算符優(yōu)先分析方法進行表達式分析掌握最左素短語、句柄的定義與判定理解規(guī)范規(guī)約與算符優(yōu)先歸約的區(qū)別

LR(0)和SLR文法的理解自下而上的語法分析實現(xiàn)思想從輸入符號串開始,從左到右進行掃描,將輸入符號逐個移入一個棧中,邊移入邊分析,一旦棧頂符號串形成某個產(chǎn)生式的右部時,就用該產(chǎn)生式的左部非終結符代替,稱為歸約。重復這一過程,直到歸約到棧中只剩下文法的開始符號時,則分析成功,稱為“移進-歸約”方法。從語法樹的角度看:從語法樹的樹葉開始,逐步向上歸約構造分析樹,直到形成根結。是推導的逆過程。核心尋找可歸約串(這是關鍵)進行規(guī)約。用不同的方法尋找可歸約串,就可獲得不同的分析方法。最左推導(Left-mostDerive)每次推導都替換當前句型的最左邊的非終結符?!c最右歸約對應最右推導(Right-mostDerive)每次推導都替換當前句型的最右邊的非終結符?!c最左歸約(規(guī)范歸約)對應,得規(guī)范句型例:設有文法G[S]:

(1)SaAcBe

(2)Ab

(3)AAb

(4)Bd

使用最右推導:因為S=>aAcBe=>aAcde=>aAbcde=>abbcde,所以abbcde是文法G的句子。步驟動作(1)SaAcBe

(2)Ab

(3)AAb

(4)Bd最左歸約過程是最右推導的逆過程,對輸入串a(chǎn)bbcde的歸約過程如下:該分析過程反復執(zhí)行“移進”和“歸約”兩個動作,直到棧中只有開始符號為止。abaAabAaAacAadcAaBcAaeBcAaS1移進a2移進b3歸約24移進b5歸約36移進c7移進d8歸約49移進e10歸約1語法分析樹的生成演示abbcdeAABSA→bA→AbB→dS→aAcBe(1)SaAcBe

(2)Ab

(3)AAb

(4)Bd這種分析過程具有如下特點:從輸入串的開始依次讀入單詞(移進棧中)。一旦發(fā)現(xiàn)可歸約串(某個產(chǎn)生式的右端)就立即歸約。歸約就是將棧頂?shù)囊淮栍梦姆óa(chǎn)生式的左部代替,歸約可能重復多次,然后繼續(xù)移進。若最終能歸約成文法的開始符號,則分析成功。關鍵是如何判斷可歸約串?問題的提出:①在構造語法樹的過程中,何時歸約?當可歸約串出現(xiàn)在棧頂時就進行歸約。②如何知道在棧頂符號串中已經(jīng)形成可歸約串?如何進行歸約?通過不同的自底向上的分析算法來解釋,不同的算法對可歸約串的定義是不同的,但分析過程都有一個共同的特點:邊移進邊歸約。規(guī)范歸約:使用句柄來定義可歸約串。算符優(yōu)先:使用最左素短語來定義可歸約串規(guī)范歸約概念有文法G,開始符號為S,如果有S=>xβy,則xβy是文法G的句型,x,y是任意的符號串如果有S=>xAy,且有A=>β,則β是句型xβy相對于非終結符A的短語如果有S=>xAy,且有A->β,則β是句型xβy相對于A->β的直接短語位于一個句型最左邊的直接短語稱為句柄。**+*注:每次歸約的部分必須是稱之為句柄的字符串(最右推導)。

關鍵的問題是如何識別句柄

例子下面的例子說明作為短語的兩個條件缺一不可。[例]考慮表達式文法:ET|E+TTF|T*FFi|(E)對于句型i*i+i推導EE+TE+F

E+i

T+iT*F+TT*i+iF*i+ii*i+i盡管有E+i+i但是,i+i并不是該句型的一個短語,因為不存在從E(文法開始符)到i*E的推導。句型蝕的短旱語和財句柄罵舉例文法奧:S→賤(客T)濟|ε羞T→英S|勉T,珍S|粱a短語秤:句型((疼a)扭,S似)磨S=*>(T僅,S訂)版T=+>(a諷)句型((堤T,鑼S)顛,S猴)際S=*>((儀T)縱,S貸)領T=+>T,飛S句型(a打,(鍛T)友,(憶T,消S)礦)直接纖短語挪以及網(wǎng)句柄跳:S=*>(T墓,(艇T)危,(械T,稱S)驕)梢T=>aS=*>(a傘,S藍,(補T,領S)宇)騎S=>(T振)S=*>(a聯(lián),(鍵T)宋,(加T)排)鳥T=>T,筐S短語社與語驗法樹吹的關沫系短語且:語瞎法樹炕子樹累的葉六子結要點組可成的抓符號彩串。直接滑短語宏:語碰法樹摔簡單察子樹艦(只矩有父潤子兩抽代)擴的葉愧子結里點組投成的產(chǎn)符號宇串。句柄聾:語慰法樹霜最左要邊簡飽單子昂樹的指葉子澤結點偏組成乏的符驅號串若。短語地與語燦法樹躁關系如的例著子句型(a縫,(爐T)堤,(府T,擋S)華)的語奏法樹見:S()TTS,T,S(T)a(T)T,S用句泊柄對咬句子ab生bc首de進行輔歸約用句柄伴對句聽子進舍行歸風約的焦過程驕與用化移進-歸約梅過程污是一戶致的武,使讓用歸蓋約的餅產(chǎn)生處式及磚其順奔序是虧一致袍的。句型歸約規(guī)則abbcde(1露)SaA府cB斧e(2轟)A賭配b戀(3檔)A司Ab(4早)B駛統(tǒng)d(2輸)蟲Ab(3避)A宴AbaA弓bc堆deaA林cd體e(4源)B串踏d(1義)SaA摩cB播eaA納cB繁eS規(guī)范它歸約貝的定絮義假定α是文壁法G的一竟個句享子,吼如果很序列須:αn,素αn-全1,怪……攔,近α0(=S)滿足明如下鳴條件咽,則么序列αn,湯αn-女1,羨……敢,詠α0是一神個規(guī)錘范歸卻約:(1藥)αn=α是給定歡的句珍子(2桌)α0=S是文停法的權開始步符號(3帆)對任蒜何i,榴0春<in,αi-機1是從αi經(jīng)把忌句柄倦替換莫為相余應文端法產(chǎn)游生式廊的左掠部符克號而砌得到屯的。規(guī)范培歸約劑是最舒右推局導的傳逆過惡程,禁規(guī)范黎歸約駕又稱烘為最魔左歸版約。最右凱推導奮又稱劇規(guī)范認推導德,由寸規(guī)范銹推導遮所得冬到的謹句型打稱規(guī)地范句袖型,擦規(guī)范翅推導鑒的逆快過程撕是規(guī)舒范歸另約。使用增修剪違語法嬌樹的列方法俗來進夠行歸驕約:SaAcBeAbdSaAcBeAbbdSaAcBe分析親器的鑒四種暗動作移進:將下附一輸皆入符膨號移亡入棧歸約:當棧計頂出指現(xiàn)句化柄,勢用產(chǎn)框生式杠左側炒的非置終結爸符替孕換棧呆頂?shù)幕蚓浔邮埽悍治龀晒Π?,是陶歸約玻的一擊種特難殊情么況出錯:棧頂臟的內(nèi)抹容與尺輸入物符號預相悖侍,進砌行出牌錯處虧理分析芹成功撓的條禾件:棧頂攝為文馳法符共號,疑輸入坡串為己空。膊注意攜,該純過程蒙并未藝涉及阻如何膚在??评镎矣X可歸己約串窄。實萌際上引,不辛同的茂找可委歸約役串的勵方法征,構誓成了偷不同早的分巧析算帳法?!耙苹镞M-歸約預”分止析法誦用棧必實現(xiàn)素的特比點:可歸駕約串撞必定趴位于熔棧頂車,即晝可歸濫約串雪之后發(fā)就是釀剩余塌的輸環(huán)入串歡。棧內(nèi)叼符號布串與傘剩余濃輸入咱串正申好構稍成一冶個句庭型。例:嫩有文掘法:E-特>E練+T濟|TT-耗>T溉*F物|FF-蔑>(言E)則|i對輸?shù)秩氪甶1退+i哲2*赴i3的規(guī)嬸范歸倡約過記程:動作棧輸入顏緩沖塘區(qū)1)準備#架i1+i2*i3#2)移進#i1+i2*i3#3)歸約F→遲i#F驕+i2*i3#4)歸約T→齡F伐#T雹+i2*i3#5)歸約E→孕T恰#E需+i2*i3#6)移進#E庸+駝i2*i3#7)移進#E陽+i2*i3#8)歸約F→虛i#E業(yè)+F冠*頓i3#9)歸約T→步F脹#E里+T音*簽i3#10箭)移進#E潛+T困*暑i3#11忍)移進#E往+T拜*i3#12炕)歸約F→湖i#E瓦+T劫*F辭#13冊)歸約T→格T*政F任#E術+T承#14迷)歸約E→零E+租T懶#E邊#15術)接受所得盲的結茂果是荷:用復產(chǎn)生色式序有列表齊示語釘法分靜析樹E-緩>E島+T良|依TT-太>T伐*F嚷|遣FF-抬>(辨E)倚|霧ii1+賠i2*程i3FTEFTFTE算符旗優(yōu)先副分析算符屠優(yōu)先蛛分析椅法的捎思想子源于場表達詳式的遙分析莖,即蹲利用況相鄰評終結咽符號噸之間極的關門系來使尋找區(qū)可歸昂約串戲。將句哭型中灑的終配結符超號當怪作“灶算符塞”,訊借助褲于算市符之申間的視優(yōu)先趁關系集確定可歸喂約串。顯然胖,在姨一個粥符號采串中耳,任姜意兩驕個相支鄰終腰結符舟號a和b之間纏,只樂可能抽存在丈以下勝四種例優(yōu)先怒關系捧:(1沃)份a,英b優(yōu)先祥性相似同,起記作a滴b。(2尤)年a優(yōu)先婦性高拾于b,記作ab。(3專)濱a優(yōu)先佳性低略于b,記作ab。(4牢)鞠a與b不可晉能相拆鄰,淚即此弱符號勉串不伯是句忍型(出錯)。如果袋以上訂四種累關系亂中的莫任意序兩種麥都不顏會同堵時成可立,探則可虎以根丑據(jù)終漏結符缸號之洋間的站歸約若關系杏進行捏語法和分析難。算符紹文法:一個拳上下旬無關巨文法G,如果劇沒有P-濾>,且沒肺有P-搞>.果..顏QR器..座.(冒P,蒼Q,喜R屬于鴉非終堤結符),則G是一廳個算央符文嫌法。算符借優(yōu)先昂關系的定府義:a繡b跡,G中有P-探>.偵..ab..菜.或P-仇>.責..aQ閘b..浪.尊(在同狀一產(chǎn)籌生式顯中)a鼓b固,G中有P-惰>.峽..aR..花.的產(chǎn)歌生式,且R=剛>b蝕..黃.或R=床>Qb..譯.a闊b兼,G中有P-爸>.全..Rb..糖.的產(chǎn)糠生式,且R=購>.旁..辣a或R=編>.飾..aQ算符聾優(yōu)先飽文法淺(OP將G)的丟定義++++例:E→勉E+猾E轉|頌E*肥E姐|彩(E言)知|歐i證明隆不是OP黎G文法筒。因為奶:E→蒸E+招E,EE*傳E則有+社*又因餡為:E→普E*磁E,漏EE+蜘E則有+*所以蘇不是閣算符效優(yōu)先鴨文法媽。算符坐優(yōu)先喘文法算符也文法G的任夠何終們結符a,稈b之間攔要么獻沒有柄優(yōu)先嬸關系策,若傍有優(yōu)臨先關泄系,至多米有,大,中的倦一種所成立,則G為一副算符喉優(yōu)先槍文法懼。算符發(fā)優(yōu)先騾關系織表的編構造FI兼RS若TV塊T集定義近:對票每個攏非終描結符P,倚F棄IR并ST軟VT頭(P物)=朵{a帆|P糞=>春a.振..或P=問>Qa..淡.,過a為終耀結符,P,Q為非劫終結騰符}++由優(yōu)螺先性京低于潔的定搏義和FI炭RS替TV散T集合漆的定訪義可估以得范出:若存浪在某懼個產(chǎn)寬生式帝:…aP…,對所有笑:b∈FI壞RS離TV叨T(P裁),都蹈有:a銅b。按照梯下面即兩條央規(guī)則爬來構平造FI膜RS斧TV留T集:①紀若有貧產(chǎn)生轟式P-咐>a興..蘇.或P-稼>Qa..醒.,則a∈腥FI鹽RS鹿TV薄T(簽P)②若有若產(chǎn)生獨式P-憑>R沉..筆.,則FI宇RS迫TV難T(幻玉R)包含醒在FI舟RS丸TV怪T(臟P)中LA愁ST鮮VT集定義主:對撫每個蔥非終菌結符P,LA打ST市VT忠(P皂)=篇{a需|P裝=晝>佳..進.a或P室=>癥..億.aQ,a為終撓結符,P,Q為非瓜終結絞符}++由優(yōu)餅先性翅高于尸的定掉義和LA粗ST途VT集合繳的定猴義可田以得南出:若存妨在某撇個產(chǎn)邁生式兩:…Pb…,對所有奶:a∈LA侍ST半VT(P干),都被有:a廚b。按照檔下面替兩條鋤規(guī)則者來構盼造LA盤ST遍VT集:①祝若有窩產(chǎn)生盈式P-逐>.舍..寄a或P-蓬>所..敗.aQ,則a∈略LA統(tǒng)ST糟VT直(P)②若有骨產(chǎn)生繞式P-蛾>.盾..刮R,則LA糕ST伐VT叨(R優(yōu))包含填在LA筒ST浪VT案(P辨)中構造昨優(yōu)先賤關系值表如果寫每個封非終癥結符紋的FI毒RS他TV雀T和LA沖ST騾VT集均炕已知,則可帆構造困優(yōu)先己關系嚇表。若產(chǎn)怒生式幫右部常有..刮.aP..鏟.的形阻式,則對近于每寇個b∈仍FI胃RS獎TV樸T(參P)都有a索b若產(chǎn)肚生式鋤右部茂有..襲.Pb的形似式,則對蠻于每涼個a∈梅LA蠶ST怒VT振(P枯)集,都有a貪b若產(chǎn)角生是騙形如趴:A→罩…ab…或A→溜…aB恢b…形式盤,則覆有a尖b構造飾優(yōu)先用關系棒表的掩算法中如下職:Fo膊r每條奧形如PX1X2…Xn的產(chǎn)生軟式dofo校r偶i啊=1軍t顏o青n-秩1蝦do{if粗Xi和Xi+軍1都是鉛終結答符th卵enXi=仔Xi+拘1if漏i塌<=棟n研-2且xi和Xi+期2都是利終結任符,跟Xi+智1為非美終結管符th朝en忠Xi=伯Xi+夕2if后Xi為終結濁符,擴Xi+父1為非凳終結教符th莖en料f叢orfi取rs擋tV益T中的優(yōu)每個己元素a湯doXi<羽aif鎖Xi為非終另結符,挺Xi+驅1為終金結符th藥en盆f交orla跟st互VT中的減每個曾元素a富doa飯>滔Xi+俊1}算符叛優(yōu)先尸分析尊算法通過底比較知終結怒符間鼓的優(yōu)目先關勿系來駱實現(xiàn)根據(jù)撒優(yōu)先道分析垃的原鞠理,滔語法秧分析鉗程序捉的任扇務是六:不住斷移稍進輸熟入符給號,梨識別桃可歸呆約串僵并進竊行歸江約。分析戚的方踩法:薦根據(jù)姥優(yōu)先澤性“占高于叼”來本識別所可歸小約串嶄的頭循,根腥據(jù)優(yōu)靠先性擺“低泰于”它來識門別可榨歸約橡串的菌尾。闊各種充優(yōu)先陳關系授已經(jīng)吃存于寄優(yōu)先尖關系鵲表中股。不能下識別迷只由鬼一個般非終撕結符始組成商的句藥柄?;荒芾ケWC烘每次魔對句報柄進狀行歸疤約,在算雁符優(yōu)宗先分流析過暫程中,每次盾歸約詞的符謙號串,是當充前句脂型的該最左閃素短蝕語。素短熄語:至少井含有易一個財終結繳符,且除櫻自身瀉外,不再構包含裁任何滑其它迅更小請的素術短語聽。最左汁素短令語(l仗ef錦tm陣os罵t剩pr險im余e雹ph俘ra業(yè)se腔):是指繁位于志句型也最左憲邊的茶那個草素短各語。例:放下述處文法攻的一槍個句且型:T線*詢F前+嫌i其短邊語、微素短傾語、墊最左醫(yī)素短發(fā)語分樂別是忙?ET護|箭E捧+TT銹F柏|桶T*篩FFi爆|酸(僚E)EE+TFiTT*F短語最有:i,械T射*唱F,輔T偏*目F趣+懲i素短似語有見:i,花T努*繞F最左稅素短飽語是底:T爪*何F例:文法GE-號>E蒸+T抬|TT-蟻>T請*F爭|FF-盡>(漆E)度|i句型T+踐T*恰F+名i的語鑰法樹款如圖健:EET+E+TFTT*FPi根據(jù)吼語法蘆樹可糕知:句型#T佳+T慕*F如+i聾#的短逆語有爪:T坐—相對察非終棟結符E的短碧語T*征F隆—相對喜非終厲結符T的短明語T+粱T*氧F助—相對訪非終陪結符E的短園語i蘋—相對合非終度結符P、F、T的短厲語T+獅T*沾F+香i犯—相對糕非終產(chǎn)結符E的短梯語根據(jù)擱素短振語的等定義爭可知終:i和T*少F為素繁短語橫。其中妹:T+母T*迷F堵(含T*輔F素短巨語)、T+部T*批F+可i研(含T*傍F素短熊語)和T(不含觀終結需符)也不士是素棕短語T*衡F為最呈左素耗短語親。一個算符文法G的某個句型的最左素短語可描述:設句型的一般形式為(Ni∈VN∪{ε},ai∈VT #N1a1N2a2…

NnanNn+1#它的最左素短語是滿足下列條件的最左子串: NiaiNi+1ai+1…

NjajNj+1其中:ai-1≮ai,, ai≡ai+1

…..

aj-1≡aj, aj≯aj+1該定理妻說明沿了最防左素雷短語禍與周亮圍符棄號之其間的蓄關系算符波優(yōu)先篩分析華過程茶:(根據(jù)歐最左胖素短外語的孟定義)句型桐的一戀般形島式:慈#N1a1N2a2..具.NnanNn+正1#(勝ai為終雞結符,Ni為可潔有可韻無的晃非終劉結符)從左明向右佳掃描蘇各符困號,依次欺查看富算符候優(yōu)先抗矩陣,直至播找到羅滿足ai>夾ai+巡壽1的終抽結符舅為止,一直梳移進君,再促從ai開始售往左往掃描,直至迎找到謠滿足等關系aj-澤1aj的終止結符掩為止,進行崖歸約喉。此時,形如:NjajNj+邀1aj+明1..獲..況.NiaiNi+劣1的子紐奉串即阻為最設左素爸短語,應被賓歸約擔。分析粥過程場的結袍束:優(yōu)分析潤棧中恨為#S,輸入蘇串為#例:E-吵>E絹+T付|TT-雞>T蔬*F鴨|FF-研>(燙E)灑|i把#入棧,讀一唉符號i,因為#旺<英i,所以拴把i入棧因為i赴>齡+腸,所以險歸約:F皺->頁i因#捏<秧+零,所以+入棧因+溉<調(diào)i朽,所以i入棧因i訓>杏*撫,所以箱歸約:F暮->糾i因+月<粒*湯,所以攔*入剃棧因*<遮i銅,所以i入棧因i很>級#率,所以兄歸約:F伶->群i因*>房誠#國,所以壘歸約:T撓->緣瑞F*藏F因+下>巨#句,所以慨歸約:E蓄->槳T+眉F分析注成功求i+擦i*頸i的算態(tài)符優(yōu)鞠先分繁析過賊程棧宏輸入泡緩沖突區(qū)#坡i蛾+i返*i侵##i+i槍*i脂##F+i腿*i蓄##F設+i*梨i##F符+i*i朝##F聲+F*

溫馨提示

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

評論

0/150

提交評論