




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理課程實驗報告.實驗題目lex yacc題目專業(yè)班級學(xué)號姓名的聯(lián)合使用lex yacc的聯(lián)合使用二.實驗日期三.實驗環(huán)境(操作系統(tǒng),開發(fā)語言)操作系統(tǒng)是Windows開發(fā)語言是C語言 四.實驗內(nèi)容(實驗要求)目的:熟悉lex和yacc的接口要求:1)2)3)4)能對整數(shù)、實數(shù)進(jìn)行帶變量的四則運(yùn)算 詞法分析用 lex 實現(xiàn) 語法分析用 yacc 實現(xiàn) 交源代碼和實驗報告 五 . 實驗步驟1. 在實驗二的基礎(chǔ)上修改代碼,并添加上以下的代碼:double return DOUBLE;EOF return 0; ID return ID;2.在DOS環(huán)境下按照之前的步驟利用flex運(yùn)行,修改其中
2、的錯誤之后,生成文件。3. 參照書中第 14章第 7 節(jié)和文件中的代碼,和老師說的思路修改文件,按照實 驗要求修改代碼。4. 在DOS環(huán)境下利用yacc運(yùn)行文件,會有出錯提示,按照出錯的地方指示,修改代碼,使其最終能通過運(yùn)行,生成文件。 (此步驟還未完成)5. 打開 , 新建工程,在 Source files 文件夾中添加之前生成的文件和文件,然后這時就能因為要結(jié)找到已給的文件,將其添加到新建工程中的 Header files 文件夾中, 將三個文件組成一個類似于 .exe 文件類型的文件,最后運(yùn)行。6. 運(yùn)行并調(diào)試成功。六 . 實驗體會( 包括收獲、心得體會、存在的問題及解決問題的方法、建議
3、等這是最后一次實驗了, 但這次的難度是有史以來最難的一次實驗, 合之前我們學(xué)到的所有東西。首先要修改 .l 文件的代碼, 再把此文件用 lex 運(yùn)行,即詞法分析部分用 lex完成;然后是修改文件, 盡管有參照的代碼, 但是要自己實現(xiàn)能對整數(shù)和實數(shù)進(jìn) 行帶變量的四則運(yùn)算,對于還沒有完全掌握 .y 文件編寫的我還是太有難度了,自己先是完成了只對實數(shù)的運(yùn)算, 也能運(yùn)行, 但只要添加上實數(shù)就會出錯, 研究了很久,還是沒有找出來哪里還有錯誤;有時候也會出現(xiàn)用 yacc 運(yùn)行沒錯誤,但用 c-free 運(yùn)行就會出錯,提示說 .h 文件有錯誤,找了半天,也修改了很多。卻仍然不知道哪里有錯。總的來說,雖然沒有
4、完成最終的目的,但是我已經(jīng)盡力了。七 . 實驗結(jié)果(關(guān)鍵源代碼)文件代碼:%option noyywrapDIGIT0-9IDa-zA-Za-zA-Z0-9*%#include%DIGIT+.DIGIT* return NUM;/*Fn*/ prin tf(33 n);Aprintf(34 %sn,yytext);+printf(35 %sn,yytext);II IIprintf(36 %sn,yytext);printf(37 %sn,yytext);/printf(38 %sn,yytext);(printf(39 %sn,yytext);)printf(40 %sn,yytext);p
5、rintf(41 %sn,yytext);printf(42 %sn,yytext);printf(43 %sn,yytext);printf(44 %sn,yytext);double return DOUBLE;EOF return 0;ID return ID;printf(100 %sn,yytext);% main(void) yylex();文件代碼:/* 帶 整數(shù) int 和實數(shù) double 變量聲明的加減乘除四則運(yùn)算 */ % #include #include #include #include #include extern char yytext20;extern SY
6、MREC *sym_table;int id_type;SYMREC *sym;typedef structunion invaldouble do;int in;int valType; VALUE;%alType =1; $.= $ /* valType =1代表實數(shù) */| NUMINT $.valType =2; $.= $ /* valType =2代表整數(shù) */| ID if(sym = getsym(yytext) != NULL )if (id_type = INTEGER)$.valType =2; $. = sym-value;/*valType =2 代表整數(shù) */els
7、e $.valType =1; $. = sym-value; /*valType =1 代表實數(shù) */else (此變量沒定義 n ); | exp + exp if($ =1 & $ =1 ) $.valType =1 ;$.= $ +$ ;else | exp - exp| exp * exp| exp / exp| - exp %prec UMINUS% int yyerror(char *s) printf(%sn, s);return 0;int main(void) yyparse();return 0;int yylex()| isdigit(c)ungetc(c,stdin);scanf(%lf,&;return NUMDOU;if(isalpha(c)char symbuf20;int i=0;dosymbufi = c;i+;c = getchar();while(c != EOF & isalnum(c);ungetc(c,stdin);symbufi = 0;/還要能識別 int a 中的關(guān)鍵字int ,如果遇見 int 返回 INTEGER遇見 doubl
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電影票務(wù)平臺地區(qū)級代理合同
- 合同法修訂案:第一章 合同的訂立與生效
- 外資制造業(yè)-員工培訓(xùn)合同范本
- 木材采購與銷售合同模板
- 流動人口計劃生育協(xié)作合同
- 干股收益分配合同(范本)
- 企事業(yè)單位監(jiān)控布防合同模板
- 合同責(zé)任死亡賠償金額解析
- 學(xué)校食堂食材采購合同模板
- Unit5 What day is it today?(教學(xué)設(shè)計)-2023-2024學(xué)年教科版(廣州)英語四年級下冊
- 影視制作項目委托制作協(xié)議
- 廣東2024年12月佛山市教育局公開選調(diào)1名公務(wù)員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 植物角創(chuàng)設(shè)培訓(xùn)
- 法院生活費(fèi)申請書
- 2025年益陽醫(yī)學(xué)高等專科學(xué)校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年湖南工藝美術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 醫(yī)用氣體施工方案
- 2024 年陜西公務(wù)員考試行測試題(B 類)
- 人教版小學(xué)數(shù)學(xué)一年級下冊教案
- 《住院患者身體約束的護(hù)理》團(tuán)體標(biāo)準(zhǔn)解讀課件
評論
0/150
提交評論