編譯原理的第一次實(shí)驗(yàn)內(nèi)容及要求_第1頁(yè)
編譯原理的第一次實(shí)驗(yàn)內(nèi)容及要求_第2頁(yè)
編譯原理的第一次實(shí)驗(yàn)內(nèi)容及要求_第3頁(yè)
編譯原理的第一次實(shí)驗(yàn)內(nèi)容及要求_第4頁(yè)
編譯原理的第一次實(shí)驗(yàn)內(nèi)容及要求_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(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)內(nèi)容及要求實(shí)驗(yàn)一 詞法分析器的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵蠹由顚?duì)狀態(tài)轉(zhuǎn)換圖的實(shí)現(xiàn)及詞法分析器的理解。熟悉詞法分析器的主要算法及實(shí)現(xiàn)過(guò)程。要求學(xué)生掌握詞法分析器的設(shè)計(jì)過(guò)程,并實(shí)現(xiàn)詞法分析。二、實(shí)驗(yàn)基本內(nèi)容給出一個(gè)簡(jiǎn)單語(yǔ)言的詞法規(guī)則,畫(huà)出狀態(tài)轉(zhuǎn)換圖,并依據(jù)狀態(tài)轉(zhuǎn)換圖編制出詞法分析程序,能從輸入的源程序中,識(shí)別出各個(gè)具有獨(dú)立意義的單詞,即基本保留字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、分隔符五大類(lèi)。并依次輸出各個(gè)單詞的內(nèi)部編碼及單詞符號(hào)自身值。(遇到錯(cuò)誤時(shí)可顯示“error”,然后跳過(guò)錯(cuò)誤部分繼續(xù)顯示)詞法規(guī)則如下:?jiǎn)卧~符號(hào)種別碼內(nèi)碼單詞符號(hào)種別碼內(nèi)碼auto101long121break102ne

2、w122case103operator123char104private124class105protected125const106public126continue107register127default108return128delete109short129do110sizeof130double111static131else112struct132enum113switch133extern114template134float115this135for116typedef136friend117union137if118virtual138inline119void139int

3、120while140單詞符號(hào)種別碼內(nèi)碼單詞符號(hào)種別碼內(nèi)碼201,234202235*203·236/204237%205238206(239207)240208:241209242210243211#244212;245!213標(biāo)識(shí)符300&&214常數(shù)400二進(jìn)制形式|215!216217218219|220221&222223224225*226227%228229230&231232|233三、實(shí)驗(yàn)時(shí)間:上機(jī)三次。第一次按照自己的思路設(shè)計(jì)一個(gè)程序。第二、三次在理論課學(xué)習(xí)后修改程序,使得程序結(jié)構(gòu)更加合理。四、實(shí)驗(yàn)過(guò)程和指導(dǎo):(一)準(zhǔn)備:1.閱讀課

4、本有關(guān)章節(jié)(c/c+,數(shù)據(jù)結(jié)構(gòu)),花一周時(shí)間明確語(yǔ)言的語(yǔ)法,寫(xiě)出基本算法以及采用的數(shù)據(jù)結(jié)構(gòu)和要測(cè)試的程序例。2.初步編制好程序。3.準(zhǔn)備好多組測(cè)試數(shù)據(jù)。(二)上課上機(jī):將源代碼拷貝到機(jī)上調(diào)試,發(fā)現(xiàn)錯(cuò)誤,再修改完善。(300,”main”)(239,”(“)(240,”)“)(242,”“(120,”int”)(300,”a”)(234,”,”)(300,”b”)(245,”;”)(300,”a”)(223,”=”)(400,”1010”)(245,”;”)(300,”b”)(223,”=”)(300,”a”)(201,”+”)(400,”10100”)(245,”;”)(243,”“)(三)程

5、序要求:程序輸入/輸出示例:輸入如下一段:main()/* 一個(gè)簡(jiǎn)單的c+程序*/int a,b; /定義變量a = 10; b = a + 20;要求輸出如右圖。要求:(1) 剔除注解符(2) 常數(shù)為無(wú)符號(hào)整數(shù)(可增加實(shí)型數(shù),字符型數(shù)等)(四)練習(xí)該實(shí)驗(yàn)的目的和思路:程序開(kāi)始變得復(fù)雜起來(lái),可能是大家以前編過(guò)的程序中最復(fù)雜的,但相對(duì)于以后的程序來(lái)說(shuō)還是簡(jiǎn)單的。因此要認(rèn)真把握這個(gè)過(guò)渡期的練習(xí)。程序規(guī)模大概為200行及以上。通過(guò)練習(xí),掌握對(duì)字符進(jìn)行靈活處理的方法。(五)為了能設(shè)計(jì)好程序,注意以下事情:1.模塊設(shè)計(jì):將程序分成合理的多個(gè)模塊(函數(shù)/類(lèi)),每個(gè)模塊(類(lèi))做具體的同一事情。2.寫(xiě)出(畫(huà)出

6、)設(shè)計(jì)方案:模塊關(guān)系簡(jiǎn)圖、流程圖、全局變量、函數(shù)接口等。3.編程時(shí)注意編程風(fēng)格:空行的使用、注釋的使用、縮進(jìn)的使用等。4程序設(shè)計(jì)語(yǔ)言不限,建議使用面向?qū)ο蠹夹g(shù)及可視化編程語(yǔ)言,如c+,vc,java,vj+等。四、上交:1.程序源代碼及可執(zhí)行文件(當(dāng)堂檢查/通過(guò)網(wǎng)絡(luò)提交);2.已經(jīng)測(cè)試通過(guò)的測(cè)試數(shù)據(jù)3組(全部存在一個(gè)文本文件中,以“第一組輸入/輸出/第二組輸入/輸出/第三組輸入/輸出”的順序存放);3.實(shí)驗(yàn)報(bào)告按照提供的模板填寫(xiě):(1) 功能描述:該程序具有什么功能?(2) 算法描述:所采用的數(shù)據(jù)結(jié)構(gòu),基本實(shí)現(xiàn)算法及某些特殊過(guò)程的實(shí)現(xiàn)算法(如在處理某個(gè)問(wèn)題時(shí),你所采取的好的處理方法等)注意此處

7、不要簡(jiǎn)單的將源程序抄上來(lái)。(源程序?qū)⒋蛴〕鰜?lái)作為附錄)(3) 程序結(jié)構(gòu)描述:函數(shù)調(diào)用格式、參數(shù)含義、返回值描述、函數(shù)功能;另外可以附加函數(shù)之間的調(diào)用關(guān)系圖、程序總體執(zhí)行流程圖及類(lèi)的層次圖。(4) 實(shí)驗(yàn)總結(jié):你在編程過(guò)程中花時(shí)多少?多少時(shí)間在紙上設(shè)計(jì)?多少時(shí)間上機(jī)輸入和調(diào)試?多少時(shí)間在思考問(wèn)題?遇到了哪些難題?你是怎么克服的?你對(duì)你的程序的評(píng)價(jià)?你的收獲有哪些?(5) 寫(xiě)出上機(jī)調(diào)試時(shí)發(fā)現(xiàn)的問(wèn)題,以及解決的過(guò)程;(6) 附上源程序(打印的)五、問(wèn)題描述及基本算法提示1 狀態(tài)轉(zhuǎn)換圖的實(shí)現(xiàn)讓每個(gè)結(jié)點(diǎn)對(duì)應(yīng)一小段程序。 需引進(jìn)一組全局變量和過(guò)程 (1)ch 字符變量,存放最新讀進(jìn)的源程序字符。(2)str

8、token 字符數(shù)組,存放構(gòu)成單詞符號(hào)的字符串。 (3)getchar 子程序過(guò)程,將下一輸入字符讀到ch中,搜索指示器前移一字符位置。 (4)getbc 子程序過(guò)程,檢查ch中字符是否為空白。若是,則調(diào)用getchar直至ch中進(jìn)入一個(gè)非空白字符。(5)concat 子程序過(guò)程,將ch中的字符連接到strtoken之后。例如, 假定strtoken 原來(lái)的值為“ab”,而ch中存放著c,經(jīng)調(diào)用concat后,strtoken的值就變?yōu)椤盿bc”。(6)isletter和isdigit 布爾函數(shù)過(guò)程,它們分別判斷ch中的字符是否為字母和數(shù)字。(7)reserve 整型函數(shù)過(guò)程,對(duì)strtoke

9、n中的字符找保留字表,若它是一個(gè)保留字,則返回它的編碼,否則返回0值。(8)retract 子程序過(guò)程,將搜索指示器回調(diào)一個(gè)字符位置,將ch置為空白字符。(9)insertid 整型函數(shù)過(guò)程,將strtoken中的標(biāo)識(shí)符插入符號(hào)表,返回符號(hào)表指針。(10)insertconst 整型函數(shù)過(guò)程,將strtoken中的常數(shù)插入常數(shù)表,返回常數(shù)表指針。2詞法分析器構(gòu)造基本算法int code,value;strtoken:=“”; 置strtoken為空串getchar();getbc();if (isletter()begin while (isletter() or isdigit() begi

10、n concat();getchar(); end retract(); code : = reserve(); if(code = 0) begin value : = insertid(strtoken); return($id,value); end else return(code,-);endelse if (isdigit()begin while(isdigit() begin concat();getchar(); end retract(); value : = insertconst(strtoken); returnr($int,value);endelse if (ch = = ) retutn($assign,-);else if (ch = +) return ($plus,-);else if (ch =*)begin getchar(); if (ch = *) return ($power,-); retract() ; return ($star,-);endelse if (ch = ;) return ($semico

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論