



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——安徽工業(yè)大學(xué)編譯原理試驗報告
編譯原理試驗報告
姓名:葉玉虎班級:計122班指導(dǎo)老師:王森玉試驗日期:2023/5/11
試驗內(nèi)容:
1.求出每個非終結(jié)符的FIRST集合2.求出每個產(chǎn)生式右部的FIRST集合3.求出每個非終結(jié)符的Follow集合試驗環(huán)境:
VisualStudio2023試驗?zāi)康?
讓同學(xué)們把握FIRST集合和FOLLOW集合的求法
試驗代碼:
#include#include#defineMAX50
charcss[MAX][MAX];//保存所有的產(chǎn)生式intcount=0;intcnt=0;
structL{//保存所有的終結(jié)符charch;
intflag;//1:能推出ε,0:不能,初值:-1intnum;
charfirst[MAX];ints;//first的長度charfollow[MAX];intl;//follow的長度}l[MAX];
//對輸入的格式進行控制,并校驗輸入是否符合格式inthandle(chara[]){
intlen,i=0,j,k;
len=strlen(a);
while(a[i]!=10){if(a[i]=='$')return2;
if((''==a[i])||(9==a[i])){i++;continue;}
if((a[i]>='A')}else{j=i;k=0;while((a[j]!='')count++;if((a[j+1]=='')||(a[j]==9)||(a[j]=='$')||(a[j]==10)){printf(\產(chǎn)生式格式錯誤\\n\return0;}css[count][0]=a[i];css[count][1]=a[i+1];css[count][2]=a[i+2];k=3;j++;continue;}css[count][k]=a[j];k++;j++;}css[count][k]='\\0';i=j;count++;}
}else{printf(\產(chǎn)生式格式錯誤\\n\return-1;}}
return0;}
//從鍵盤獲得輸入intinput(){
chara[MAX*MAX];intv;
printf(\輸入產(chǎn)生式,產(chǎn)生式之間以空格回車或Tab鍵分隔,并以$鍵終止.\\n\printf(\用@表示虛擬符號ε,終結(jié)符用大寫字母表示,其他字符表示非終結(jié)符\\n\
while(1){fgets(a,MAX*MAX,stdin);v=handle(a);if(v==-1)return-1;if(v==2)return0;}}
//求出能推出ε的非終結(jié)符voidseekEmpty(){
inti,j,k,t;
intflag=0,flag2=0;intlen,c;
chara[MAX][MAX],ch;for(i=0;i
{/*將該非終結(jié)符的FIRST集合除去ε并入到當(dāng)前非終結(jié)符的FIRST集合中*/for(k=0;k'Z')){r[i].first[r[i].s]=r[i].a[j];r[i].s++;r[i].first[r[i].s]='\\0';break;}else{for(k=0;k='A')}}if(j!=len){strcpy(a[c],css[i]);c++;}}
l[0].follow[l[0].l]='#';l[0].l++;
l[0].follow[l[0].l]='\\0';
while(1){
fchange=0;for(i=0;i='A')k//將該產(chǎn)生式左部非終結(jié)符的Follow集合//參與到當(dāng)前非終結(jié)符的Follow集合中.
//然后從當(dāng)前終結(jié)符開始向右判斷是否為非終結(jié)符,是的話,進行相應(yīng)處理//循環(huán)直到當(dāng)前非終結(jié)符推不出ε或當(dāng)前為終結(jié)符時退出if(j==len-1){t3=j;strcpy(ch,a[i]);while(!flag){if((ch[t3]>='A')k='A')kMH|aH->LSo|@K->dML|@L->eHfM->K|bLM
測試數(shù)據(jù)2:S->aHH->aMd|dM->Ab|@A->aM|e
試驗感想:
經(jīng)過這幾次的試驗,不僅讓我們更加深刻的知道了first集合和follow集合的計算步驟和方法,還很好的培養(yǎng)了我們動手能力。雖然這兩個集合用筆算的方法很簡單,但是要讓計算機來演算就不是那么簡單了,這需要設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)和算法才能正確地求出結(jié)果。當(dāng)然在設(shè)計算法的時候難免會出現(xiàn)錯誤,這就需要我們這些程序員們細(xì)心
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股份制企業(yè)合同文書撰寫要點
- 科技創(chuàng)新園區(qū)建設(shè)投資合同
- 物聯(lián)網(wǎng)項目戰(zhàn)略合作協(xié)議
- 商業(yè)價格保密協(xié)議
- 醫(yī)院與社區(qū)健康服務(wù)合作協(xié)議書
- 農(nóng)業(yè)產(chǎn)業(yè)集群發(fā)展運營方案
- 委托中介出售房屋協(xié)議
- 綠化場地租賃合同
- 媒體廣告代理協(xié)議書
- 高端消費品設(shè)計合作協(xié)議
- 綠化養(yǎng)護工安全培訓(xùn)
- 婦產(chǎn)科課件-早產(chǎn)臨床防治指南(2024)解讀
- DB21-T 1720-2017海水源熱泵系統(tǒng)工程技術(shù)規(guī)程
- 組長競選課件教學(xué)課件
- 《基于UTAUT2模型的虛擬學(xué)術(shù)社區(qū)用戶持續(xù)使用意愿影響因素研究》
- 2022年公務(wù)員多省聯(lián)考《申論》真題(遼寧A卷)及答案解析
- 消防設(shè)施操作員(初級)題庫與參考答案
- 北師大版四年級下冊數(shù)學(xué)第一單元測試卷帶答案
- 2024年山東省德州市中考道德與法治試題卷(含答案解析)
- (完整版)英語四級詞匯表
- 潮流嘻哈文化時尚活動策劃演示模板
評論
0/150
提交評論