下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
??????????????????????????????????????????????????????????????????密?????????????????????????????????封?????????????????????????????????線?????????????????????????????????姓名:學(xué)號(hào):專業(yè):軟件工程年級(jí):2017課程:編譯原理主講教師:__輔導(dǎo)教師:______實(shí)驗(yàn)時(shí)間:_2020_年_6_月_11_日上午8時(shí)至_7時(shí),實(shí)驗(yàn)地點(diǎn)_家_實(shí)驗(yàn)題目:利用算符優(yōu)先分析方法設(shè)計(jì)一個(gè)計(jì)算器實(shí)驗(yàn)?zāi)康模涸趯?shí)驗(yàn)一的基礎(chǔ)上,利用算符優(yōu)先分析方法設(shè)計(jì)一個(gè)計(jì)算器,以加深對(duì)算符優(yōu)先分析過(guò)程和語(yǔ)義分析過(guò)程的理解。實(shí)驗(yàn)環(huán)境(硬件和軟件)CodeBlocks實(shí)驗(yàn)內(nèi)容:1、實(shí)驗(yàn)具體說(shuō)明目前一般的計(jì)算器進(jìn)行計(jì)算時(shí)不能輸入括號(hào),而且需要事先得到表達(dá)式的各項(xiàng)才能使用它,例如:若直接輸入:3+4*5,一般的計(jì)算器會(huì)在輸入乘號(hào)時(shí),先得到7,輸入完成后的結(jié)果是35。如果希望能夠更方便的使用計(jì)算器,我們可以進(jìn)行一些改進(jìn)。實(shí)驗(yàn)中要求計(jì)算器:(1) 可以輸入+-*/()(2) 輸入時(shí)不立即計(jì)算,等到下一個(gè)算符出現(xiàn)時(shí)才確定是否進(jìn)行計(jì)算,例如:輸入3+5*4,在輸入*后,發(fā)現(xiàn)+的優(yōu)先級(jí)低于*,因此+不計(jì)算,表達(dá)式輸入結(jié)束后先計(jì)算*,后計(jì)算+。(3) 能夠發(fā)現(xiàn)輸入表達(dá)式中的語(yǔ)法錯(cuò)誤。2、實(shí)驗(yàn)步驟實(shí)驗(yàn)分成兩個(gè)階段進(jìn)行:(1) 第一階段,運(yùn)用算符優(yōu)先分析算法完成計(jì)算器中對(duì)算術(shù)表達(dá)式的語(yǔ)法分析;(2) 第二階段,設(shè)計(jì)屬性文法,改造第一階段的程序,完成算術(shù)表達(dá)式的計(jì)算和相關(guān)的輸出。實(shí)驗(yàn)步驟:boolfenxi(){intlen=strlen(buffer);stringcur="";last=font=0;///字符串預(yù)處理,合成一個(gè)個(gè)的stringfor(inti=0;i<len;i++){if(buffer[i]>='0'&&buffer[i]<='9')cur=cur+buffer[i];else{if(cur!=""){qu[last++]=cur;cur="";}qu[last]={buffer[i],'\0'};if(!ok(qu[last++]))return0;}}if(cur!=""){qu[last++]=cur;cur="";}///開(kāi)始算符優(yōu)先分析,規(guī)約的時(shí)候直接算出來(lái)“平”的階段直接求值for(inti=0;i<last;i++){if(i==0&&qu[i][0]=='-')st[font++]="0";///以負(fù)號(hào)開(kāi)頭,補(bǔ)0if(ok(qu[i]))///是負(fù)號(hào)按優(yōu)先級(jí)處理,否則是數(shù)字直接進(jìn)棧{if(qu[i][0]==')')///出現(xiàn)")"就去規(guī)約到"("{intj=font-1;while(j>=0&&st[j][0]!='(')j--;if(j<0||j==font-1)return0;if(!okguiyue(j+1))return0;st[j]=guiyue(j+1);font=j+1;while(j>=0&&!ok(st[j]))j--;cur=j<0?"":st[j];}elseif(cur==""||mx(cur[0],qu[i][0]))///優(yōu)先級(jí)"("進(jìn)棧前后優(yōu)先級(jí)不同,優(yōu)先級(jí)是嚴(yán)格遞增,否則規(guī)約{cur=qu[i];st[font++]=qu[i];if(qu[i][0]=='('&&i+1<last&&qu[i+1][0]=='-')st[font++]="0";///括號(hào)括住開(kāi)頭可以有負(fù)號(hào)}else{intj=font-1;while(j>=0&&!mi(st[j][0],qu[i][0]))j--;///規(guī)約時(shí),判斷破環(huán)嚴(yán)格遞增的負(fù)號(hào),以此決定規(guī)約到哪里if(!okguiyue(j+1))return0;st[j+1]=guiyue(j+1);font=j+2;st[font++]=qu[i];///破環(huán)嚴(yán)格遞增后,把一串規(guī)約為一個(gè)數(shù),但是不要忘了把新符號(hào)入棧cur=qu[i];}}elsest[font++]=qu[i];}///字符讀完后,站中還會(huì)有嚴(yán)格遞增的序列,其中不能有"("for(inti=0;i<font;i++)if(st[i][0]=='(')return0;if(!okguiyue(0))return0;ans=chgint(guiy
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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年度農(nóng)業(yè)科技企業(yè)股權(quán)分紅及轉(zhuǎn)讓協(xié)議3篇
- 2024音樂(lè)素材版權(quán)質(zhì)押合同:視頻素材制作融資
- 2025年度新能源汽車共享平臺(tái)車輛掛靠管理合同3篇
- 2025年度智慧城市基礎(chǔ)設(shè)施建設(shè)項(xiàng)目施工合同范本3篇
- 2025年度漁船租賃與漁業(yè)產(chǎn)業(yè)鏈整合服務(wù)合同3篇
- 2024鐵路員工勞動(dòng)協(xié)議樣本一
- 2025年中國(guó)汽輪機(jī)行業(yè)市場(chǎng)供需格局及投資規(guī)劃建議報(bào)告
- 2025年度個(gè)人汽車租賃合同綠色出行附加服務(wù)4篇
- 2025年度智能機(jī)器人研發(fā)與技術(shù)服務(wù)合作協(xié)議書4篇
- 2025年陜西西安人才市場(chǎng)有限公司招聘筆試參考題庫(kù)含答案解析
- 第1本書出體旅程journeys out of the body精教版2003版
- 臺(tái)資企業(yè)A股上市相關(guān)資料
- 電 梯 工 程 預(yù) 算 書
- 羅盤超高清圖
- 參會(huì)嘉賓簽到表
- 機(jī)械車間員工績(jī)效考核表
- 2.48低危胸痛患者后繼治療評(píng)估流程圖
- 人力資源管理之績(jī)效考核 一、什么是績(jī)效 所謂績(jī)效簡(jiǎn)單的講就是對(duì)
- 山東省醫(yī)院目錄
- 云南地方本科高校部分基礎(chǔ)研究
- 廢品管理流程圖
評(píng)論
0/150
提交評(píng)論