編譯原理實(shí)驗(yàn)指導(dǎo)書_第1頁
編譯原理實(shí)驗(yàn)指導(dǎo)書_第2頁
編譯原理實(shí)驗(yàn)指導(dǎo)書_第3頁
編譯原理實(shí)驗(yàn)指導(dǎo)書_第4頁
編譯原理實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)科學(xué)與技術(shù)系編譯原理試驗(yàn)指導(dǎo)書計(jì)算機(jī)科學(xué)與技術(shù)系編譯原理試驗(yàn)指導(dǎo)書編譯原理試驗(yàn)指導(dǎo)書計(jì)算機(jī)科學(xué)與技術(shù)系20236月計(jì)算機(jī)科學(xué)與技術(shù)系編譯原理試驗(yàn)指導(dǎo)書計(jì)算機(jī)科學(xué)與技術(shù)系編譯原理試驗(yàn)指導(dǎo)書11目錄TOC\o“1-1“\h\z\u\l“_TOC_250004“試驗(yàn)?zāi)康暮腿蝿?wù) 1\l“_TOC_250003“試驗(yàn)一:詞法分析器 1\l“_TOC_250002“試驗(yàn)二:語法分析器1 5\l“_TOC_250001“試驗(yàn)三:語法分析器2 9\l“_TOC_250000“試驗(yàn)四:語義分析和中間代碼生成器 11試驗(yàn)?zāi)康暮腿蝿?wù)深層內(nèi)涵,切實(shí)把握編譯器的生成技術(shù)。大。在編譯原理的試驗(yàn)中,簡(jiǎn)化了真實(shí)程序設(shè)計(jì)語言要面臨的很多問題,選用了具有一定表現(xiàn)力量的有用語言的子集。試驗(yàn)主要涉及最關(guān)鍵的3個(gè)環(huán)節(jié)詞法分析、能較清楚地呈現(xiàn)編譯器前端的工作狀況。編程語言要求:C、C++JAVA。試驗(yàn)一:詞法分析器一、試驗(yàn)?zāi)康耐ㄟ^編寫詞法分析程序,了解詞法分析的過程。二、試驗(yàn)內(nèi)容編寫能識(shí)別給定的程序設(shè)計(jì)語言的詞法規(guī)章,輸出單詞流的識(shí)別程序。三、試驗(yàn)設(shè)備及工具硬件:PCPentium100以上。軟件:Win2023或WinXP、BC++、VC++JAVA開發(fā)環(huán)境。四、試驗(yàn)說明詞信息提取到了單詞符號(hào)與種別比照表中。本次試驗(yàn)要求編寫符合該文法構(gòu)詞規(guī)章的詞法分析器。G〔<程序>〕<程序>BEGIN語句表END.<語句表><語句>|<語句>;<語句表>計(jì)算機(jī)科學(xué)與技術(shù)系編譯原理試驗(yàn)指導(dǎo)書計(jì)算機(jī)科學(xué)與技術(shù)系編譯原理試驗(yàn)指導(dǎo)書10<語句><賦值語句>︱<條件語句>︱<WHILE語句>︱<復(fù)合語句><賦值語句><變量>=<算術(shù)表達(dá)式><條件語句>IF關(guān)系表達(dá)式THEN語句ELSE語句><WHILE語句>WHILE<關(guān)系表達(dá)式>DO<語句><復(fù)合語句>BEGIN語句表END<算術(shù)表達(dá)式><項(xiàng)>|<算術(shù)表達(dá)式>+<項(xiàng)>|<算術(shù)表達(dá)式>-<項(xiàng)><項(xiàng)><變量>|<整數(shù)><關(guān)系表達(dá)式><算術(shù)表達(dá)式><關(guān)系運(yùn)算符><算術(shù)表達(dá)式><關(guān)系運(yùn)算符><︱︱><變量><標(biāo)識(shí)符><標(biāo)識(shí)符><標(biāo)識(shí)符><標(biāo)識(shí)符><字母>|<標(biāo)識(shí)符><數(shù)字>|<字母><整數(shù)><數(shù)字>|<數(shù)字><整數(shù)><字母>A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z<數(shù)字>0|1|2|3|4|5|6|7|8|9<整數(shù)>和<標(biāo)識(shí)符>被看作最小詞法單位。1-1,存放了上述文法的全部單詞及種別。1-1種別單詞符號(hào)種別單詞符號(hào)種別單詞符號(hào)1BEGIN2END3IF4THEN5ELSE6WHILE7DO8=9+10-11<12==13>14.15;16整數(shù)17標(biāo)識(shí)符五、試驗(yàn)步驟為了實(shí)現(xiàn)編譯程序的有用,源程序可承受自由書寫格式,即一行內(nèi)可以書20個(gè)字符有效;整數(shù)2個(gè)字節(jié)表示。這樣詞法分析程序的主要工作為:從源程序文件中讀入字符。統(tǒng)計(jì)行數(shù)和列數(shù)用于錯(cuò)誤單詞的定位。刪除空格類字符,包括回車、制表符空格。按拼寫單詞,并用〔種別,單詞〕二元式表示。依據(jù)需要是否填寫標(biāo)識(shí)符表供以后各階段使用。這里承受的編譯程序的實(shí)現(xiàn)方法是一遍掃描,即從左到右只掃描一次用重復(fù)調(diào)用詞法分析子程序取一單詞的方法得到整個(gè)源程序的二元式流。*.pas。詞法分析器從*.pas中讀取字符流,輸出為單詞二元式流,并將輸出結(jié)果存放到*.dc文件中。test.pas:BEGINI=10;J=I+5;WHILEI==10DOBEGINR=J+I;I=I-1ENDEND.輸出結(jié)果為:〔1,“BEGIN”〕〔17,“I”〕〔8,“=”〕〔16,“10”〕〔15,“;”〕??????(正確的及錯(cuò)誤的至少各一例)、輸出的單詞二元式流和相應(yīng)的注釋都存放到一個(gè)文件中提交打印并書寫試驗(yàn)報(bào)告。六、試驗(yàn)類型驗(yàn)證性試驗(yàn)。七、試驗(yàn)學(xué)時(shí)3學(xué)時(shí)。八、考核方式5分,具體評(píng)分標(biāo)準(zhǔn)如下:5分:試驗(yàn)預(yù)備充分,上機(jī)準(zhǔn)時(shí),能獨(dú)立編寫和調(diào)試程序,結(jié)果正確,試驗(yàn)報(bào)告內(nèi)容齊全,格式標(biāo)準(zhǔn)。4分:試驗(yàn)預(yù)備良好,上機(jī)準(zhǔn)時(shí),能在教師指導(dǎo)下順當(dāng)編寫和調(diào)試程序,結(jié)果較正確,試驗(yàn)報(bào)告內(nèi)容比較齊全,格式比較標(biāo)準(zhǔn)。3分:試驗(yàn)預(yù)備較好,上機(jī)準(zhǔn)時(shí),根本完成試驗(yàn)任務(wù),試驗(yàn)報(bào)告內(nèi)容根本齊備,結(jié)果根本正確。2分:程序功能模塊根本完整,但沒有完成程序調(diào)試,無試驗(yàn)結(jié)果,提交了試驗(yàn)報(bào)告且有重大缺陷。1提交的試驗(yàn)報(bào)告有重大缺陷。0分:沒有參與試驗(yàn),沒有提交試驗(yàn)報(bào)告。九、思考題除了你使用的關(guān)鍵字檢查方法,還有哪些可行性方案?比較其優(yōu)劣。詞法分析過程中查出錯(cuò)誤后怎樣保證分析盡可能連續(xù)進(jìn)展?如何將詞法分析器改造成函數(shù),以供語法分析器調(diào)用?試驗(yàn)二:語法分析器1一、試驗(yàn)?zāi)康陌盐兆陨隙碌恼Z法分析方法,構(gòu)造推測(cè)分析程序。二、試驗(yàn)內(nèi)容構(gòu)造試驗(yàn)一所給文法〔應(yīng)考慮改造〕的FIRST集合和FOLLOW集合;分析表;構(gòu)造推測(cè)分析的總控程序;三、試驗(yàn)設(shè)備及工具硬件:PCPentium100以上。VC++JAVA開發(fā)環(huán)境。四、試驗(yàn)提示現(xiàn)。由于推測(cè)分析是自上向下的分析方法,需將試驗(yàn)一中的文法改寫成無左遞歸和無左共因子的文法〔留意有陰影局部的規(guī)章:<程序>BEGIN語句表END.<語句表<語句表><語句><語句表后綴><語句表后綴>;<語句表>|ε<語句><賦值語句>︱<條件語句>︱<WHILE語句>︱<復(fù)合語句><賦值語句><變量>=<算術(shù)表達(dá)式><條件語句>IF關(guān)系表達(dá)式THEN語句ELSE語句><WHILE語句>WHILE<關(guān)系表達(dá)式>DO<語句><復(fù)合語句>BEGIN語句表>END<<算術(shù)表達(dá)式><項(xiàng)><算術(shù)表達(dá)式后綴><<算術(shù)表達(dá)式后綴>+<項(xiàng)><算術(shù)表達(dá)式后綴>|-<項(xiàng)算術(shù)表達(dá)式后綴>|ε<項(xiàng)><變量>|整數(shù)<關(guān)系表達(dá)式><算術(shù)表達(dá)式><關(guān)系運(yùn)算符><算術(shù)表達(dá)式><關(guān)系運(yùn)算符><︱==︱><變量>標(biāo)識(shí)符2.非終結(jié)符的內(nèi)碼表128開頭標(biāo)2-1。表2-1 非終結(jié)符和內(nèi)碼比照表內(nèi)碼非終結(jié)符內(nèi)碼非終結(jié)符內(nèi)碼非終結(jié)符128<程序>129<語句表>130<語句>131<語句表后綴>132<賦值語句>133<條件語句>134<WHILE語句>135<復(fù)合語句>136<變量>137<算術(shù)表達(dá)式>138<關(guān)系表達(dá)式>139<項(xiàng)>140<算術(shù)表達(dá)式后綴>141<關(guān)系運(yùn)算符>程序設(shè)計(jì)思想分析表中的出錯(cuò)用-1ε〔這種方法對(duì)語法識(shí)別沒有影響,但在語義分析和代碼生成時(shí),需區(qū)分是何種規(guī)章的右部。規(guī)章右部符號(hào)串編號(hào)及內(nèi)碼表示:規(guī)章右部符號(hào)串編號(hào)BEGIN語句表END.<語句><語句表后綴>

內(nèi)碼1 129 2 14 0130 131 0〔3〕;<語句表>151290〔4〕ε0〔5〕<賦值語句>1320〔6〕<條件語句>1330〔7〕<WHILE語句>1340〔8〕<復(fù)合語句>1350〔9〕<變量>=<算術(shù)表達(dá)式>13681370〔10〕IF<關(guān)系表達(dá)式>THEN<語句>ELSE<語句>31384130 1300〔11〕WHILE<關(guān)系表達(dá)式>DO<語句>61387130 〔12〕BEGIN<語句表>END112920〔13〕<項(xiàng)><算術(shù)表達(dá)式后綴>1391400〔14〕+<項(xiàng)><算術(shù)表達(dá)式后綴>9 139 140 0〔15〕-<項(xiàng)><算術(shù)表達(dá)式后綴>101391400〔16〕<變量>1360〔17〕整數(shù)160〔18〕<算術(shù)表達(dá)式><關(guān)系運(yùn)算符><算術(shù)表達(dá)式>1371411370〔19〕<110〔20〕==120〔21〕>130〔22〕標(biāo)識(shí)符170分析表和程序-1程序中直接用內(nèi)碼表示推測(cè)分析表,則該分析表還是很大的,可用(非終結(jié)符,終結(jié)符,規(guī)章號(hào))三元式表示;非終結(jié)符和終結(jié)符匹配時(shí),用規(guī)章號(hào)的規(guī)章推導(dǎo)。為〔非終結(jié)符,終結(jié)符,上定義的“程序”。五、試驗(yàn)要求設(shè)計(jì)要求FOLLOWLL(1)分析表;也可以編寫FIRST集合和FOLLOW集合以及LL(1)分析表的生成程序,通過輸入規(guī)章自行選擇。態(tài)變化及分析結(jié)果。關(guān)于設(shè)計(jì)性報(bào)告的書寫:和方法;分析有哪些可選方案,承受目前方案的緣由和理由;講明選擇了哪種語言進(jìn)展設(shè)計(jì),其優(yōu)勢(shì)在哪里;假設(shè)對(duì)算法有所改進(jìn)或思考,也請(qǐng)加以闡述;解釋在程序設(shè)計(jì)中承受的哪種數(shù)據(jù)構(gòu)造,其優(yōu)點(diǎn)是什么?較具體地畫出流程圖,對(duì)程序代碼加以注釋;對(duì)試驗(yàn)結(jié)果進(jìn)展分析,對(duì)存在問題提出改進(jìn)思路。六、試驗(yàn)類型設(shè)計(jì)性試驗(yàn)。七、試驗(yàn)學(xué)時(shí)3學(xué)時(shí)。八、考核方式5分,具體評(píng)分標(biāo)準(zhǔn)如下:5分:試驗(yàn)預(yù)備充分,上機(jī)準(zhǔn)時(shí),能獨(dú)立編寫和調(diào)試程序,結(jié)果正確,試驗(yàn)報(bào)告內(nèi)容齊全,格式標(biāo)準(zhǔn)。4分:試驗(yàn)預(yù)備良好,上機(jī)準(zhǔn)時(shí),能在教師指導(dǎo)下順當(dāng)編寫和調(diào)試程序,結(jié)果較正確,試驗(yàn)報(bào)告內(nèi)容比較齊全,格式比較標(biāo)準(zhǔn)。3分:試驗(yàn)預(yù)備較好,上機(jī)準(zhǔn)時(shí),根本完成試驗(yàn)任務(wù),試驗(yàn)報(bào)告內(nèi)容根本齊備,結(jié)果根本正確。2分:程序功能模塊根本完整,但沒有完成程序調(diào)試,無試驗(yàn)結(jié)果,提交了試驗(yàn)報(bào)告且有重大缺陷。1提交的試驗(yàn)報(bào)告有重大缺陷。0分:沒有參與試驗(yàn),沒有提交試驗(yàn)報(bào)告。試驗(yàn)三:語法分析器2一、試驗(yàn)?zāi)康陌盐兆韵露系恼Z法分析方法,構(gòu)造算符優(yōu)先分析程序。二、試驗(yàn)內(nèi)容FIRSTVTLASTVT集合;構(gòu)造優(yōu)先矩陣;構(gòu)造算符優(yōu)先分析的總控程序;試;三、試驗(yàn)設(shè)備及工具硬件:PCPentium100以上。VC++JAVA開發(fā)環(huán)境。四、試驗(yàn)說明合與分析表的構(gòu)造可以手工實(shí)現(xiàn),也可以編寫自動(dòng)生成程序。G(<賦值語句>):<賦值語句><變量>=<算術(shù)表達(dá)式><算術(shù)表達(dá)式><項(xiàng)>|<算術(shù)表達(dá)式>+<項(xiàng)>|<算術(shù)表達(dá)式>-<項(xiàng)><項(xiàng)><因式>|<項(xiàng)>*<因式>|<項(xiàng)>/<因式><因式><變量>|整數(shù)|〔<算術(shù)表達(dá)式>〕<變量>標(biāo)識(shí)符五、試驗(yàn)步驟FIRSTVTLASTVT集合;構(gòu)造算符優(yōu)先矩陣;編寫算符優(yōu)先分析程序;測(cè)試語句:price=perimeter*2+height*5/7result:=3*radius*(radius+2*height)其他錯(cuò)誤的語句寫出各句的分析過程中棧和輸入串的變化。六、試驗(yàn)類型驗(yàn)證性試驗(yàn)。七、試驗(yàn)學(xué)時(shí)3學(xué)時(shí)。八、考核方式5分,具體評(píng)分標(biāo)準(zhǔn)如下:5分:試驗(yàn)預(yù)備充分,上機(jī)準(zhǔn)時(shí),能獨(dú)立編寫和調(diào)試程序,結(jié)果正確,試驗(yàn)報(bào)告內(nèi)容齊全,格式標(biāo)準(zhǔn)。4分:試驗(yàn)預(yù)備良好,上機(jī)準(zhǔn)時(shí),能在教師指導(dǎo)下順當(dāng)編寫和調(diào)試程序,結(jié)果較正確,試驗(yàn)報(bào)告內(nèi)容比較齊全,格式比較標(biāo)準(zhǔn)。3分:試驗(yàn)預(yù)備較好,上機(jī)準(zhǔn)時(shí),根本完成試驗(yàn)任務(wù),試驗(yàn)報(bào)告內(nèi)容根本齊備,結(jié)果根本正確。2分:程序功能模塊根本完整,但沒有完成程序調(diào)試,無試驗(yàn)結(jié)果,提交了試驗(yàn)報(bào)告且有重大缺陷。1提交的試驗(yàn)報(bào)告有重大缺陷。0分:沒有參與試驗(yàn),沒有提交試驗(yàn)報(bào)告。九、思考題?LASTVTFIRSTFOLLOW集合有何異同?能否將自上而下和自下而上的分析方法結(jié)合使用?試驗(yàn)四:語義分析和中間代碼生成器一、試驗(yàn)?zāi)康陌盐照Z法制導(dǎo)翻譯方法,理解表達(dá)式的中間代碼生成的過程。二、試驗(yàn)內(nèi)容四元式序列。三、試驗(yàn)設(shè)備及工具硬件:PCPentium100以上。VC++JAVA開發(fā)環(huán)境。四、試驗(yàn)說明并報(bào)告源程序中的錯(cuò)誤,修改編譯程序某些變量的值。五、試驗(yàn)步驟在試驗(yàn)三所給文法中加上語義動(dòng)作;編寫語義分析和中間代碼生成程序;測(cè)試語句:price=perimeter*2+height*5/7result=3*radius*(radius+2*height)其他語句寫出分析各句后產(chǎn)生的四元式序列。六、試驗(yàn)類型驗(yàn)證性試驗(yàn)。七、試驗(yàn)學(xué)時(shí)3學(xué)時(shí)。八、考核方式5分,具體評(píng)分標(biāo)準(zhǔn)如下:5分:試驗(yàn)預(yù)備充分,上機(jī)準(zhǔn)時(shí),能獨(dú)立編寫和調(diào)試程序,結(jié)果正確,試驗(yàn)報(bào)告內(nèi)容齊全,格式標(biāo)準(zhǔn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論