




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí) 驗(yàn) 報(bào) 告姓名:孫巖學(xué)號(hào):班級(jí):惠普開發(fā)142學(xué)校:青島科技大學(xué)Mail: 電話:教師:宮生文實(shí)驗(yàn)報(bào)告:實(shí)驗(yàn)名稱:LL(1)語(yǔ)法分析實(shí)驗(yàn)?zāi)康暮鸵缶幹埔粋€(gè)能識(shí)別由詞法分析給出的單詞符號(hào)序列是否是給定文法的正確句子(程序),輸出對(duì)輸入符號(hào)串的分析過(guò)程。實(shí)驗(yàn)內(nèi)容和步驟:一、實(shí)驗(yàn)內(nèi)容對(duì)于這個(gè)實(shí)驗(yàn),總共用了三個(gè)函數(shù),即主函數(shù)、輸出分析棧函數(shù)、輸出剩余串函數(shù)。在主函數(shù)中,還要構(gòu)造預(yù)測(cè)分析表。二、實(shí)驗(yàn)步驟1、基于實(shí)驗(yàn)的內(nèi)容,構(gòu)造程序所需的模塊2、根據(jù)已建構(gòu)的模塊,寫出各個(gè)模塊的相應(yīng)程序代碼3、在主函數(shù)中調(diào)用模塊來(lái)完成所要得到的效果在本程序中,首先使用了結(jié)構(gòu)體類型定義來(lái)定義產(chǎn)生
2、式,用字符串?dāng)?shù)組存放分析棧、剩余串、終結(jié)符和非終結(jié)符,用二維數(shù)組存放預(yù)測(cè)分析表,利用指針對(duì)棧中數(shù)據(jù)進(jìn)行讀取。在本程序中,總共用了三個(gè)函數(shù),即主函數(shù)、輸出分析棧函數(shù)、輸出剩余串函數(shù)。在主函數(shù)中,還要構(gòu)造預(yù)測(cè)分析表,對(duì)輸入的字符串進(jìn)行分析,調(diào)用另外兩個(gè)函數(shù)。實(shí)驗(yàn)代碼如下:#include#include#include#includechar A20;/*分析棧*/char B20;/*剩余串*/char v120=i,+,*,(,),#;/*終結(jié)符 */char v220=E,G,T,S,F;/*非終結(jié)符 */int j=0,b=0,top=0,l;/*L為輸入串長(zhǎng)度 */typedef str
3、uct type/*產(chǎn)生式類型定義 */char origin;/*大寫字符 */char array5;/*產(chǎn)生式右邊字符 */int length;/*字符個(gè)數(shù) */type;type e,t,g,g1,s,s1,f,f1;/*結(jié)構(gòu)體變量 */type C1010;/*預(yù)測(cè)分析表 */void print()/*輸出分析棧 */int a;/*指針*/for(a=0;a=top+1;a+)printf(%c,Aa);printf(tt);/*print*/void print1()/*輸出剩余串*/int j;for(j=0;jb;j+)/*輸出對(duì)齊符*/printf( );for(j=b
4、;j=l;j+)printf(%c,Bj);printf(ttt);/*print1*/void main()int m,n,k=0,flag=0,finish=0;char ch,x;type cha;/*用來(lái)接受Cmn*/*把文法產(chǎn)生式賦值結(jié)構(gòu)體*/e.origin=E;strcpy(e.array,TG);e.length=2;t.origin=T;strcpy(t.array,FS);t.length=2;g.origin=G;strcpy(g.array,+TG);g.length=3;g1.origin=G;g1.array0=;g1.length=1; s.origin=S;st
5、rcpy(s.array,*FS);s.length=3;s1.origin=S;s1.array0=;s1.length=1;f.origin=F;strcpy(f.array,(E);f.length=3;f1.origin=F;f1.array0=i;f1.length=1;for(m=0;m=4;m+)/*初始化分析表*/for(n=0;n=5;n+)Cmn.origin=N;/*全部賦為空*/ /*填充分析表*/ C00=e;C03=e; C11=g;C14=g1;C15=g1; C20=t;C23=t; C31=s1;C32=s;C34=C35=s1; C40=f1;C43=f;
6、printf(提示:本程序只能對(duì)由i,+,*,(,)構(gòu)成的以#結(jié)束的字符串進(jìn)行分析,n); printf(請(qǐng)輸入要分析的字符串:); do/*讀入分析串*/ scanf(%c,&ch); if (ch!=i) &(ch!=+) &(ch!=*)&(ch!=()&(ch!=)&(ch!=#) printf(輸入串中有非法字符n); exit(1); Bj=ch; j+; while(ch!=#); l=j;/*分析串長(zhǎng)度*/ ch=B0;/*當(dāng)前分析字符*/ Atop=#; A+top=E;/*#,E進(jìn)棧*/ printf(步驟tt分析棧 tt剩余字符 tt所用產(chǎn)生式 n); do x=Atop
7、-;/*x為當(dāng)前棧頂字符*/ printf(%d,k+); printf(tt); for(j=0;j=5;j+)/*判斷是否為終結(jié)符*/ if(x=v1j) flag=1; break; if(flag=1)/*如果是終結(jié)符*/ if(x=#) finish=1;/*結(jié)束標(biāo)記*/ printf(acc!n);/*接受 */ getchar(); getchar(); exit(1); /*if*/ if(x=ch) print(); print1(); printf(%c匹配n,ch); ch=B+b;/*下一個(gè)輸入字符*/ flag=0;/*恢復(fù)標(biāo)記*/ /*if*/ else/*出錯(cuò)處理
8、*/ print(); print1(); printf(%c出錯(cuò)n,ch);/*輸出出錯(cuò)終結(jié)符*/ exit(1); /*else*/ /*if*/ else/*非終結(jié)符處理*/ for(j=0;j=4;j+)if(x=v2j)m=j;/*行號(hào)*/break; for(j=0;j=5;j+)if(ch=v1j)n=j;/*列號(hào)*/break; cha=Cmn; if(cha.origin!=N)/*判斷是否為空*/ print();print1();printf(%c-,cha.origin);/*輸出產(chǎn)生式*/for(j=0;j=0;j-)/*產(chǎn)生式逆序入棧*/A+top=cha.arrayj;if(Atop=)/*為空則不進(jìn)棧*/top-;/*if*/else/*出錯(cuò)處理*/print();print1();printf(%c出錯(cuò)n,x);/*輸出出錯(cuò)非終結(jié)符*/exit(1);/*else*/*else*/ while(finish=0);/*main*/三、實(shí)驗(yàn)過(guò)程記錄:實(shí)驗(yàn)截圖:當(dāng)輸入內(nèi)容不匹配或輸入內(nèi)容非法時(shí)要退出程序,此時(shí)若不關(guān)閉已經(jīng)打開的文件可能導(dǎo)致文件內(nèi)容受到破壞;解決方法是給error()函數(shù)設(shè)置一個(gè)文件指針變量參數(shù)FILE* fp,在退出程序之前通過(guò)fp關(guān)閉文件四、實(shí)驗(yàn)總結(jié):通過(guò)本次實(shí)驗(yàn)我鍛煉了自己的上機(jī)操作能力及
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年遠(yuǎn)程醫(yī)療服務(wù)在分級(jí)診療中的信息化建設(shè)與挑戰(zhàn)報(bào)告
- 動(dòng)漫產(chǎn)業(yè)鏈協(xié)同創(chuàng)新模式研究報(bào)告2025:產(chǎn)業(yè)融合趨勢(shì)
- 江蘇省泗洪縣聯(lián)考2025年七年級(jí)英語(yǔ)第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含答案
- 2025年醫(yī)院信息化建設(shè)中的患者隱私保護(hù)初步設(shè)計(jì)評(píng)估報(bào)告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)網(wǎng)絡(luò)安全態(tài)勢(shì)感知技術(shù)安全人才培養(yǎng)與職業(yè)規(guī)劃報(bào)告001
- 新一代大學(xué)英語(yǔ)(第二版)綜合教程1-U2-教師用書 Unit 2 The Magic of Wrds
- 文化創(chuàng)意產(chǎn)業(yè)園區(qū)文化創(chuàng)意產(chǎn)業(yè)園區(qū)產(chǎn)業(yè)創(chuàng)新研究報(bào)告
- 2025年醫(yī)藥市場(chǎng)前景預(yù)測(cè):仿制藥一致性評(píng)價(jià)下的產(chǎn)業(yè)機(jī)遇研究報(bào)告
- 金融行業(yè)數(shù)據(jù)治理與資產(chǎn)化在金融行業(yè)數(shù)據(jù)治理體系建設(shè)中的應(yīng)用報(bào)告001
- 安全注射試試題及答案
- 1-會(huì)計(jì)信息系統(tǒng)(閉卷)國(guó)開機(jī)考答案
- 酒店用火用電安全管理制度
- 模具機(jī)加工管理制度
- 中醫(yī)養(yǎng)生保健與康復(fù)護(hù)理
- 區(qū)畜牧局十五五總結(jié)及十五五規(guī)劃
- DB31/T 1096-2018醫(yī)院日間手術(shù)管理規(guī)范
- DB32-T 5119-2025 鋰離子電池工廠生產(chǎn)安全技術(shù)規(guī)范
- 中醫(yī)診所掛證醫(yī)生合同6篇
- GB/T 14486-2008塑料模塑件尺寸公差
- 《建設(shè)項(xiàng)目前期工作咨詢收費(fèi)暫行規(guī)定》計(jì)價(jià)格【1999】1283號(hào)
- 15軟件安裝詳細(xì)圖文教程包成功破解
評(píng)論
0/150
提交評(píng)論