版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精品好資料學習推薦實驗報告學號專業(yè)計算機班級姓名課程名稱編譯原理課程類型必修課實驗名稱實驗一、文法存儲及輸出實驗目的: 1.掌握文法在計算機內(nèi)的存儲表示;2.輸入任意的上下文無關文法;3.以四元組的形式輸出Chomsky 文實驗內(nèi)容:敘述本次實驗的實現(xiàn)方法、分析、實現(xiàn)了哪些功能、給出一個或多個測試用例及其預期運行結果,要求能夠反映本次實驗的成果。1.本次實驗的實現(xiàn)方法為:采用數(shù)組的形式實現(xiàn)文法在機內(nèi)的存儲表示。2.本次試驗的問題分析為:一是文法的輸入形式;二是文法在計算機內(nèi)的存儲表示形式。3.本次試驗應實現(xiàn)以下功能:輸入一個文法的識別符號與重寫規(guī)則,輸出文法的四要素VN,VT,P,Z。4.測試
2、實例:實例:輸入文法GE:E:=E+T|TT:=T*F|FF:=(E)|i實驗代碼如下:#include char GName10; typedef char SymbolT; SymbolT StartSymbol; typedef struct SymbolT LeftSym; SymbolT Rightpart20; int RightLength; RuleTC; RuleTC GrammarC20; SymbolTVT20; SymbolT VN20; int NVN=0,NVT=0; typedef struct int LeftSymNum; int RightpartNum20
3、; int RightLength; RuleT; RuleT Grammar20; int RuleN; char StartSym; char Input 20= E:=E+T|T, T:=T*F|F, F:=(E)|i, 0 ; int LineNumofG=3; void GetGrammar() char LeftS,Sym; int k,j,m; StartSym=GrammarC1.LeftSym; for(k=1; k=RuleN; k+) LeftS=GrammarCk.LeftSym; for(j=1; j=NVN; j+) if(LeftS=VNj) Grammark.L
4、eftSymNum=j+100; break; for(j=1; j=GrammarCk.RightLength; j+) Sym=GrammarCk.Rightpartj; for(m=1; m=NVN; m+)if(Sym=VNm) Grammark.RightpartNumj=m+100;break; if(m=NVN) continue; for(m=1; m=NVT; m+) if(Sym=VTm) Grammark.RightpartNumj=m; break; Grammark.RightLength=GrammarCk.RightLength; void storeG( ) i
5、nt row,colum, k,j,m; char sym,U; RuleN=0; row=0; NVN=NVT=0; while(rowLineNumofG) colum=0; sym=Inputrowcolum; for(k=1; kNVN) VN+NVN=sym; GrammarC+RuleN.LeftSym=sym; colum=colum+4; j=0; while(Inputrowcolum!=0) sym=Inputrowcolum+; if(sym=|) GrammarCRuleN.RightLength=j;U=GrammarCRuleN.LeftSym; RuleN=Rul
6、eN+1; GrammarCRuleN.LeftSym=U; j=0; continue; j=j+1; GrammarCRuleN.Rightpartj=sym; for(k=1;kNVT)VT+NVT=sym; GrammarCRuleN.RightLength=j; row=row+1; for( m=1; m=NVT; m+) for(k=1; k=NVN; k+) if(VTm=VNk) VTm= ; break; for(m=1;m=NVT; m+) if(VTm= ) for(j=m+1; j=NVT; j+) VTj-1=VTj; NVT=NVT-1; if(VTm= ) m=
7、m-1; continue; GetGrammar( ); DispG( ) int k,j,m; printf(n 文法的識別符號 Z 為:%cn, StartSym); printf(重寫規(guī)則集 P 為:n); for(k=1; k=RuleN; k+) printf(%8c%c:=, , VNGrammark.LeftSymNum-100); for(j=1; j=Grammark.RightLength; j+) m=Grammark.RightpartNumj; if(m100) printf(%c,VTm); else printf(%c,VNm-100); printf(n);
8、printf(文法的非終結符號集為:VN= ); for(k=1; k=NVN-1; k+) printf(%c, VNk); printf(,); printf(%c n,VNNVN); printf(文法的終結符號集為:VT= ); for(k=1; k=NVT-1; k+) printf(%c, VTk); printf(,); printf(%c n,VTNVT); void main( ) char c=Y; int j; printf(n 文法重寫規(guī)則:n); for(j=0; jLineNumofG; j+) printf(%sn,Inputj); printf(重新輸入文法的重
9、寫規(guī)則?(Y/N): ); scanf(%c,&c); if(c=Y | c=y) printf(輸入行數(shù)(一個規(guī)則一行):); scanf(%d,&LineNumofG); for(j=0; jLineNumofG; j+) scanf(%s,Inputj); storeG( ); DispG( ); 實驗結果:實例一:輸入文法GE:E:=E+T|TT:=T*F|FF:=(E)|i實例二:輸入文法G2Z:Z:=aZb|ab Z:=CSd S:=CSd|Cd實例三:輸入文法G3E:E:=T|E+T|E-TT:=F|T*F|T/F F:=(E)|i實例四:輸入文法:G4Z:Z:=Ab|c A:=Aab|a b:=cbD|d d:=bDd|D實驗總結
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024各類設備采購協(xié)議總覽
- 2024年新公司聘用勞動協(xié)議樣式
- 2024年場地調(diào)查委托協(xié)議模板
- 2024屆安徽江南十校高三數(shù)學試題畢業(yè)班4月質(zhì)量檢查試題
- 2024年勞務合作及就業(yè)保障協(xié)議
- 化信息技術硬件采購協(xié)議范本
- 2024年智能設備部署與維護協(xié)議
- 2024年蔬菜產(chǎn)業(yè)鏈戰(zhàn)略合作協(xié)議
- DB11∕T 1603-2018 睡蓮栽培技術規(guī)程
- 2024專業(yè)新風系統(tǒng)安裝服務協(xié)議模板
- 攤位入股合同范本
- 2024年人教版八年級地理上冊全冊基礎知識點復習提綱
- 續(xù)保贈送活動方案
- 安全隱患排查檢討反思
- Advanced Operations Research智慧樹知到答案2024年上海大學
- 音樂鑒賞(西安交通大學)智慧樹知到期末考試答案2024年
- 主題班會-期中考試動員
- MOOC 數(shù)據(jù)挖掘與python實踐-中央財經(jīng)大學 中國大學慕課答案
- (2024)輔警招聘公安基礎知識考試題庫及答案
- 夸美紐斯完整版本
- 社會主義發(fā)展史智慧樹知到期末考試答案2024年
評論
0/150
提交評論