編譯原理 簡(jiǎn)單樣本語言的詞法分析器(共7頁)_第1頁
編譯原理 簡(jiǎn)單樣本語言的詞法分析器(共7頁)_第2頁
編譯原理 簡(jiǎn)單樣本語言的詞法分析器(共7頁)_第3頁
編譯原理 簡(jiǎn)單樣本語言的詞法分析器(共7頁)_第4頁
編譯原理 簡(jiǎn)單樣本語言的詞法分析器(共7頁)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、PAGE -PAGE 8-昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院(xuyun)學(xué)生實(shí)驗(yàn)報(bào)告( 2012 2013 學(xué)年(xunin) 第 1 學(xué)期(xuq) )課程名稱:編譯原理 開課實(shí)驗(yàn)室: 信自樓44 年月 日年級(jí)、專業(yè)、班學(xué)號(hào)姓名成績(jī)實(shí)驗(yàn)項(xiàng)目名稱簡(jiǎn)單樣本語言的詞法分析器指導(dǎo)教師李亞教師評(píng)語該同學(xué)是否了解實(shí)驗(yàn)原理:A.了解B.基本了解C.不了解該同學(xué)的實(shí)驗(yàn)?zāi)芰Γ篈.強(qiáng) B.中等 C.差 該同學(xué)的實(shí)驗(yàn)是否達(dá)到要求:A.達(dá)到B.基本達(dá)到C.未達(dá)到實(shí)驗(yàn)報(bào)告是否規(guī)范:A.規(guī)范B.基本規(guī)范C.不規(guī)范實(shí)驗(yàn)過程是否詳細(xì)記錄:A.詳細(xì)B.一般 C.沒有 教師簽名: 年 月 日一、實(shí)驗(yàn)?zāi)康募皟?nèi)容設(shè)計(jì)、編制、調(diào)試一

2、個(gè)詞法分析子程序識(shí)別單詞,加深對(duì)詞法分析原理的理解。二、實(shí)驗(yàn)原理及基本技術(shù)路線圖(方框原理圖或程序流程圖)對(duì)給定的程序通過詞法分析器弄夠識(shí)別一個(gè)個(gè)單詞符號(hào),并以二元式(單詞種別碼,單詞符號(hào)的屬性值)顯示。而本程序則是通過對(duì)給定路徑的文件的分析后以單詞符號(hào)和文字提示顯示。三、所用儀器、材料(設(shè)備名稱、型號(hào)、規(guī)格等或使用軟件)Windows下的visual c+6.0;四、實(shí)驗(yàn)方法、步驟(或:程序代碼或操作過程)#include #includeusing namespace std;#defineMAX 22char ch = ;string key15=begin,end,if,then,el

3、se,while,write,read,do, call,const,char,until,procedure,repeat;int Iskey(string c)/關(guān)鍵字判斷(pndun)int i;for(i=0;iMAX;i+) if(pare(c)=0) return 1;return 0;int IsLetter(char c) /判斷是否(sh fu)為字母if(c=a)|(c=A) return 1;else return 0;int IsDigit(char c)/判斷是否(sh fu)為數(shù)字if(c=0&c=9) return 1;else return 0;void ana

4、lyse(FILE *fpin)string arr=;while(ch=fgetc(fpin)!=EOF) arr=;if(ch= |ch=t|ch=n)else if(IsLetter(ch)while(IsLetter(ch)|IsDigit(ch) if(ch=A) ch=ch+32;arr=arr+ch;ch=fgetc(fpin);fseek(fpin,-1L,SEEK_CUR);if (Iskey(arr)coutarrt$關(guān)鍵字endl;elsecoutarrt$普通標(biāo)識(shí)符endl;else if(IsDigit(ch)while(IsDigit(ch)|ch=.&IsDigi

5、t(fgetc(fpin)arr=arr+ch;ch=fgetc(fpin);fseek(fpin,-1L,SEEK_CUR);coutarrt$無符號(hào)(fho)實(shí)數(shù)endl;else switch(ch)case+:case- :case* :case= :case/ :coutcht$運(yùn)算符endl;break;case( :case) :case :case :case; :case. :case, :case :case :coutcht$界符endl;break;case: :ch=fgetc(fpin);if(ch=) cout:=t$運(yùn)算符endl;else cout=t$運(yùn)算符

6、 :ch=fgetc(fpin);if(ch=) cout=t$運(yùn)算符)coutt$輸入(shr)控制符endl;else coutt$運(yùn)算符endl;fseek(fpin,-1L,SEEK_CUR);break;case :ch=fgetc(fpin);if(ch=)cout=t$運(yùn)算符endl;else if(ch=)coutt$輸出(shch)控制符) coutt$運(yùn)算符endl;elsecoutt$運(yùn)算符endl;fseek(fpin,-1L,SEEK_CUR);break;default : coutcht$無法識(shí)別(shbi)字符endl;void main()char in_fn

7、30;FILE * fpin;coutin_fn;if(fpin=fopen(in_fn,r)!=NULL) break;else cout文件路徑錯(cuò)誤!請(qǐng)輸入(shr)源文件名(包括路徑和后綴名):;coutn*分析如下*endl;analyse(fpin);fclose(fpin);五、實(shí)驗(yàn)過程原始記錄( 測(cè)試數(shù)據(jù)、圖表、計(jì)算等)源程序?yàn)椋? include int main()double r,s,h,v;printf(r,h=?);scanf(%lf,%lf,&r,&h);s=3.1415926*r*r;v=s*h;printf(r=%.2f,s=%.2f,h=%.2f,v=%.2fn

8、n,r,s,h,v);return 0;六、實(shí)驗(yàn)結(jié)果、分析(fnx)和結(jié)論(誤差分析與數(shù)據(jù)處理、成果(chnggu)總結(jié)等。其中,繪制曲線圖時(shí)必須用計(jì)算紙或程序運(yùn)行結(jié)果、改進(jìn)(gijn)、收獲)詞法分析器主要特點(diǎn)是不依靠語法,而只依靠詞法,即處理一個(gè)單詞時(shí)不依賴于外部單詞的信息,因此詞法分析器一般都很簡(jiǎn)單。語法分析時(shí),調(diào)用詞法分析器,根據(jù)已知文法利用遞歸向下分析,檢查語法錯(cuò)誤。在分析時(shí),一是把詞法分析器當(dāng)成語法分析的一部分,另一種是把詞法分析器當(dāng)成編譯程序的獨(dú)立部分。在前一種情況下,詞法分析器不斷地被語法分析器調(diào)用,每調(diào)用一次詞法分析器將從源程序的字符序列拼出一個(gè)單詞,并將其Token值返回給語法分析器。后一種情況則不同,詞法分析器不是被語法分析器不斷地調(diào)用,而是一次掃描全部單詞完成編譯器的獨(dú)立一遍任務(wù)。這次實(shí)驗(yàn)剛開始我的時(shí)候我是對(duì)照課本先把代碼輸入,編譯的時(shí)候只有很少的錯(cuò)誤,很快我就把錯(cuò)誤修改正確,在連接的時(shí)候,有錯(cuò)誤,我還沒講要分析的文件名寫入,寫入后運(yùn)行正確。這從實(shí)驗(yàn)學(xué)到了很多知識(shí),對(duì)詞法分析器有了很多了解。注:教師必須按照上述各項(xiàng)內(nèi)容嚴(yán)格要求,認(rèn)真批改和評(píng)定學(xué)生成績(jī)。內(nèi)容總結(jié)(1)昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告( 2012 2013 學(xué)年 第

溫馨提示

  • 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)論