版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
編譯原理實(shí)驗(yàn)報(bào)告姓名:***班級(jí):***學(xué)號(hào):***指導(dǎo)老師:***實(shí)驗(yàn)一編譯程序的分析與驗(yàn)證實(shí)驗(yàn)?zāi)康模菏炀氄莆誏R分析表以及編譯原理的基本過程,學(xué)會(huì)分析編譯程序。二、實(shí)驗(yàn)要求: 理論聯(lián)系實(shí)際,將所學(xué)知識(shí)用到實(shí)處。上機(jī)實(shí)驗(yàn),驗(yàn)證老師給的代碼的正確性,進(jìn)而學(xué)會(huì)怎么寫編譯程序。三、實(shí)驗(yàn)內(nèi)容:驗(yàn)證自己的文法的正確性,識(shí)別文法中的單詞、句子、關(guān)鍵字、變量,等等。驗(yàn)證下述程序輸出結(jié)果的正確性:while(a>b)dobeginifm>=nthena:=a+1elsewhilek=hdox:=x+2;m:=n+x*(m+y)end#~程序部分代碼:#include"stdio.h"#include"string.h"#defineACC-2/**************************************/#definesy_if0#definesy_then1#definesy_else2#definesy_while3#definesy_begin4#definesy_do5#definesy_end6#definea7#definesemicolon8#definee9#definejinghao10#defineS11#defineL12#definetempsy15#defineEA18#defineE019#defineplus34#definesub 35#definetimes36#definediv 37#definebecomes38#defineop_and39#defineop_or40#defineop_not41#definerop42#definelparent48#definerparent49#defineident56#defineintconst57/********************算術(shù)表達(dá)式的LR分析表********************/staticintaction1[14][9]={{-1,-1,-1,-1,2,-1,3,-1,1},{4,5,6,7,-1,-1,-1,ACC,-1},{-1,-1,-1,-1,2,-1,3,-1,8},{106,106,106,106,-1,106,-1,106,-1},{-1,-1,-1,-1,2,-1,3,-1,9},{-1,-1,-1,-1,2,-1,3,-1,10},{-1,-1,-1,-1,2,-1,3,-1,11}, {-1,-1,-1,-1,2,-1,3,-1,12},{4,5,6,7,-1,13,-1,-1,-1},{101,101,101,101,-1,101,-1,101,-1},{102,102,102,102,-1,102,-1,102,-1}, {103,103,103,103,-1,103,-1,103,-1}, {104,104,104,104,-1,104,-1,104,-1}, {105,105,105,105,105,105,105,105,-1},};/********************布爾表達(dá)式的LR分析表*********************/staticintaction2[16][11]={{1,-1,4,-1,5,-1,-1,-1,13,7,8},{-1,2,-1,101,-1,101,101,101,-1,-1,-1},{3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,102,-1,102,102,102,-1,-1,-1},{1,-1,4,-1,5,-1,-1,-1,11,7,8},{1,-1,4,-1,5,-1,-1,-1,6,7,8},{-1,-1,-1,104,-1,9,10,104,-1,-1,-1},{1,-1,4,-1,5,-1,-1,-1,14,7,8},{1,-1,4,-1,5,-1,-1,-1,15,7,8},{105,-1,105,-1,105,-1,-1,-1,-1,-1,-1},{107,-1,107,-1,107,-1,-1,-1,-1,-1,-1},{-1,-1,-1,12,-1,9,10,-1,-1,-1,-1},{-1,-1,-1,103,-1,103,103,103,-1,-1,-1},{-1,-1,-1,-1,-1,9,10,ACC,-1,-1,-1},{-1,-1,-1,106,-1,9,10,106,-1,-1,-1},{-1,-1,-1,108,-1,9,10,108,-1,-1,-1}};/********************從文件讀一行到緩沖區(qū)**********************/readline(){charch1;pline=line;ch1=fgetc(cfile);while((ch1!='\n')&&(ch1!=EOF)){*pline=ch1;pline++;ch1=fgetc(cfile);}*pline='\0';pline=line;}/***********************生成四元式**************************/gen(charop1[],structaaarg11,structaaarg22,intresult1){strcpy(fexp[nxq].op,op1);fexp[nxq].arg1.sy1=arg11.sy1;fexp[nxq].arg1.pos=arg11.pos;fexp[nxq].arg2.sy1=arg22.sy1;fexp[nxq].arg2.pos=arg22.pos;fexp[nxq].result=result1;nxq++;returnnxq-1;}運(yùn)行結(jié)果截圖:學(xué)習(xí)體會(huì):上課的時(shí)候,編譯原理有很多地方不明白,在學(xué)習(xí)完了后對(duì)各個(gè)方面的知識(shí)精華不是不了解,通過本次實(shí)驗(yàn)后,我漸漸熟悉了編譯程序的原理,對(duì)編譯程序處理過程有了更清晰的認(rèn)識(shí),程序在詞法分析,語法分析語義分析,代碼生成都有了更清楚的體會(huì),詞法分析的步驟,狀態(tài)棧加工過程的詳細(xì)內(nèi)容,以及這之中四元式的產(chǎn)生分析以及歸約的一些內(nèi)容。實(shí)驗(yàn)二算術(shù)表達(dá)式的擴(kuò)充實(shí)驗(yàn)?zāi)康模簩W(xué)會(huì)推到LR分析表,擴(kuò)充算術(shù)表達(dá)式。即:將原來的擴(kuò)展成+、-、×、/。實(shí)驗(yàn)要求:參照算術(shù)表達(dá)式LR分析表的設(shè)計(jì)方法,設(shè)計(jì)擴(kuò)充后的算術(shù)表達(dá)式LR分析表,并對(duì)原語義加工程序進(jìn)行修改,加入新添加的內(nèi)容。實(shí)驗(yàn)內(nèi)容:算術(shù)表達(dá)式文法擴(kuò)充如下:E—>E+E|E-E|E*E|E/E|(E)|i試根據(jù)該文法添加單詞“-”、“/”的內(nèi)部定義以及重新設(shè)計(jì)LR分析表,并修改語義加工程序,最后驗(yàn)證修改的結(jié)果。四、程序修改部分代碼:#include"stdio.h"#include"string.h"#defineACC-2/**************************************/#definesy_if0#definesy_then1#definesy_else2#definesy_while3#definesy_begin4#definesy_do5#definesy_end6#definea7#definesemicolon8#definee9#definejinghao10#defineS11#defineL12#definetempsy15#defineEA18#defineE019#defineplus34#defineminus 35//增加的#definetimes36#definediv 37//增加的#definebecomes38#defineop_and39#defineop_or40#defineop_not41#definerop42//#definesy_for 43//addfor#definelparent48#definerparent49#defineident56#defineintconst57/********************************************//********************算術(shù)表達(dá)式的LR分析表********************/staticintaction1[14][9]=//修改3{{3,-1,-1,-1,-1,2,-1,-1,1},{-1,4,5,6,7,-1,-1,ACC,-1},{3,-1,-1,-1,-1,2,-1,-1,8},{-1,106,106,106,106,-1,106,106,-1},{3,-1,-1,-1,-1,2,-1,-1,9},{3,-1,-1,-1,-1,2,-1,-1,10},{3,-1,-1,-1,-1,2,-1,-1,11},{3,-1,-1,-1,-1,2,-1,-1,12},{-1,4,5,6,7,-1,13,-1,-1},{-1,101,101,6,7,-1,101,101,-1},{-1,102,102,6,7,-1,102,102,-1},{-1,103,103,103,103,-1,103,103,-1},{-1,104,104,104,104,-1,104,104,-1},{-1,105,105,105,105,-1,105,105,-1}};case'+': buf[count].sy1=plus; count++; break; case'-': //增加的 buf[count].sy1=minus; count++; break; case'*': buf[count].sy1=times; count++; break; case'/'://增加的 buf[count].sy1=div; count++; break; case':': readch(); if(ch=='=') buf[count].sy1=becomes; count++; break; case'=': buf[count].sy1=rop; buf[count].pos=5; count++; break; case';': buf[count].sy1=semicolon; count++; break;change1(intchan)//{ switch(chan) { caseident: caseintconst:return0; caseplus:return1; caseminus:return2;//added casetimes:return3; casediv:return4;//added caselparent:return5; caserparent:return6; casejinghao:return7; casetempsy:return8; }}switch(lr1) { case100:break; //S'-->E case101:E.pos=newtemp(); //E->E+E gen("+",sstack[ssp-2],sstack[ssp],E.pos+100); ssp=ssp-2; sstack[ssp].sy1=tempsy; sstack[ssp].pos=E.pos; sp1=sp1-3; break; case102:E.pos=newtemp();//E->E-E gen("-",sstack[ssp-2],sstack[ssp],E.pos+100); ssp=ssp-2; sstack[ssp].sy1=tempsy; sstack[ssp].pos=E.pos; sp1=sp1-3; break; case103:E.pos=newtemp();//E->E*E gen("*",sstack[ssp-2],sstack[ssp],E.pos+100); ssp=ssp-2; sstack[ssp].sy1=tempsy; sstack[ssp].pos=E.pos; sp1=sp1-3; break; case104:E.pos=newtemp();//E->E/E gen("/",sstack[ssp-2],sstack[ssp],E.pos+10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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至2030年中國(guó)發(fā)泡匙扣數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)JC燈數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)旋啟止回閥市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)蝦養(yǎng)殖行業(yè)投資前景及策略咨詢研究報(bào)告
- 二零二五年度民間借貸擔(dān)保方式改革與合同條款設(shè)計(jì)4篇
- 2025年航空航天零部件制造與供應(yīng)合同2篇
- 2025年度廚師餐飲安全培訓(xùn)聘用合同3篇
- 2025年度苗圃苗木電商平臺(tái)合作與推廣合同4篇
- 2025年版派駐企業(yè)培訓(xùn)師服務(wù)合同4篇
- 二零二五年度互聯(lián)網(wǎng)醫(yī)療健康數(shù)據(jù)共享協(xié)議書下載2篇
- 數(shù)學(xué)-山東省2025年1月濟(jì)南市高三期末學(xué)習(xí)質(zhì)量檢測(cè)濟(jì)南期末試題和答案
- 中儲(chǔ)糧黑龍江分公司社招2025年學(xué)習(xí)資料
- 湖南省長(zhǎng)沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 駕駛證學(xué)法減分(學(xué)法免分)試題和答案(50題完整版)1650
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 物流有限公司安全生產(chǎn)專項(xiàng)整治三年行動(dòng)實(shí)施方案全國(guó)安全生產(chǎn)專項(xiàng)整治三年行動(dòng)計(jì)劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 產(chǎn)鉗助產(chǎn)護(hù)理查房
- 招聘專員轉(zhuǎn)正述職報(bào)告
- (完整版)小學(xué)生24點(diǎn)習(xí)題大全(含答案)
評(píng)論
0/150
提交評(píng)論