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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PAGE -PAGE 8-昆明理工大學信息工程與自動化學院(xuyun)學生實驗報告( 2012 2013 學年(xunin) 第 1 學期(xuq) )課程名稱:編譯原理 開課實驗室: 信自樓44 年月 日年級、專業(yè)、班學號姓名成績實驗項目名稱簡單樣本語言的詞法分析器指導教師李亞教師評語該同學是否了解實驗原理:A.了解B.基本了解C.不了解該同學的實驗能力:A.強 B.中等 C.差 該同學的實驗是否達到要求:A.達到B.基本達到C.未達到實驗報告是否規(guī)范:A.規(guī)范B.基本規(guī)范C.不規(guī)范實驗過程是否詳細記錄:A.詳細B.一般 C.沒有 教師簽名: 年 月 日一、實驗目的及內容設計、編制、調試一

2、個詞法分析子程序識別單詞,加深對詞法分析原理的理解。二、實驗原理及基本技術路線圖(方框原理圖或程序流程圖)對給定的程序通過詞法分析器弄夠識別一個個單詞符號,并以二元式(單詞種別碼,單詞符號的屬性值)顯示。而本程序則是通過對給定路徑的文件的分析后以單詞符號和文字提示顯示。三、所用儀器、材料(設備名稱、型號、規(guī)格等或使用軟件)Windows下的visual c+6.0;四、實驗方法、步驟(或:程序代碼或操作過程)#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)/關鍵字判斷(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$關鍵字endl;elsecoutarrt$普通標識符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$無符號(fho)實數(shù)endl;else switch(ch)case+:case- :case* :case= :case/ :coutcht$運算符endl;break;case( :case) :case :case :case; :case. :case, :case :case :coutcht$界符endl;break;case: :ch=fgetc(fpin);if(ch=) cout:=t$運算符endl;else cout=t$運算符

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

7、30;FILE * fpin;coutin_fn;if(fpin=fopen(in_fn,r)!=NULL) break;else cout文件路徑錯誤!請輸入(shr)源文件名(包括路徑和后綴名):;coutn*分析如下*endl;analyse(fpin);fclose(fpin);五、實驗過程原始記錄( 測試數(shù)據(jù)、圖表、計算等)源程序為:# 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;六、實驗結果、分析(fnx)和結論(誤差分析與數(shù)據(jù)處理、成果(chnggu)總結等。其中,繪制曲線圖時必須用計算紙或程序運行結果、改進(gijn)、收獲)詞法分析器主要特點是不依靠語法,而只依靠詞法,即處理一個單詞時不依賴于外部單詞的信息,因此詞法分析器一般都很簡單。語法分析時,調用詞法分析器,根據(jù)已知文法利用遞歸向下分析,檢查語法錯誤。在分析時,一是把詞法分析器當成語法分析的一部分,另一種是把詞法分析器當成編譯程序的獨立部分。在前一種情況下,詞法分析器不斷地被語法分析器調用,每調用一次詞法分析器將從源程序的字符序列拼出一個單詞,并將其Token值返回給語法分析器。后一種情況則不同,詞法分析器不是被語法分析器不斷地調用,而是一次掃描全部單詞完成編譯器的獨立一遍任務。這次實驗剛開始我的時候我是對照課本先把代碼輸入,編譯的時候只有很少的錯誤,很快我就把錯誤修改正確,在連接的時候,有錯誤,我還沒講要分析的文件名寫入,寫入后運行正確。這從實驗學到了很多知識,對詞法分析器有了很多了解。注:教師必須按照上述各項內容嚴格要求,認真批改和評定學生成績。內容總結(1)昆明理工大學信息工程與自動化學院學生實驗報告( 2012 2013 學年 第

溫馨提示

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

評論

0/150

提交評論