




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí) 驗(yàn) 題目名稱(chēng) 編譯原理實(shí)驗(yàn) 學(xué)生學(xué)院_ 計(jì)算機(jī)學(xué)院 _ 專(zhuān)業(yè)班級(jí)_ 09計(jì)算機(jī)科學(xué)與技術(shù)1班 學(xué) 號(hào)_ 3109005882 2011 年 1月 1 日 編譯原理上機(jī)實(shí)驗(yàn)報(bào)告一、 實(shí)驗(yàn)?zāi)康呐c要求目的:在分析理解一個(gè)教學(xué)型編譯程序(如pl/0)的基礎(chǔ)上,對(duì)其詞法分析程序、語(yǔ)法分析程序和語(yǔ)義處理程序進(jìn)行部分修改擴(kuò)充。達(dá)到進(jìn)一步了解程序編譯過(guò)程的基本原理和基本實(shí)現(xiàn)方法的目的。要求:對(duì)pl/0作以下修改擴(kuò)充:(1)增加單詞:保留字 else,for,to,downto,return運(yùn)算符 +=,-=,+,-(只實(shí)現(xiàn)詞法分析部分)(2)修改單詞:不等號(hào)# 改為 !=(3)修改單詞:write改為 p
2、rintln(4)增加條件語(yǔ)句的else子句二、實(shí)驗(yàn)環(huán)境:計(jì)算機(jī):機(jī)系統(tǒng):windows7 x64、windows xp程序設(shè)計(jì)語(yǔ)言和工具:c+builder 6教學(xué)型編譯程序:pl/03、 設(shè)計(jì)方案:4、 開(kāi)發(fā)過(guò)程和完成情況:1、 增加單詞:修改初始化關(guān)鍵字:strcpy(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,fo
3、r);strcpy(kword 9,if); strcpy(kword 10,odd);strcpy(kword 11,println); strcpy(kword 12,procedure);strcpy(kword 13,program); strcpy(kword14,read);strcpy(kword 15,return); strcpy(kword16,then);strcpy(kword 17,to); strcpy(kword18,var);strcpy(kword19,while); wsym 1=beginsym; wsym 2=callsym; wsym 3=consts
4、ym; wsym 4=dosym; wsym 5=downtosym; wsym 6=elsesym; wsym 7=endsym; wsym 8=forsym; wsym 9=ifsym; wsym 10=oddsym; wsym 11=printlnsym; wsym 12=procsym; wsym 13=progsym; wsym14=readsym; wsym 15=returnsym; wsym16=thensym; wsym 17=tosym; wsym18=varsym; wsym19=whilesym;typedef enum nul, ident, number, plus
5、, minus, times, inc,dec,append,reduce,/+,-,+=,-= slash, oddsym, eql, neq, lss, leq, gtr, geq, lparen, rparen, comma, semicolon, period, becomes, beginsym, endsym, ifsym,elsesym, thensym, whilesym, printlnsym, readsym, dosym, callsym,constsym, varsym, procsym, progsym,contrary,/取反,僅實(shí)現(xiàn)到詞法 downtosym,fo
6、rsym,returnsym,tosym symbol;char *symout = nul, ident, number, plus, minus, times,inc,dec,append, decduct, slash, oddsym, eql, neq, lss, leq, gtr, geq,lparen, rparen, comma, semicolon, period, becomes, beginsym, endsym, ifsym,elsesym, thensym, whilesym, printlnsym, readsym, dosym, callsym,constsym,
7、varsym, procsym, progsym,contrary,downtosym,forsym,returnsym,tosym ;const symnum = 43;/新添加常量,用于替代標(biāo)識(shí)符個(gè)數(shù)以及初始化symset 代替( for i=0;i33;i+ ) 中的33、+、-、+=、-= 、!= 詞法分析部分:在getsym()中switch(ch) case : getch(); if (ch=) sym=becomes; getch(); else sym=nul; break; case : getch(); if (ch=) sym=geq; getch(); else sy
8、m=gtr; break; case !: getch(); if(ch=)sym=neq;getch(); else sym= contrary; break; case +: getch(); if(ch=+)sym=inc;getch(); else if(ch=)sym=append;getch(); else sym= plus; break; case -: getch(); if(ch=-)sym=dec;getch(); else if(ch=)sym=reduce;getch(); else sym= minus; break; default: sym=ssymch; ge
9、tch(); 、write改為println:1、 在函數(shù)void statement(symset fsys,int lev,int &tx)中修改case writesym: 為:case printlnsym: 2、 statbegsysprintlnsym=1;將println歸到語(yǔ)句開(kāi)始符號(hào)集里面其它操作在上面的初始化里已經(jīng)做好。、else的實(shí)現(xiàn):case ifsym:getsym();condition(symsetunion(symsetnew(thensym,dosym),fsys),lev,tx);if (sym=thensym) getsym();else error(16
10、);jpc 0,0then語(yǔ)句jmp 0,0else語(yǔ)句。 /產(chǎn)生預(yù)跳轉(zhuǎn),將跳轉(zhuǎn)位置暫設(shè)為0,等待回填cx1=cx; gen(jpc,0,0); /then后語(yǔ)句塊的處理statement(fsys,lev,tx); getsym(); /判斷是否后接else語(yǔ)句 if(sym=elsesym) getsym(); /當(dāng)if()不成立時(shí)候,應(yīng)該跳轉(zhuǎn)到/else語(yǔ)句后,所以在這里將預(yù)跳轉(zhuǎn)/的跳轉(zhuǎn)位置回填上這時(shí)候的cx+1/(cx用于產(chǎn)生無(wú)條件跳轉(zhuǎn)命令) codecx1.a=cx+1; cx1=cx;gen(jmp,0,0);/當(dāng)執(zhí)行的是then語(yǔ)句,則到這里必須跳過(guò)else語(yǔ)句部分 statem
11、ent(fsys,lev,tx); codecx1.a=cx; else codecx1.a=cx;break;、完成情況:else&println 結(jié)果圖附有類(lèi)pcode的結(jié)果:= compile pl0 = 0 program ex01; 0 var a,b,c; 1 begin 2 b:=5; 4 a:=11; 6 if a=0 then 9 a:=88; 12 else read(a); 15 println(a); 18 end. 0 jmp 0 1 1 ini 0 6 2 lit 0 5 3 sto 0 4 4 lit 0 11 5 sto 0 3 6 lod 0 3 7 lit 0 0 8 opr 0 8 9 jpc 0 13 10 lit 0 88 11 sto 0 3 12 jmp 0 15 13 opr 0 16 14 sto 0 3 15 lod 0 3 16 opr 0 14 17 opr 0 15 18 opr 0 0 run pl0 ? 1414 end pl0 5、 學(xué)習(xí)體會(huì):由于實(shí)驗(yàn)做了很久才來(lái)寫(xiě)實(shí)驗(yàn)報(bào)告,有一些細(xì)節(jié)的地方自己已經(jīng)忘記,不過(guò)可以大概記起在做實(shí)驗(yàn)中遇到的問(wèn)題:1、 由于是在別人代碼的基礎(chǔ)上修改,剛開(kāi)始對(duì)作者的意圖和邏輯并不是很清晰,總修改了明顯要修改的地方,而沒(méi)有修改與之關(guān)聯(lián)的地方,這樣就總是報(bào)錯(cuò)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 代寫(xiě)課題申報(bào)書(shū)多少錢(qián)
- 成囊材料市場(chǎng)分析及競(jìng)爭(zhēng)策略分析報(bào)告
- 企業(yè)生產(chǎn)線(xiàn)用工合同范本
- 中國(guó)傳統(tǒng)文化學(xué)習(xí)心得體會(huì)
- 廠(chǎng)家求購(gòu)鋼材合同范本
- 臨床護(hù)理習(xí)題(附答案)
- 機(jī)械制造基礎(chǔ)模擬試題含答案
- 代理經(jīng)營(yíng)承包協(xié)議合同范本
- 箱包維修合同范本
- 流體力學(xué)復(fù)習(xí)題(含答案)
- 算力中心建設(shè)的技術(shù)要求
- 2024煤礦安全規(guī)程解讀
- 德州環(huán)鋰新能源科技有限公司2萬(wàn)噸年廢舊鋰電池回收項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 2025年江蘇省中職《英語(yǔ)》學(xué)業(yè)水平考試核心考點(diǎn)試題庫(kù)500題(重點(diǎn))
- 延期實(shí)習(xí)申請(qǐng)書(shū)
- GB/T 1346-2024水泥標(biāo)準(zhǔn)稠度用水量、凝結(jié)時(shí)間與安定性檢驗(yàn)方法
- 2025年江蘇信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 易制毒化學(xué)品理論考試試題及答案
- 2024年煙臺(tái)汽車(chē)工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2024年江西旅游商貿(mào)職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- IIT臨床醫(yī)學(xué)項(xiàng)目管理
評(píng)論
0/150
提交評(píng)論