ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)

ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)

ID:36321878

大?。?.44 MB

頁(yè)數(shù):59頁(yè)

時(shí)間:2019-05-09

ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)_第1頁(yè)
ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)_第2頁(yè)
ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)_第3頁(yè)
ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)_第4頁(yè)
ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)_第5頁(yè)
資源描述:

《ch7.1-7.3lr-slr語(yǔ)法分析(張素琴)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、17.1LR分析概述7.2LR(0)分析7.3SLR(1)分析7.4LR(1)分析7.7語(yǔ)法分析器的自動(dòng)構(gòu)造工具yacc第7章LR分析法27.1LR分析概述分析器的邏輯結(jié)構(gòu)及工作過(guò)程LR(k)分析技術(shù)L----是指從左至右掃描輸入符號(hào)串R----是指構(gòu)造一個(gè)最右推導(dǎo)的逆過(guò)程,K----是指為了作出分析決定而向前看的輸入符號(hào)的個(gè)數(shù)。3LR分析方法是當(dāng)前最廣義的無(wú)回溯的“移進(jìn)-歸約”方法。LR(k)分析技術(shù)knuth于1965年首先提出來(lái)的。根據(jù)棧中的符號(hào)串和向右順序查看輸入串中的k(k?0)個(gè)符號(hào),就能唯一確定分析器的動(dòng)作是

2、移進(jìn)還是歸約,以及用哪個(gè)產(chǎn)生式進(jìn)行歸約。優(yōu)點(diǎn):限制少,適用范圍廣;分析速度快;報(bào)錯(cuò)準(zhǔn)確。4缺點(diǎn):構(gòu)造分析器的工作量很大,不大可能手工構(gòu)造用軟件工具yacc-YetAnotherCompilerCompiler,Bell,1974.輸入LR上下文無(wú)關(guān)文法的BNF,輸出LR分析器。5一、LR分析器邏輯結(jié)構(gòu)輸入、輸出、棧、驅(qū)動(dòng)程序和分析表組成id+id*id#LR驅(qū)動(dòng)程序動(dòng)作轉(zhuǎn)移actiongoto輸出S1Xm…S1…X1S0#棧狀態(tài)文法符號(hào)產(chǎn)生式表LR分析特征:規(guī)范的符號(hào)棧中的符號(hào)是規(guī)范句型的前綴分析決策依據(jù)―棧頂狀態(tài)和現(xiàn)行輸

3、入符號(hào).識(shí)別規(guī)范句型特定前綴(就到句柄為止)的DFA.四種技術(shù)LR(0)SLR(1)LR(1)LALR(1)7不同的語(yǔ)法分析器具有不同的分析表,驅(qū)動(dòng)程序都是一樣的LR(0)分析器LR(0)分析表SLR(1)分析器SLR(1)分析表LR(1)分析器LR(1)分析表LALR(1)分析器LALR(1)分析表分析表是LR分析法的核心,它包含兩部分:動(dòng)作表(ACTION)和狀態(tài)轉(zhuǎn)換表(GOTO)8動(dòng)作表動(dòng)作規(guī)定如下:移進(jìn)ai和s=action[sm,ai]進(jìn)棧action[sm,ai]=歸約rj:A?Xm-r+1Xm-r+2…Xms

4、=goto[sm-r,A]接受成功,規(guī)約到識(shí)別符號(hào)出錯(cuò)9二、LR分析器的工作過(guò)程主控程序根據(jù)輸入串、棧、產(chǎn)生式、分析表進(jìn)行相應(yīng)的移近、規(guī)約、接受或報(bào)錯(cuò)操作。id+id*id#LR主控程序動(dòng)作轉(zhuǎn)移actiongoto輸出S1Xm…S1…X1S0#棧狀態(tài)文法符號(hào)產(chǎn)生式表107.2LR(0)分析A→.XYZA→X.YZA→XY.ZA→XYZ.對(duì)于產(chǎn)生式A→XYZ對(duì)應(yīng)的句柄XYZ,其狀態(tài)劃分為:句柄識(shí)別態(tài)一、LR分析的基本原理把每個(gè)句柄的識(shí)別過(guò)程劃分為若干個(gè)狀態(tài),每個(gè)狀態(tài)下,自左向右地識(shí)別了句柄的一部分符號(hào)。11活前綴定義:規(guī)范推

5、導(dǎo)S?*?A?????,??的所有前綴稱為活前綴。即規(guī)范句型的前綴,但右端不超過(guò)該句型句柄末端。識(shí)別了句柄的一部分就相當(dāng)于識(shí)別了當(dāng)前規(guī)范句型的左起部分,這部分被識(shí)別的符號(hào)串稱之為規(guī)范句型的活前綴。對(duì)于文法G[S]1.S→vI:T2.I→I,i3.I→i4.T→realvi,i:real是該文法的一個(gè)句子S=>vI:T=>vI:real=>vI,i:real=>vi,i:real12vi,i:real#其活前綴是:#vi,iεvI,ivivvI,vIvI:vI:realvI:TSIIvIreal:T1.S→vI:T2.I→I

6、,i3.I→i4.T→realS13DFA的定義:M=(Q,Σ,δ,q0,Z)其中:Q--狀態(tài)集Σ—輸入字母表δ–QxΣ→Q的映射函數(shù)LR分析器使用有窮自動(dòng)機(jī)DFA識(shí)別各規(guī)范句型的活前綴LR(0)項(xiàng)目:14LR(0)項(xiàng)目:用圓點(diǎn)“?”表示識(shí)別一個(gè)產(chǎn)生式右部符號(hào)到達(dá)的位置,若有規(guī)則A?XYZ,則有下面四個(gè)項(xiàng)目:A→.XYZA→X.YZA→XY.ZA→XYZ.A???a?,a?VT移進(jìn)項(xiàng)目A???B?,B?VN待歸約項(xiàng)目A???歸約項(xiàng)目S’′?.S開(kāi)始項(xiàng)目項(xiàng)目A→X.YZ和A→XY.Z稱為后繼項(xiàng)目S’′?S?接受項(xiàng)目15拓廣文

7、法定義:為了使文法的“接受”狀態(tài)易于識(shí)別,且唯一,常對(duì)文法進(jìn)行拓廣改造。對(duì)于文法G,我們構(gòu)造一個(gè)G’,引進(jìn)一個(gè)不出現(xiàn)在G中的非終結(jié)符S’和一個(gè)產(chǎn)生式S’→S,S’為G’的開(kāi)始符號(hào),S’不出現(xiàn)在規(guī)則右部。對(duì)于文法G[E]1.E→aA

8、bB2.A→cA

9、d3.B→cB

10、d文法G’[S’]0.S’→E1.E→aA

11、bB2.A→cA

12、d3.B→cB

13、d拓廣文法161.S’→E2.S’→E3.E→aA4.E→aA5.E→aA6.A→cA7.A→cA8.A→cA9.A→d10.A→d11.E→bB12.E→b.B13.E→bB14.B

14、→cB對(duì)于上述文法G’,所有LR(0)項(xiàng)目如下:15.B→cB16.B→cB17.B→d18.B→d文法G’[S’]0.S’→E1.E→aA

15、bB2.A→cA

16、d3.B→cB

17、d17歸約項(xiàng)目:5、8、10、13、16、18接收項(xiàng)目:2移進(jìn)項(xiàng)目:3、6、9、11、14、17待約項(xiàng)目:4、7、12、15初始

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。