


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 編譯原理 實(shí)驗(yàn)名稱 實(shí)驗(yàn)二 LL(1) 分析法實(shí)驗(yàn)?zāi)康? 掌握 LL(1) 分析法的基本原理;2 掌握 LL(1) 分析表的構(gòu)造方法;3 掌握 LL(1) 驅(qū)動(dòng)程序的構(gòu)造方法。一. 實(shí)驗(yàn)內(nèi)容及要求根據(jù)某一文法編制調(diào)試 LL( 1)分析程序,以便對(duì)任意輸入的符號(hào)串進(jìn)行分析。本次實(shí) 驗(yàn)的目的主要是加深對(duì)預(yù)測(cè)分析LL( 1)分析法的理解。對(duì)下列文法,用 LL( 1)分析法對(duì)任意輸入的符號(hào)串進(jìn)行分析:( 1) E-TG( 2) G-+TG( 3) G- (4)T-FS( 5) S-*FS( 6)S- (7)F-(E)(8)F-i 程序輸入一以 #結(jié)束的符號(hào)串 (包括+* () i#) ,如:
2、i+i*i# 。輸出過(guò)程如下: 步驟 分析棧 剩余輸入串 所用產(chǎn)生式1 E i+i*i# E-TG. 實(shí)驗(yàn)過(guò)程及結(jié)果代碼如下:#include#include using namespace std;edge:edge()cinleftright; rlen=();if(left)()NODE+=left;string edge:getlf()return left;string edge:getrg()return right;string edge:getfirst()return first;string edge:getfollow()return follow;string edge
3、:getselect()return select;string edge:getro()string str;str+=right0;return str;int edge:getrlen()return ();void edge:newfirst(string w)int i;for(i=0;i() first+=wi;void edge:newfollow(string w)int i;for(i=0;i()&wi!=) follow+=wi;void edge:newselect(string w)int i;for(i=0;i()&wi!=) select+=wi;void edge
4、:delfirst()int i=();(i,1);int SUM;string NODE,ENODE;etlf()if(nj.getro()() for(i=0;iSUM;i+) if(ni.getlf()=nj.getro() first(ni,n,x);else nx.newfirst(nj.getro();etlf().find()i)=0)if()i+1)()for(k=0;kSUM;k+) if(nk.getlf().find()i+1)=0) nj.newfollow(nk.getfirst();etlf()0)etlf()0)if(nk.getfirst().find()nj.
5、getfirst().length()return;x=nj.getselect().find(ENODEk); if(x-1) coutnj.getrg(); ycik=nj.getrg(); outfu(9-nj.getrlen(), ); flag=0;x=nj.getselect().find(#);if(k=()-1&x-1) coutnj.getrg(); ycij=nj.getrg();if(flag&ENODEk!=)outfu(11, );coutendl;ength()coutNODEi-1;k-) if(ycijk!=) fenxi+=ycijk;if(pipei(chu
6、an,fenxi,yc,b) return 1;elsereturn 0;elsereturn 0;void main()edge *n;string str,(*yc)50;int i,j,k;bool flag=0;cout 請(qǐng)輸入上下文無(wú)關(guān)文法的總規(guī)則數(shù): SUM;cout 請(qǐng)輸入具體規(guī)則(格式:左部右部, 為空): endl;n=new edgeSUM;for(i=0;iSUM;i+) for(j=0;j()&(strj)() ENODE+=strj; etfirst().find()ni.getfirst().length()if(ni.getro()()for(k=1;kni.ge
7、trlen();k+)if(ni.getrg()k)() for(j=0;jnj.getfirst().length() ni.delfirst(); break;etlf()=n0.getlf() ni.newfollow(#); follow(ni,n,i);for(i=0;iSUM;i+) for(j=0;jSUM;j+) if(nj.getrg().find(ni.getlf()=nj.getrlen()-1) ni.newfollow(nj.getfollow();etlf()0=NODEi)if(!() str=nj.getselect(); else for(k=0;knj.ge
8、tselect().length();k+) if(nj.getselect()k)()flag=1;break;etlf()0)outfu(3, ); coutNODEi; outfu(SUM+4, ); out(nj.getfirst();outfu(SUM+4-2*nj.getfirst().length(), ); out(nj.getfollow();coutendl;break; outfu(5+SUM,-*-); coutendl 判定結(jié)論: ;if(flag)cout 該文法不是 LL(1) 文法 !endl; return;elsecout 該文法是 LL(1) 文法 !en
9、dl;/ 輸出預(yù)測(cè)分析表 coutendl 預(yù)測(cè)分析表如下: endl; yc=new string()50;outgraph(n,yc);string chuan,fenxi,fchuan; coutendlchuan; fchuan=chuan;fenxi=#; fenxi+=NODE0;i=0;coutendl 預(yù)測(cè)分析過(guò)程如下: endl; cout 步驟 ;outfu(7, );cout 分析棧 ;outfu(10, );cout 剩余輸入串 ;outfu(8, );cout 推導(dǎo)所用產(chǎn)生式或匹配 ; if(pipei(chuan,fenxi,yc,i)coutendl 輸入串 fchuan 是該
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年注冊(cè)建筑師考試建筑設(shè)計(jì)知識(shí)歷年真題解析與案例分析試卷
- 2025年考研數(shù)學(xué)(二)高等數(shù)學(xué)應(yīng)用題實(shí)戰(zhàn)強(qiáng)化模擬試卷
- 2025年學(xué)分制管理新規(guī)定:如何應(yīng)對(duì)學(xué)分制下的教學(xué)挑戰(zhàn)
- 2025年中考語(yǔ)文文言文閱讀(議論類)專項(xiàng)訓(xùn)練卷-文言文閱讀理解與解題
- 處分條例培訓(xùn)綱要
- 2025年日語(yǔ)能力考N閱讀真題易錯(cuò)題型解析(2015-2024附長(zhǎng)難句)
- 肺部腫瘤保養(yǎng)方案
- C++程序設(shè)計(jì)基本概念試題及答案
- 安徽省合肥市廬江縣2019-2020學(xué)年高一下學(xué)期期末考試試題(生物)
- 護(hù)理美學(xué)環(huán)境美構(gòu)建要點(diǎn)
- 賽格電纜產(chǎn)品手冊(cè)2017起草稿
- 鐵塔采購(gòu)評(píng)審專家培訓(xùn)測(cè)試試題附答案
- 義務(wù)教育生物課程標(biāo)準(zhǔn)(2022版)測(cè)試題及答案
- (公共政策導(dǎo)論講稿)課件
- 【教學(xué)課件】第六章 熟悉而陌生的力 第一節(jié) 力 精品課件
- 國(guó)家開(kāi)放大學(xué)(電大)《現(xiàn)代企業(yè)管理》形考、終考及答案
- 電力拖動(dòng)自動(dòng)控制系統(tǒng)-運(yùn)動(dòng)控制系統(tǒng)期末試卷附答案共6套
- 你好,無(wú)廢校園主題班會(huì)
- DB21 3176-2019 農(nóng)村生活污水處理設(shè)施水污染物排放標(biāo)準(zhǔn)
- (完整版)英語(yǔ)寫作期末試題和答案解析
- 廣西建設(shè)工程造價(jià)咨詢服務(wù)行業(yè)收費(fèi)參考標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論