![2024年LL1語法分析實(shí)驗(yàn)報(bào)告_第1頁](http://file4.renrendoc.com/view7/M02/0F/3F/wKhkGWbVCQCAEzOyAACAfgpcHyk609.jpg)
![2024年LL1語法分析實(shí)驗(yàn)報(bào)告_第2頁](http://file4.renrendoc.com/view7/M02/0F/3F/wKhkGWbVCQCAEzOyAACAfgpcHyk6092.jpg)
![2024年LL1語法分析實(shí)驗(yàn)報(bào)告_第3頁](http://file4.renrendoc.com/view7/M02/0F/3F/wKhkGWbVCQCAEzOyAACAfgpcHyk6093.jpg)
![2024年LL1語法分析實(shí)驗(yàn)報(bào)告_第4頁](http://file4.renrendoc.com/view7/M02/0F/3F/wKhkGWbVCQCAEzOyAACAfgpcHyk6094.jpg)
![2024年LL1語法分析實(shí)驗(yàn)報(bào)告_第5頁](http://file4.renrendoc.com/view7/M02/0F/3F/wKhkGWbVCQCAEzOyAACAfgpcHyk6095.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
LL(1)語法分析試驗(yàn)名稱:實(shí)現(xiàn)LL分析。試驗(yàn)規(guī)定:輸入任意文法消除左遞歸消除左因子測試任意輸入語句與否合法數(shù)據(jù)構(gòu)造描述算法闡明輸出first集合輸出follow集合輸出LL(1)表三.設(shè)計(jì)原理及算法描述所謂LL(1)分析法,就是指從左到右掃描輸入串(源程序),同步采用最左推導(dǎo),且對(duì)每次直接推導(dǎo)只需向前看一種輸入符號(hào),便可確定目前所應(yīng)當(dāng)選擇的規(guī)則。實(shí)現(xiàn)LL(1)分析的程序又稱為LL(1)分析程序或LL1(1)分析器。一種文法要能進(jìn)行LL(1)分析,那么這個(gè)文法應(yīng)當(dāng)滿足:無二義性,無左遞歸,無左公因子。當(dāng)文法滿足條件後,再分別構(gòu)造文法每個(gè)非終止符的FIRST和FOLLOW集合,然後根據(jù)FIRST和FOLLOW集合構(gòu)造LL(1)分析表,最終運(yùn)用分析表,根據(jù)LL(1)語法分析構(gòu)造一種分析器。LL(1)的語法分析程序包括了三個(gè)部分,總控程序,預(yù)測分析表函數(shù),先進(jìn)先出的語法分析棧,本程序也是采用了同樣的措施進(jìn)行語法分析,該程序是采用了C語言來編寫,其邏輯構(gòu)造圖如下:LL(1)預(yù)測分析程序的總控程序在任何時(shí)候都是按STACK棧頂符號(hào)X和目前的輸入符號(hào)a做哪種過程的。對(duì)于任何(X,a),總控程序每次都執(zhí)行下述三種也許的動(dòng)作之一:(1)若X=a=‘#’,則宣布分析成功,停止分析過程。(2)若X=a‘#’,則把X從STACK棧頂彈出,讓a指向下一種輸入符號(hào)。(3)若X是一種非終止符,則查看預(yù)測分析表M。若M[A,a]中寄存著有關(guān)X的一種產(chǎn)生式,那么,首先把X彈出STACK棧頂,然後,把產(chǎn)生式的右部符號(hào)串按反序一一彈出STACK棧(若右部符號(hào)為ε,則不推什么東西進(jìn)STACK棧)。若M[A,a]中寄存著“出錯(cuò)標(biāo)志”,則調(diào)用出錯(cuò)診斷程序ERROR。實(shí)際上,LL(1)的分析是根據(jù)文法構(gòu)造的,它反應(yīng)了對(duì)應(yīng)文法所定義的語言的固定特性,因此在LL(1)分析器中,實(shí)際上是以LL(1)分析表替代對(duì)應(yīng)措施來進(jìn)行分析的。2.構(gòu)造LL(1)分析表考察文法G[E]:E→E+T|TT→T*F|FF→(E)|i|x|y我們輕易看出此文法沒有左公因子也沒有二義性,但卻存在兩個(gè)直接左遞歸,這裏我們運(yùn)用引入新非終止符的措施來消除它使措施滿足規(guī)定,即:對(duì)形如:U→Ux|y的產(chǎn)生式(其中x,yV+,y不以U開頭),引入一種新的非終止符U’後,可以等價(jià)地改寫成為:U→yU’U’→xU’|ε顯然改寫後,U和U’都不是左遞歸的非終止符。因此文法G[E]按上述措施消去左遞歸後可等價(jià)地寫成:E→TPP→+TP|εT→FQQ→*FQ|εF→(E)|i|x|y在構(gòu)造LL(1)預(yù)測分析表之前,首先要構(gòu)造該文法的每個(gè)非終止符的FIRST和FOLLOW集合,按照下面描述的算法來構(gòu)造這兩個(gè)集合。①FIRST集合的構(gòu)造算法:(1)若X∈VT,則FIRST(X)={X}。(2)若X∈VN,且有產(chǎn)生式X→a……,則把a(bǔ)加入到FIRST(X)中;若X→ε也是一條產(chǎn)生式,則把ε也加到FIRST(X)中。(3)若X→Y……是一種產(chǎn)生式且Y∈VN,則把FIRST(Y)中的所有非ε-元素都加到FIRST(X)中;若X→Y1Y2…Yk是一種產(chǎn)生式,Y1,…,Yi-1都是非終止符,并且,對(duì)于任何j,1≤j≤i-1,F(xiàn)IRST(Yj)都具有ε(即Y1…Yi-1*ε),則把FIRST(Yj)中的所有非ε-元素都加到FIRST(X)中;尤其是,若所有的FIRST(Yj)均具有ε,j=1,2,…,k,則把ε加到FIRST(X)中。持續(xù)使用上面的規(guī)則,直至每個(gè)集合FIRST不再增大為止。②FOLLOW集合的構(gòu)造算法:(1)對(duì)于文法的開始符號(hào)S,置#于FOLLOW(S)中;(2)若A→αBβ是一種產(chǎn)生式,則把FIRST(β)|{ε}加至FOLLOW(B)中;(3)若A→αB是一種產(chǎn)生式,或A→αBβ是一種產(chǎn)生式而βε(即ε∈FIRST(β)),則把FOLLOW(A)加至FOLLOW(B)中。持續(xù)使用上面的規(guī)則,直至每個(gè)集合FOLLOW不再增大為止。目前來構(gòu)造G[E]的LL(1)預(yù)測分析表。預(yù)測分析表M[A,a]是如下形式的一種矩陣。A為非終止符,a是終止符或‘#’。矩陣元素M[A,a]中寄存這一條有關(guān)A的產(chǎn)生式,指出當(dāng)A面臨輸入符號(hào)a是所應(yīng)采用的規(guī)則。M[A,a]也也許寄存一條“出錯(cuò)標(biāo)志”,指出當(dāng)A主線不該面臨輸入符號(hào)a。4.運(yùn)用分析表進(jìn)行預(yù)測分析帶預(yù)測分析的PDA1)總程序的算法描述如下:BEGIN首先把‘#’然後把文法開始符號(hào)推進(jìn)STACK棧;把第一種輸入符號(hào)讀進(jìn)a;FLAG:=TRUE;WHILEFLAGDOBEGIN把棧頂符號(hào)出棧到X中;IFX?VTTHENIFX=aTHEN把下一輸入符號(hào)讀進(jìn)aELSEERRORELSEIFX=‘#’THENIFX=aTHENFLAG:=FALSEELSEERRORELSEIFM[A,a]={X?x1x2…xk}THEN把xk,xk–1,…,x1依次進(jìn)棧/*若x1,x2…xk=e,則不進(jìn)棧*/ELSEERRORENDOFWHILE;STOP/*分析成功,過程結(jié)束*/END四.重要數(shù)據(jù)構(gòu)造描述1.chartermin[50];/*終止符號(hào)*/charnon_ter[50];/*非終止符號(hào)*/charv[50];/*所有符號(hào)*/charleft[50];/*左部*/charright[50][50];/*右部*/charfirst[50][50],follow[50][50];/*各產(chǎn)生式右部的FIRST和左部的FOLLOW集合*/intM[20][20];/*二維數(shù)組存儲(chǔ)分析表*/棧T用來寄存產(chǎn)生式的右邊Str數(shù)組寄存要分析的句子串運(yùn)行成果:ERTWF#+*()i#測試文法G[E
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)院衛(wèi)生服務(wù)承包協(xié)議書
- 2025年一次性服務(wù)協(xié)議樣本
- 2025年新型科研產(chǎn)品試制合同
- 2025版股權(quán)激勵(lì)協(xié)議樣板
- 2025年園林綠化勞務(wù)合作合同模板
- 2025年跨國業(yè)務(wù)合作合同樣本
- 2025年官方房產(chǎn)抵押貸款協(xié)議模板
- 2025年寧夏回族自治區(qū)合同范例文本
- 2025年櫻桃木采購合同樣本
- 2025年產(chǎn)權(quán)更迭與股權(quán)互換協(xié)議
- 咯血病人介入術(shù)后護(hù)理
- 2025年春新外研版(三起)英語三年級(jí)下冊(cè)課件 Unit4第1課時(shí)Startup
- 幼兒園市級(jí)課一等獎(jiǎng)-大班語言健康繪本《我的情緒小怪獸》有聲繪本課件
- 2025年供電所所長個(gè)人工作總結(jié)(2篇)
- 2025四川廣安發(fā)展建設(shè)集團(tuán)限公司第一批招聘6人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年語言文字工作計(jì)劃
- 《國防動(dòng)員準(zhǔn)備》課件
- 《(近)零碳園區(qū)評(píng)價(jià)技術(shù)規(guī)范》
- 微信、抖音、快手等社交平臺(tái)管理制度
- 保安反恐防暴培訓(xùn)
- 檔案管理培訓(xùn)
評(píng)論
0/150
提交評(píng)論