編譯器語法分析程序功能_第1頁
編譯器語法分析程序功能_第2頁
編譯器語法分析程序功能_第3頁
編譯器語法分析程序功能_第4頁
編譯器語法分析程序功能_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

11T設(shè)給定文法G和字符串(句子)(∈V*T2即檢查、判定2 .44 設(shè)有文法G和輸入串G:S→aA|A→BaA|B→+|–|*| S=>aA=>aBaA=>a*aA=>5=> => =$5 上

下 77.10進(jìn)行匹配,直到歸約到文法G10$S→aA|A→BaA| B→+|-|*| S=>aA=>=>aBaBaA=>=>aBa+a=>a*a+a=

$ *a+aA→BaA|B→+|–|*| S=>aA=>=>aBaBaA=>aBaBε=>aBa+a=>a*a+a=

*a+a$G1313定義4.1是G的一個(gè)句型,若有S*>A且A+>,則相對(duì)于A的短語。定義4.2是G的一個(gè)句型,若有S*>A且A=>,則相對(duì)于A1515 對(duì)$S=>aAcBaPcBaabcB=>也是相對(duì)于A對(duì)$存在推導(dǎo)S=>aAcB=>aPcB=> cB=>ababS=>aAcB=>aAcd=>aPcd=>S 1919 設(shè)有如下文法G和字符串$=S→cAdA→ab|a

$=$= 規(guī)則A→ab失敗SS

$= $= 分析的本質(zhì)是一種帶回溯的自上而下分析,是Ch4語法分析 不確定的自上而下分析法 I→I0|Ia|$: … …

一.文法的直接左遞歸表現(xiàn)在其含有A→A(∈(VT∪VN)*)形式的產(chǎn)生式規(guī)則,則在語法分析的最左推導(dǎo)中會(huì)呈現(xiàn)A=>A……的間接左遞歸文法會(huì)呈現(xiàn)A>A…… P的規(guī)則改寫成如下等價(jià)的非直接左遞歸P′→α P→Pα| P=> E→E+E|E*E|(E)|E→E+T| |E→E+T| |E→TE′E→TE′T→FT′T′→*FT′|εP→P1|P2|…|Pn|β1|β2|…|P的規(guī)則改寫成如下等價(jià)的非直接左PP→β1P′|β2P′|…P′→1P′|2P′|…| I→I0|Ia|Ib|a|II→aI'|bII'→0I'|aI'|bI'有些文法表面上不具有左遞歸性,卻隱含A→Ba|B→Cb|C→Ac|A=>Ba=>Cba=>B=>Cb=>Acb=>C=>Ac=>Bac=>把間接左遞歸文法改寫為直接左遞歸算法4.1②for(i=1;i=n;i++for(j=1;j=i-1;j++{Ai}A|aB|bC|cB→BA,A的規(guī)A→Acba│cba│ba│aA→A′→C→Ac|cA→cbaA′|baA′|C→Ac|cA→cbaA′|baA′|aA′A′→cbaA′|ε二.P1|2|…| 在自上而下分析中,對(duì)于一個(gè)VN進(jìn)行推導(dǎo)繼而試圖去匹配句子剩余符號(hào)時(shí),若VN含先選1,與當(dāng)前輸入i匹配,若成功,2FIRST()={a|>a……,a∈VTε,如果對(duì)文法G的一個(gè)產(chǎn)生式A,設(shè)AA→1|2|…|i如果它的每個(gè)候選式i均不存在>εi S→Ap|A→a|B→b| FIRST(Ap)FIRST(Bq)

{a,c{b,dFIRST(Ap∩FIRST(Bq FIRST(a)={aFIRST(cA)={cFIRST(a∩FIRST(cA FIRST(b)={bFIRST(dB)={dFIRST(b∩FIRST(dBFIRST(Ap)={a,cFIRST(Bq)={b,dFIRST(a)={aFIRST(cA)={cFIRST(b)={bFIRST(dB)={dS $:cap $: $:FIRST(Ap)={a,cFIRST(Bq)={b,dFIRST(a)={aFIRST(cA)={cFIRST(b)={bFIRST(dB)={dS $:acaAFIRST(i)的相互兩個(gè)彼此交集≠Φ,是因?yàn)閕中有公共左因子,可以A→δβ1|δβ2|…|δ(β1|β2|…|A′→β1|β2|…|A→11|12|…|1n|21|22|…|21(1|2|…|n)

2(1|2|…|m)A′→β1|β2|…|βnA"→1|2|…|Recursive-DescentParser) 設(shè)有文法G(E)E→TE′E′→+TE′|εT→FT′T′→*FT′|εF→(E)|iEE({T;T′({if(c==‘*’){n++;F;}T({F;T({F;F({if(c==‘i’)n++;if(c==‘(’ n++;if(c==‘)’)else}else}E′({if{n++;T;}}E→E→T→E′→T′→$1=i+i*i

i+i*ii+i*ii+i*i#i+i*i#i+i*i#i+i*i

i+i*i$1=(+i

(+i(+i(+i(+i(+iF→(E)| (+i為每個(gè)產(chǎn)生式Ax1x2xn建立從初態(tài)到終態(tài)的路徑,弧標(biāo)記為x1x2?**其中:xiE→50E′→50 入t狀態(tài); 分析器進(jìn)入A的開始狀態(tài),輸入指針不變,到達(dá)A的終態(tài)時(shí)返回到t狀態(tài);若5151E→TE′ E→TE′E′→+TE′|εT→FT′T′→*FT′|εF→(E)|iT

55 55

存放分析過程中的文法符號(hào)(待匹配和已SS# 文

M(A1,a1)

…法

#a1a2…an若當(dāng)前分析棧頂符號(hào)X和ai都是文法的終結(jié)X=ai=“?!?,表示分析成功,停止分析②X=ai≠“?!?,則將X從分析棧頂退掉,p③X≠aiM(X,aiXM(X,ai # ###

# # # #E’T’ # # ***ii## $ FIRSTG,若G中產(chǎn)生式形如A→且沒有=>ε的情況,則產(chǎn)生LL(1)分析表的預(yù)測(cè)函數(shù):M(A,aA→ S→Ap|A→a|B→b| FIRST(Ap)∩ FIRST(a對(duì)B FIRST(bFIRST(dB)6464文法:S→Ap| A→a| B→b|對(duì)B BS→ApS→Bq 若是ε∈FIRST()aFIRST(S>…Aa…,a∈VT}*句型中,能夠緊跟在非終結(jié)符A之后的一1FOLLOW文法G中的每一個(gè)A∈VN,為構(gòu)造FOLLOW(A),可②若文法G中有形如A→αBβ的規(guī)則,且β≠ε,則將FIRST(β)中的一切非ε符號(hào)加入FOLLOW(B);68GA→αB,A→αBβ的規(guī)則且ε∈FIRST(β68 S→AB| A→ε| B→ε|C→AD| D→aS|FOLLOW(S)=FOLLOW(A)={a,c,#FOLLOW(B)=FOLLOW(C)=FOLLOW(D)==>=>=> S→AB| A→ε| B→ε|C→AD| D→aS|FOLLOW(A)=FOLLOW(B)=FOLLOW(C)=

{a,c,#=>=>=>則對(duì)情況的文法確定惟一候選:A1|12不同時(shí)推出為ε時(shí),設(shè)2M(Ab)Aεa∈FIRST(1M(A,a)A1;M(Ab)Aε FOLLOW(A)={a│SS>?Abb設(shè)S>?αγAbβ?由于對(duì)文法規(guī)則存在A→αε∈FIRST(α),當(dāng)α=>εA=>ε*>?αγAbβ?M(A,bA→ε(算法4.4LL(1輸入:文法G;GFIRSTFOLLOW集合輸出:文法G的LL(1)分析表for文法G的每個(gè)產(chǎn)生式A→γ1|γ2| /*G a∈FIRST(γi置M(AaA→γiif Ab}} E→E’→+TE’│εT→FT’F→(E)│i對(duì)E:FIRST(TE)=對(duì)T:FIRST(FT’)=對(duì)F:FIRST((E))=FIRST(i)

{(,i{(,i{( {i

∩=E→ E’→+ T→T’→ F→(E)│對(duì)EFIRST(+TEFIRST(ε)={ε}FOLLOW(E’)={#,)}滿足:ε∪對(duì)T:FIRST(*FT’)*#)FIRST(ε)={ε}#)77滿足:*}ε∪77T’T’FE→E’→+TE’│εT→FT’F→(E)│iEE’ E T FF→F→ S→iCtSS’│aC→b

iifC:e,t:elsethen FIRST(FIRST(eS)={eFIRST(ε)={ε}F

溫馨提示

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