![編譯原理實(shí)驗(yàn)報告_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/90d5cd24-3f90-4178-9bcc-822cc06ed67c/90d5cd24-3f90-4178-9bcc-822cc06ed67c1.gif)
![編譯原理實(shí)驗(yàn)報告_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/90d5cd24-3f90-4178-9bcc-822cc06ed67c/90d5cd24-3f90-4178-9bcc-822cc06ed67c2.gif)
![編譯原理實(shí)驗(yàn)報告_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/90d5cd24-3f90-4178-9bcc-822cc06ed67c/90d5cd24-3f90-4178-9bcc-822cc06ed67c3.gif)
![編譯原理實(shí)驗(yàn)報告_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/6/90d5cd24-3f90-4178-9bcc-822cc06ed67c/90d5cd24-3f90-4178-9bcc-822cc06ed67c4.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理實(shí)驗(yàn)報告項(xiàng)目名稱pl/0語言的擴(kuò)充學(xué)院計(jì)算機(jī)學(xué)院專業(yè)班級 09軟件工程1班學(xué)號 3109006291 姓名姚振威指導(dǎo)教師李小妹2011年12 月28 日 實(shí)驗(yàn)一:增加單詞 一、實(shí)驗(yàn)?zāi)康呐c要求在分析理解一個教學(xué)型編譯程序(如pl/0)的基礎(chǔ)上,對其詞法分析程序。二、實(shí)驗(yàn)內(nèi)容增加單詞:保留字else,for,to,downto,return運(yùn)算符+=,-=,+,-,&,|,!實(shí)驗(yàn)平臺(1)計(jì)算機(jī)及操作系統(tǒng):pc機(jī),windows7(2)程序設(shè)計(jì)語言:c+builder(3)集成環(huán)境:c+builder(4)教學(xué)型編譯程序:pl/0三、設(shè)計(jì)方法首先要擴(kuò)展symbol,在此基礎(chǔ)上再進(jìn)行其它細(xì)節(jié)
2、的修改。要添加的symbol為:typedef enum nul, ident, number, plus, minus, times,slash, oddsym, eql, neq, lss, leq, gtr, geq,lparen, rparen, comma, semicolon, period,becomes, beginsym, endsym, ifsym, thensym,whilesym, writesym, readsym, dosym, callsym,constsym, varsym, procsym, progsym, , elsesym,forsym, tosym,
3、downtosym, returnsym, plusbecomes,minusbecomes, dplus, dminus,and,or,not symbol;char *symout = nul, ident, number, plus, minus, times, slash, oddsym, eql, neq, lss, leq, gtr, geq,lparen, rparen, comma, semicolon, period,becomes, beginsym, endsym, ifsym, thensym,whilesym, writesym, readsym, dosym, ca
4、llsym,constsym, varsym, procsym, progsym,elsesym,forsym, tosym, downtosym, returnsym,plusbecomes,minusbecomes, dplus, dminus ,and,or,not;其中紅斜體為新加入的symbol。再將elsesym,forsym, tosym, downtosym, returnsym, plusbecomes,minusbecomes, dplus, dminus關(guān)鍵字加到kword和將相應(yīng)的sym 加到wsym,按字母順序排列。以及修改neq后如下for (ch= ; chstr
5、cpy(kword 1,begin); strcpy(kword 2,call);strcpy(kword 3,const); strcpy(kword 4,do);strcpy(kword 5,downto); strcpy(kword 6,else);strcpy(kword 7,end); strcpy(kword 8,for);strcpy(kword 9,if); strcpy(kword10,odd);strcpy(kword11,procedure);strcpy(kword12,program);strcpy(kword13,read); strcpy(kword14,retu
6、rn); strcpy(kword15,then); strcpy(kword16,to); strcpy(kword17,var); strcpy(kword18,while);strcpy(kword19,write);wsym 1=beginsym; wsym 2=callsym;wsym 3=constsym; wsym 4=dosym;wsym 5=downtosym; wsym 6=elsesym;wsym 7=endsym; wsym 8=forsym;wsym 9=ifsym; wsym10=oddsym;wsym11=procsym; wsym12=progsym;wsym1
7、3=readsym; wsym14=returnsym;wsym15=thensym; wsym16=tosym;wsym17=varsym; wsym18=whilesym;wsym19=writesym;ssym+=plus; ssym-=minus; /用于sym=ssymch;ssym*=times; ssym/=slash;ssym(=lparen; ssym)=rparen;ssym=eql; ssym,=comma;ssym.=period; /ssym#=neq; /不等號#改為,#用不上刪除ssym;=semicolon;ssym&=and; ssym|=or; ssym!=
8、not;strcpy(mnemoniclit,lit); strcpy(mnemonicopr,opr);strcpy(mnemoniclod,lod); strcpy(mnemonicsto,sto);strcpy(mnemoniccal,cal); strcpy(mnemonicini,ini);strcpy(mnemonicjmp,jmp); strcpy(mnemonicjpc,jpc);因?yàn)楸A糇衷黾恿?個,所以令const norw = 19;symbol由原來的33個值擴(kuò)展為目前的42個值,symout也由原來的33個元素?cái)U(kuò)展為目前的42個元素.我用個symmax來記錄symbo
9、l值的個數(shù),所以,在與單詞個數(shù)有關(guān)的函數(shù)中,用“symmax”替代“33”,即除了error函數(shù)中可能出現(xiàn)的作為參數(shù)的“33”不被替換為“42”外,其余的“33”均用“symmax”來替換。如:s=(symset)malloc(sizeof(int)*symmax);for (i=0; isymbol擴(kuò)展完畢。對運(yùn)算符+=,- =,+,-詞法分析增添:if(ch=+) getch();if(ch=) sym=pluseq; getch(); elseif(ch=+) sym=plussf; getch(); else sym=plus; else if(ch=-) getch();if(ch=
10、) sym=minuseq; getch(); elseif(ch=-) sym=minussf; getch(); else sym=minus;四、心得體會熟悉了pl0的詞法分析,即getch()修改和添加。設(shè)計(jì)前感覺很簡單,但當(dāng)自己動手去做后才發(fā)現(xiàn)挺多要注意的細(xì)節(jié)的東西。 實(shí)驗(yàn)二:修改單詞 一、實(shí)驗(yàn)?zāi)康呐c要求在分析理解一個教學(xué)型編譯程序(如pl/0)的基礎(chǔ)上,進(jìn)一步對詞法分析程序理解,擴(kuò)充。二、實(shí)驗(yàn)內(nèi)容修改單詞:不等號# 改為 (neq)實(shí)驗(yàn)平臺(1)計(jì)算機(jī)及操作系統(tǒng):pc機(jī),windows7(2)程序設(shè)計(jì)語言:c+builder(3)集成環(huán)境:c+builder(4)教學(xué)型編譯程序:p
11、l/0三、設(shè)計(jì)方法只要修改getsym()函數(shù)。當(dāng)編譯器檢測到當(dāng)前字符為“”時,接著檢測下一個字符,如果是“”,則使sym=neq。代碼修改如下:if (ch=getch();if (ch=) sym=leq; getch(); elseif(ch=) sym=neq; getch(); elsesym=lss;同時ssym#=neq;用不上可刪除。四、測試 五、心得體會 有實(shí)驗(yàn)一的基礎(chǔ),本實(shí)驗(yàn)相對來說很簡單,只要像實(shí)驗(yàn)一一樣在getsym()里面修改一下就可以了。 實(shí)驗(yàn)三::增加條件語句的else子句 一、實(shí)驗(yàn)?zāi)康呐c要求在前兩個實(shí)驗(yàn)的基礎(chǔ)上,實(shí)現(xiàn)else語句的語法語義擴(kuò)充。二、實(shí)驗(yàn)內(nèi)容增加條
12、件語句的else子句,要求:寫出相關(guān)文法,語法圖,語義規(guī)則。實(shí)驗(yàn)平臺(1)計(jì)算機(jī)及操作系統(tǒng):pc機(jī),windows7(2)程序設(shè)計(jì)語言:c+builder(3)集成環(huán)境:c+builder(4)教學(xué)型編譯程序:pl/0三、設(shè)計(jì)方法該條件語法描述圖如下:只要在statement修改如下代碼:case ifsym:getsym();condition(symsetunion(symsetnew(thensym,dosym),fsys),lev,tx);if (sym=thensym) getsym();else error(16);cx1=cx; gen(jpc,0,0);sta tement(symsetunion(symsetnew(elsesym,dosym),fsys),lev,tx);codecx1.a=cx; /沒有else時候cx1的回填if (sym=elsesym)getsym();cx2=cx; gen(jmp,0,0);/執(zhí)行完真語句之后無條件跳轉(zhuǎn)co
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球電化鋁箔行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國液態(tài)金屬裝飾漆行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年二軸銷軸套項(xiàng)目投資可行性研究分析報告
- 2025年?;少|(zhì)磚項(xiàng)目可行性研究報告
- 不調(diào)偏機(jī)頭分流器行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 鑄管配件項(xiàng)目可行性研究報告
- 2025-2030年中國商品鋼坯行業(yè)深度研究分析報告
- 碳化硅磨具項(xiàng)目可行性研究報告
- 2025年度智能科技公司股權(quán)收購合同協(xié)議書范本
- 2025年度攪拌樁施工勞務(wù)分包及設(shè)備租賃合同
- 2025年廣州中醫(yī)藥大學(xué)順德醫(yī)院(佛山市順德區(qū)中醫(yī)院)招考聘用高頻重點(diǎn)提升(共500題)附帶答案詳解
- 第一章 整式的乘除 單元測試(含答案) 2024-2025學(xué)年北師大版數(shù)學(xué)七年級下冊
- JD37-009-2024 山東省存量更新片區(qū)城市設(shè)計(jì)編制技術(shù)導(dǎo)則
- 社區(qū)衛(wèi)生服務(wù)中心醫(yī)療服務(wù)推薦病-2023版1-4-10
- HY/T 266-2018外壓中空纖維超濾膜表面親水性的測試接觸角法
- 【英文原版小說】the things they carried《負(fù)荷》
- 領(lǐng)導(dǎo)干部如何管理壓力與情緒課件
- 2022-2023年度神農(nóng)中華農(nóng)業(yè)科技獎科研和科普類推薦書和摘要表(樣本)
- 大學(xué)成績單中文(word版)
- 海南省儋州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼居民村民委員會
- 人力資源管理專業(yè)畢業(yè)設(shè)計(jì)論文
評論
0/150
提交評論