版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實驗報告成績: 指導(dǎo)教師審核(簽名): 年 月 日預(yù)習(xí)報告 實驗報告語法制導(dǎo)把表達式翻譯成逆波蘭式 (一)實驗?zāi)康?進一步掌握語法制導(dǎo)翻譯的概念,理解中間語言,設(shè)計出錯處理程序方法,掌握把表達式翻譯成中間語言的算法。(二)實驗內(nèi)容1從左到右掃描中綴表達式,經(jīng)語法分析找出中綴表達式出現(xiàn)的錯誤并給出錯誤的具體位置和類型。一個運算符棧存放暫時不能出現(xiàn)的運算符,逆波蘭區(qū)存放逆波蘭表達式。2測試所編程序,給出正確和錯誤的結(jié)果。(三)實驗要求1學(xué)生課前要認真閱讀實驗指導(dǎo),理解實驗內(nèi)容與相關(guān)理論知識的關(guān)系,并完成預(yù)習(xí)報告2用C語言或其它高級語言編寫程序3寫出實驗報告實驗報告成績:
2、指導(dǎo)教師審核(簽名): 年 月 日預(yù)習(xí)報告 實驗報告語法制導(dǎo)把表達式翻譯成逆波蘭式(一)實驗?zāi)康?通過上機實習(xí)加深對語法指導(dǎo)翻譯原理的理解,掌握運算符優(yōu)先權(quán)的算法,將語法分析所識別的表達式變換成中間代碼的翻譯方法。(二)實驗內(nèi)容同預(yù)習(xí)報告(三)實驗要求1.學(xué)生課前要認真閱讀實驗指導(dǎo),理解實驗內(nèi)容與相關(guān)理論知識的關(guān)系,并完成預(yù)習(xí)報告2用C語言或其它高級語言編寫程序3寫出實驗報告(四)實驗設(shè)計思路1)表達式生成逆波蘭式的算法1、初始化送到運算符棧。2、掃描左括號“(”,把送到運算符棧。3、掃描到變量,把它送到逆波蘭區(qū)。4、掃描到運算符( 1)棧內(nèi)運算符比較a.棧內(nèi)運算符>=棧外運算符,把棧內(nèi)
3、運算符送到逆波蘭區(qū)。b.棧內(nèi)運算符<棧外運算符,把棧外運算符入棧。( 2 ) 棧內(nèi)是把運算符入棧。5、掃描右括號 “)”。( 1 )棧內(nèi)是運算符,把棧內(nèi)運算符送到逆波蘭區(qū)。( 2 )棧內(nèi)是則退棧,讀入下一個字符。6、掃描到#(結(jié)束符)( 1 )棧內(nèi)是運算符,把棧內(nèi)運算符送到逆波蘭區(qū)。( 2 )棧內(nèi)是結(jié)束,否則繼續(xù)分析。(五)程序流程圖開始初始化運算符棧stack初始化逆波蘭區(qū)exp初始化表達式區(qū)str 將表達式送入表達式區(qū)str中 從表達式區(qū)中取一個字符#操作數(shù)(運算符)棧內(nèi)元素送逆波蘭區(qū)結(jié)束“(”入棧操作數(shù)送逆波蘭區(qū)棧內(nèi)運算符棧外運算符棧內(nèi)運算符送逆波蘭區(qū)棧外運算符入棧棧內(nèi)元素送逆波蘭
4、區(qū)YNYNYNYYNN (五)程序代碼/ zty2.cpp : 定義控制臺應(yīng)用程序的入口點。/#include<stdio.h>#include<string.h>#define LEN 50int main()char stackLEN;char expLEN;char strLEN;char ch;int i=-1,j=0,top=0,flag=0;printf("請輸入表達式以#號結(jié)束:n");scanf("%s",str);lab:i+;ch=stri;if(ch='#')goto lab1;else if
5、(ch>='0'&&ch<='9')|(ch>='a'&&ch<='z')expj=ch;j+;goto lab;else if(ch='('|ch='')top+;stacktop=ch;goto lab;else if(ch='+'|ch='-')while(top!=0&&stacktop!='(')expj=stacktop;top-;j+;top+;stacktop=ch
6、;goto lab;else if(ch='*'|ch='/')while(stacktop='*'|stacktop='/')expj=stacktop;top-;j+;top+;stacktop=ch;goto lab;else if(ch=')')while(stacktop!='(')expj=stacktop;j+;top-;top-;goto lab;elseprintf("出錯字符是:%cn",stri);printf("出錯位置是:%dn",i
7、+1);flag=1;lab1:while(!flag&&top!=0)expj=stacktop;j+;top-;top=j;if(!flag)j=0;printf("逆波蘭式為:n");while(j<top+1)printf("%c",expj);j+;return 0; (六) 程序運行結(jié)果測試測試結(jié)如下圖,測試結(jié)果符合實驗要求。表達式轉(zhuǎn)化為逆波蘭式的算法和對語法制導(dǎo)翻譯原理結(jié)果如下圖:輸入:a+(b*(c-de)+f)/m# 時,輸出正確的逆波蘭式。輸入:a+23*5#時,輸出輸出錯誤的位置和字符。(七)調(diào)試程序出現(xiàn)的問題及解決的方法實驗中編程基本沒什么問題,數(shù)據(jù)結(jié)構(gòu)實驗時曾做過逆波蘭式的實驗,所以比較能理解,但是對實驗的理解沒有吃透,對語法制導(dǎo)翻譯的原理理解不太清楚,所以,碰到了一些難度。(八)實驗心得體會通過本次試驗,掌握了表達式轉(zhuǎn)化為逆波蘭式的算法,并對語法制導(dǎo)翻譯原理有了進一步的理解。讓我知道了我們編寫程序的編譯器是怎么編譯程序和怎么工作的,也對編譯課
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中山大學(xué)孫逸仙紀念醫(yī)院深汕中心醫(yī)院放射科影像??坪贤t(yī)技崗位招聘備考題庫有答案詳解
- 2026年精神健康護理合同
- 2025年廣州越秀區(qū)文聯(lián)招聘合同制輔助人員備考題庫有答案詳解
- 2026年紙質(zhì)出版合同
- 寧海農(nóng)村商業(yè)銀行2026年招聘10人備考題庫及1套完整答案詳解
- 2026年建筑醫(yī)院紀念項目合同
- 2026年納米藥物制劑技術(shù)開發(fā)合同
- 中國科學(xué)院空間應(yīng)用工程與技術(shù)中心2026屆校園招聘備考題庫帶答案詳解
- 葫蘆島市公安機關(guān)2025年公開招聘警務(wù)輔助人員備考題庫附答案詳解
- 2025年醫(yī)保工作年度總結(jié)
- (2025年)人民法院聘用書記員考試試題(含答案)
- 字節(jié)跳動+Agent+實踐手冊
- 銷售香薰技巧培訓(xùn)課件
- 雨課堂在線學(xué)堂《醫(yī)學(xué)文獻檢索》作業(yè)單元考核答案
- 計調(diào)年終總結(jié)匯報
- 《社區(qū)護理學(xué)》試題庫及答案
- 鄭州鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)測試題
- 住房公積金放棄協(xié)議書
- ISO 9001(DIS)-2026重大變化2:“氣候變化”專題深度專業(yè)解讀與應(yīng)用指導(dǎo)材料(2025A0)
- 電氣自動化系統(tǒng)調(diào)試方案
- 腦癱兒童家庭護理
評論
0/150
提交評論