版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、編譯原理實驗報告實驗名稱消除文法的左遞歸實驗時間院系 班級 學號 姓名叮叮小文庫1. 試驗?zāi)康恼莆蘸屠斫庀筮f歸(包括直接左遞歸和間接左遞歸)在構(gòu)建LL(1)文法的作用和目的掌握消除左遞歸(包括直接左遞歸和間接左遞歸)的方法和步驟。寫出對于輸入任意的上下文無關(guān)文法可以輸出消除了左遞歸的等價文法。2. 實驗原理直接左遞歸的消除消除產(chǎn)生式中的直接左遞歸是比較容易的。例如假設(shè)非終結(jié)符P的規(guī)則為P Pa/ B其中,B是不以P開頭的符號串。那么,我們可以把 P的規(guī)則改寫為如下的非直接左遞歸形式:P尸P P 考慮更一般的情況,假定關(guān)于非終結(jié)符 P的規(guī)則為P P a / P o2 / / P an / 3
2、1 / 32 / / pm其中,a (I = 1, 2,,n)都不為而每個pj (j = 1, 2,,m) 都不以P開頭,將上述規(guī)則改寫為如下形式即可消除 P的直接左遞歸:P pl P/ 32 P/pm PP 01P / a P/ an P/間接左遞歸的消除直接左遞歸見諸于表面,利用以上的方法可以很容易將其消除, 即把直接左遞歸改寫成直接右遞歸。然而文法表面上不存在左遞歸并 不意味著該文法就不存在左遞歸了。有些文法雖然表面上不存在左遞 歸,但卻隱藏著左遞歸。消除間接左遞歸的方法是,把間接左遞歸文法改寫為直接左遞歸文法,然后用消除直接左遞歸的方法改寫文法。消除左遞歸算法:把文法G的所有非終結(jié)符按
3、任一順序排列,例如,A1 , A2,,An。for(i = 1;iv=n;i+)for(j = 1;j=i -1; j+) 把形如Ai f Aj 丫的產(chǎn)生式改寫成 Ai f 81 y/ 2 丫/ ck 丫其中Aj f 81 / 32 /8是關(guān)于的Aj全部規(guī)則;消除Ai規(guī)則中的直接左遞歸;化簡由(2)所得到的文法,即去掉多余的規(guī)則。3.實驗內(nèi)容利用消除左遞歸算法上機了實現(xiàn)對于輸入任意的上下文無關(guān)文法可以輸出消除了左遞歸的等價文法。4.實驗心得通過本次試驗更加清晰的理解了消除左遞歸在構(gòu)建LL(1)文法的重要作用,以及如何的消除文法中的左遞歸。在本次試驗中原本想用Pf Pal |Pa2 |Pa |B
4、1 |超|師這種相同左部的產(chǎn)生式右部用或連所以只有分開書接起來形式來消除左遞歸但是在實現(xiàn)上不是很容易, 寫利用消除左遞歸的算法來實現(xiàn).5.實驗代碼與結(jié)果源代碼(C)#in clude#in cludestruct Node/定義產(chǎn)生式結(jié)構(gòu)char left20;產(chǎn)生式左部char right50;產(chǎn)生式右部int flags;P30;int count=O;產(chǎn)生式數(shù)量void creat()int i;printf(輸入產(chǎn)生式數(shù)量:”);scan f(%d,&count);for(i=0;ico un t;i+)flushall();printf(輸入第%d條產(chǎn)生式的左部:,i+1);gets
5、(Pi.left);flushall();prin tf(n ”);printf(輸入第%d條產(chǎn)生式的右部:,i+1);gets(Pi.right);flushall();prin tf(n ”);Pi.flags=0;printf( *n);printf(你輸入的產(chǎn)生式是:n);for(i=0;i%sn,Pi.left,Pi.right);void Replace(char *ch1,char ch220)int i;char ch320; strcpy(ch3,ch2);for(i=0;i(i nt)strle n( ch3);i+)ch3i=ch3i+1; strcat(ch1,ch3)
6、;void Sort(char *ch1,char ch22)int i;for(i=0;i(i nt)strle n(ch1);i+) ch1i=ch1i+1;strcat(ch1,ch2);void Analysis()/消除間接左遞歸int i,j,flags=0;char ch50;int num=co unt;for(i=0;i nu m;i+)flags=0;for(j=0;ji;j+)if(Pi.rightO=PjeftO)strcpy(ch,Pj.right); strcpy(Pcou nt.left,Pi.left); Replace(ch,Pi.right); strcpy
7、(Pco un t.right,ch); Pcou nt.flags=0;flags=1;coun t+; if(flags=1)Pi.flags=1;void Analysis1()消除直接左遞歸int i,j;char ch50;char chx2;int num=co unt;int flagsl;strcpy(chx,*1);for(i=0;inum;i+)消除直接左遞歸flags 1=0;if(Pi.flags=0)if(Pi.left0=Pi.right0)flags1=1;if(flags1=1)chxO=Pi.leftO;strcpy(Pco unt.l eft,chx);st
8、rcpy(ch,Pi.right);Sort(ch,chx);strcpy(Pco un t.right,ch);Pcou nt.flags=0;Pi.flags=1;coun t+;for(j=0;j nu m;j+)if(j!=i&Pj.leftO!=Pj.rightO&Pj.flags=0&Pj.leftO=Pi.leftO)Pcou nt.leftO=Pi.leftO;strcpy(Pco un t.right,strcat(Pj.right,chx);Pcou nt.flags=0;Pj.flags=1;coun t+;strcpy(Pco unt.l eft,chx);strcpy(Pcount.right,e );Pcou nt.flags=0;coun t+;voi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度扶貧資金管理及使用專項合同3篇
- 2025年度智能廣告創(chuàng)意制作與推廣服務(wù)合同4篇
- 2024鋪位出租合同-親子樂園鋪位租賃管理協(xié)議3篇
- 2025年度石材加工與大理石施工一體化工程合同4篇
- 2025年度土地整治與修復(fù)項目租賃合同4篇
- 2025年度智能生產(chǎn)線承包運營服務(wù)合同4篇
- 2024版貨車租賃合規(guī)性及責任明確合同版B版
- 2025年度水電安裝工程智能化施工技術(shù)與保修服務(wù)合同3篇
- 2025年度智能物流配套廠房建設(shè)合同范本4篇
- 2025年度智能家居瓷磚批發(fā)代理銷售合同3篇
- 使用錯誤評估報告(可用性工程)模版
- 公司章程(二個股東模板)
- GB/T 19889.7-2005聲學建筑和建筑構(gòu)件隔聲測量第7部分:樓板撞擊聲隔聲的現(xiàn)場測量
- 世界奧林匹克數(shù)學競賽6年級試題
- 藥用植物學-課件
- 文化差異與跨文化交際課件(完整版)
- 國貨彩瞳美妝化消費趨勢洞察報告
- 云南省就業(yè)創(chuàng)業(yè)失業(yè)登記申請表
- UL_標準(1026)家用電器中文版本
- 國網(wǎng)三個項目部標準化手冊(課堂PPT)
- 快速了解陌生行業(yè)的方法論及示例PPT課件
評論
0/150
提交評論