版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、實(shí)驗(yàn)內(nèi)容簡介1).實(shí)驗(yàn)?zāi)康模和ㄟ^實(shí)驗(yàn),掌握語義分析的,掌握匯編代碼的分析過程。2).實(shí)驗(yàn)內(nèi)容: 設(shè)計(jì)、編制、調(diào)試一個語義分析子程序,并將語義分析得到的匯編代碼在模擬機(jī)上運(yùn)行,在屏幕上輸出模擬機(jī)運(yùn)行結(jié)果。其中運(yùn)用到了詞法分析得到的單詞表和語法分析對單詞表的分析結(jié)果,在語法分析過程中語義分析得到匯編代碼。從理論和實(shí)踐上掌握高級語言對源文件的得到的中間代碼的分析能力。3).實(shí)驗(yàn)要求:1.清楚了解 test 語言的語義,并能對其進(jìn)行合理分析和運(yùn)算2.根據(jù)test 語言的語義結(jié)構(gòu),得到正確的中間代碼,并能對中間代碼進(jìn)行正確的運(yùn)行,得到正確結(jié)果。3.增加如 do_while 等語句,并合理的與 tes
2、t 其它語句相結(jié)合,模0實(shí)驗(yàn)名稱語義分析程序設(shè)計(jì)實(shí)驗(yàn)類型設(shè)計(jì)、指導(dǎo)曾立勝小組成員學(xué)號小組分工20111598實(shí)驗(yàn)地點(diǎn)東六 E109實(shí)驗(yàn)時間第 11、12 周三上午第一講擬機(jī)運(yùn)行不錯誤4.增加%,-等符號,使得 test 語言功能更加強(qiáng)大5.增加STR 類型6.對于和的測試數(shù)據(jù)能通過7.提交實(shí)驗(yàn)報(bào)告4).測試數(shù)據(jù)要求:1.提示(或默認(rèn))輸入測試的源程序文件名,如 incf1.t;(1 為測試文件序號,t 指test 文件后綴)2.提示(或默認(rèn))輸出的單詞表文件名,如 outyf1.dat;(yf 為語法的拼音縮寫)3.語義分析過程中,對首先輸出程序所有指令,然后把程序運(yùn)行過程中令和結(jié)果顯示到屏幕
3、上。5).數(shù)據(jù)的邏輯結(jié)構(gòu)分析:LOAD D 將D 中的內(nèi)容加載到操作數(shù)棧LOADIa 將常量 a 壓入操作數(shù)棧STO D 將操作數(shù)棧棧頂單元內(nèi)容存入 D,且棧頂單元內(nèi)容保持不變POP 棧頂單元內(nèi)容出棧ADD將次棧頂單元與棧頂單元內(nèi)容出棧并相加,和置于棧頂SUB將次棧頂單元與棧頂單元內(nèi)容出棧并相減,和置于棧頂MULT將次棧頂單元與棧頂單元內(nèi)容出棧并相乘,和置于棧頂1DIV將次棧頂單元與棧頂單元內(nèi)容出棧并相除,和置于棧頂REM將次棧頂單元與棧頂單元內(nèi)容出棧并求余,和置于棧頂BR lab無條件轉(zhuǎn)移到 labBRF lab 檢查棧頂單元邏輯值并出棧,若為假(0)則轉(zhuǎn)移到labEQ 將棧頂兩單元做等于比
4、較并出棧,并將結(jié)果真假(1 或 0)至于棧頂NOTEQ 將棧頂兩單元做不等于比較并出棧,并將結(jié)果真假(1或 0)至于棧頂GT 將次棧頂與棧頂做大于比較并出棧,并將結(jié)果真假(1 或 0)至于棧頂LES 將次棧頂與棧頂做小于比較并出棧,并將結(jié)果真假(1 或 0)至于棧頂GE 將次棧頂與棧頂做大于等于比較并出棧,并將結(jié)果真假(1或 0)至于棧頂LE 將次棧頂與棧頂做小于等于比較并出棧,并將結(jié)果真假(1或 0)至于棧頂OR 將棧頂兩單元做邏輯或運(yùn)算并出棧,并將結(jié)果真假(1 或 0)至于棧頂NOT 將棧頂?shù)倪壿嬛等》碫NOT 將棧頂?shù)倪壿嬛等》碔N 從標(biāo)準(zhǔn)輸入(鍵盤)讀入一個整形數(shù)據(jù),并入棧OUT 將棧
5、頂單元內(nèi)容出棧,并輸出到標(biāo)準(zhǔn)輸出上(顯示器)2LOADS STR 輸出字符串STOP 停止執(zhí)行6).結(jié)構(gòu):語義分析過程中了中間代碼的和模擬機(jī)運(yùn)行時文件的顯示。程序運(yùn)行過程中,各個部分有不同的指令在文件中,二、實(shí)驗(yàn)過程語1、主要功能: 法語義分析分中間代碼的生成和模擬機(jī)運(yùn)行中間代碼的過程。模擬機(jī)運(yùn)行的過程也就是對源程序運(yùn)行的過程,通過模擬機(jī)可以得到 析所編寫的源程序想要得到的結(jié)或數(shù)據(jù)。束文件的存儲也就結(jié)束3。2、流程圖開始打開文件結(jié)束Y是否已經(jīng)所有指令文件是否讀完YN內(nèi)容是否為標(biāo)號將下一個code所代表的Y標(biāo)號位置是否為“LOAD”Y地址內(nèi)容入棧NN將下一個code作為常量入棧是否為“LOADI
6、”Y文件并將內(nèi)容存到codeN將操作數(shù)棧棧頂單元內(nèi)容存入下一個code所代將次棧頂單元與棧頂單元內(nèi)容出棧并求余,和置于棧頂是否為“STO”Y表地址,且棧頂單元內(nèi)容保持不變是否為“REM”YNNN無條件轉(zhuǎn)移到下一個code代表編號的位置是否為“POP”棧頂單元內(nèi)容出棧Y是否為“BR”YNN檢查棧頂單元邏輯值并出棧,若為假(0)則轉(zhuǎn)移到下一個code所代表編號的位置將次棧頂單元與棧頂單元內(nèi)容出棧并相加,和是否為“ADD”Y是否為“BRF”Y置于棧頂NN將棧頂兩單元做等于比較并出棧,并將結(jié)果真假(1或0)至于棧頂將次棧頂單元與棧頂單元內(nèi)容出棧并相減,和是否為“EQ”Y是否為“SUB”Y置于棧頂NN將
7、棧頂兩單元做不等于比較并出棧,并將結(jié)果真假(1或0)至于棧頂將次棧頂單元與棧頂單元內(nèi)容出棧并相乘,和是否為“NOTEQ”Y是否為“MULT”Y置于棧頂NNN將次棧頂與棧頂做大于比較并出棧,并將結(jié)果真假(1或0)至于棧頂將次棧頂單元與棧頂單元內(nèi)容出棧并相除,和是否為“GT”Y是否為“DIV”Y置于棧頂N將次棧頂與棧頂做小于比較并出棧,并將結(jié)果將棧頂?shù)倪壿嬛等》?,是否為“NOT”Y是否為“LES”Y結(jié)果至于棧頂真假(1或0)至于棧頂NN將次棧頂與棧頂做大于將棧頂?shù)闹等》矗Y(jié)果等于比較并出棧,并將結(jié)果真假(1或0)至于棧頂是否為“VNOT”Y是否為“GE”至于棧頂YNN是否是否NN將棧頂單元內(nèi)容出棧
8、,將棧頂兩單元做邏輯與運(yùn)算并出棧,并將結(jié)果真假(1或0)至于棧頂是否為”O(jiān)UT“并輸出到標(biāo)準(zhǔn)輸出Y是否為“AND”Y上(顯示器)NN將棧頂兩單元做邏輯或運(yùn)算并出棧,并將結(jié)果真假(1或0)至于棧頂是否為“LOADS”輸出字符串Y是否為“OR”YNN是否為“STOP”Y停止執(zhí)行4為“IN”Y從標(biāo)準(zhǔn)輸入(鍵盤)讀入一個整形數(shù)據(jù),并入棧為“LE”Y將次棧頂與棧頂做小于等于比較并出棧,并將結(jié)果真假(1或0)至于棧頂文件并將內(nèi)容存到code3、主要代碼:負(fù)號運(yùn)算的添加: 語法分析部分:if (strcmp(token,"-") = 0)log = 1;es = file_scan();
9、 if(es > 0)return es;printf("%s %sn", token, token1);if (strcmp(token, "(") = 0)es = file_scan(); if(es > 0)return es;printf("%s %sn", token, token1); es = expression();if (es > 0)return es;if (strcmp(token, ")")es = 6; return es;es = file_scan(); if(
10、es > 0)return es;printf("%s %sn", token, token1); if (log = 1)fprintf(fout2,"VNOTn");elseif (strcmp(token, "ID") = 0)int address;es = lookup(token1,&address);5if (es > 0)return es;fprintf(fout2," es = file_scan(); if(es > 0)return es;LOAD %dn",add
11、ress);printf("%s %sn", token, token1); if (log = 1)fprintf(fout2,"VNOTn");return es;if (strcmp(token, "NUM") = 0)fprintf(fout2," es = file_scan(); if(es > 0)return es;LOADI %sn",token1);printf("%s %sn", token, token1); if (log = 1)fprintf(fout2,&q
12、uot;VNOTn");return es;elsees = 7; return es;模擬機(jī)代碼部分:/VNOT 將棧頂?shù)倪壿嬛等》磇f (strcmp(codei,"VNOT") = 0)stackstacktop-1 = -stackstacktop-1;添加字符串:6語法分析部分:if (strcmp(token,"STR") = 0)fprintf(fout2," es = file_scan(); if(es > 0)return es;LOADS %sn",token1);printf("%s
13、%sn", token, token1); if (strcmp(token, "")es = 4; return es;es = file_scan(); if(es > 0)return es;printf("%s %sn", token, token1);模擬機(jī)部分:/LOADS 輸出字符串if (strcmp(codei,"LOADS") = 0)i+;cout << codei << endl;添加取模運(yùn)算語法分析部分while(strcmp(token,"*")=
14、0 strcmp(token, "%") = 0)char token220; strcpy(token2,token); es = file_scan();if(es > 0)return es;printf("%s %sn", token, token1); es = factor();if (es > 0)return es;if (strcmp(token2,"*") = 0)|strcmp(token,"/")=0|7fprintf(fout2,"MULTn");if (s
15、trcmp(token2,"/") = 0)fprintf(fout2,"DIVn");if (strcmp(token2,"%") = 0)fprintf(fout2,"REMn");模擬機(jī)部分:/REM 將次棧頂單元與棧頂單元內(nèi)容出棧并求余,和置于棧頂if (strcmp(codei, "REM") = 0)stackstacktop-2 = stackstacktop-2 % stackstacktop-1; stacktop-;三、自我測試及結(jié)果分析1)測試表達(dá)語句和負(fù)號:2)測試for 語句83)測試while4)測試do_while5)測試read96)測試write7)測試if8)測試復(fù)合語句109)測試求余數(shù)10)綜合測試四、現(xiàn)場測試及結(jié)果分析1)測試標(biāo)識符定義和 if112)測試標(biāo)識符定義和 write3)測試表達(dá)式4)測試if125)測試if 越界6)測試for 整形越界7)測試do_while138)測試readwritefor9)測試求余數(shù)10)測試while14五、實(shí)驗(yàn)完善及解結(jié)果總結(jié)本次實(shí)驗(yàn)是編譯原理課
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 最有效的婚內(nèi)協(xié)議書(2篇)
- 木工安全責(zé)任協(xié)議書(2篇)
- 2025年廈門東海職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年博爾塔拉職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025至2031年中國工程車鐵片行業(yè)投資前景及策略咨詢研究報(bào)告
- 市場服務(wù)行業(yè)發(fā)展趨勢-深度研究
- 農(nóng)業(yè)裝備智能診斷模型-深度研究
- 市場化改革進(jìn)程-深度研究
- 二零二五年度豬飼料行業(yè)教育培訓(xùn)合同
- 2025年度新型城鎮(zhèn)化項(xiàng)目物業(yè)運(yùn)維執(zhí)行合同
- 福建省泉州市晉江市2024-2025學(xué)年七年級上學(xué)期期末生物學(xué)試題(含答案)
- 2025年春新人教版物理八年級下冊課件 第十章 浮力 第4節(jié) 跨學(xué)科實(shí)踐:制作微型密度計(jì)
- 財(cái)務(wù)BP經(jīng)營分析報(bào)告
- 三年級上冊體育課教案
- 2024年全國統(tǒng)一高考英語試卷(新課標(biāo)Ⅰ卷)含答案
- 2025屆河北衡水?dāng)?shù)學(xué)高三第一學(xué)期期末統(tǒng)考試題含解析
- 提高數(shù)學(xué)教師命題能力培訓(xùn)
- 獵聘網(wǎng)在線人才測評題庫
- 《社區(qū)康復(fù)》課件-第八章 視力障礙患者的社區(qū)康復(fù)實(shí)踐
- 透析患者的血糖管理
- 前置審方合理用藥系統(tǒng)建設(shè)方案
評論
0/150
提交評論