【精品】編譯實(shí)習(xí)-詞法分析

【精品】編譯實(shí)習(xí)-詞法分析

ID:43601923

大小:953.08 KB

頁數(shù):17頁

時(shí)間:2019-10-11

【精品】編譯實(shí)習(xí)-詞法分析_第1頁
【精品】編譯實(shí)習(xí)-詞法分析_第2頁
【精品】編譯實(shí)習(xí)-詞法分析_第3頁
【精品】編譯實(shí)習(xí)-詞法分析_第4頁
【精品】編譯實(shí)習(xí)-詞法分析_第5頁
資源描述:

《【精品】編譯實(shí)習(xí)-詞法分析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、實(shí)習(xí)—-三四五六七八九十總評(píng)教師簽名成績(jī)《編譯原理》課程實(shí)習(xí)報(bào)告編號(hào):實(shí)習(xí)題冃:詞法分析器專業(yè)(班):學(xué)生學(xué)號(hào):學(xué)生姓名:任課教師:2010年12月29日1?問題定義和分析1.1實(shí)習(xí)口的1.2實(shí)習(xí)要求1.3要求分析2.程序設(shè)計(jì)2.1.數(shù)據(jù)結(jié)構(gòu)2.2.算法及程序流程圖2.3.界面程序運(yùn)行實(shí)例3.1實(shí)例13.2實(shí)例23.3實(shí)例33.4實(shí)例43.5非合法詞法輸入4.部分程序核心源代碼5?總結(jié)1?問題定義與分析1.1實(shí)習(xí)目的構(gòu)造一個(gè)小語言的詞法分析程序。1.2實(shí)習(xí)耍求(1)設(shè)計(jì)一個(gè)包含簡(jiǎn)單算術(shù)表達(dá)式、賦值語句、IF語句的小語言的文法。(2)

2、根據(jù)此文法,構(gòu)造一詞法分析程序。輸入以“#”為結(jié)束符的源程序,輸岀為各類單詞表和單詞串文件。(3)源程序和輸出的單詞串均以文件的形式存放。單詞的口身值均為其對(duì)應(yīng)的表的指針,如標(biāo)識(shí)符表的指針、常數(shù)表的指針等。(4)提交:實(shí)習(xí)報(bào)告、程序運(yùn)行結(jié)果。1.3要求分析1.3.1輸入部分輸入為文法源程序,定義CString類型變量m_EnterString,川于獲取編輯框1的輸入,將H轉(zhuǎn)換為char類型的數(shù)纟H.,用s保研,RPchar*s=m_EnterString.GetBuffer(),再將s中的內(nèi)容以文件形式保存于D盤test.Dd中,即

3、:ofstreamoutfile;intx=0;outfile.open("D:\test.txt");while(s[x]!='#'){outfile?s[x];x++;}outfile?s[x];outfilc.closcO;到此,以將輸入的內(nèi)容保存到D:\test.txtol.3.2輸出部分輸出為字符串與其的對(duì)應(yīng)的種別碼,對(duì)于不能識(shí)別的符號(hào),輸出為wrongsymbolo定義CString類型變量m_OutputString,用于輸出詞法分析結(jié)果到編輯框2,用如下函數(shù)給m.OutputString添加輸出內(nèi)容,如下即為當(dāng)所

4、識(shí)別的內(nèi)容為關(guān)鍵字begin時(shí)將begin與其種別碼添入的代碼:m_OutputString.Insert(m_OutputString.GetLength(),arr.c_str());m_OutputString.Insert(m_OutputString.GetLength(),Hlrn);1.3.3待分析的簡(jiǎn)單的詞法(1)關(guān)鍵字:beginendifthenelsewhiledointchar(2)標(biāo)識(shí)符和數(shù)字(3)運(yùn)算符+*/=:=<<=?<>>>=?(4)界限符{}[1();,(5)結(jié)束符#1.3.4各種單詞符號(hào)對(duì)

5、應(yīng)的類別碼單詞符號(hào)類別碼單詞符號(hào)類別碼begin1V18end2<=19if3?20then4<>21else5>22while6>=23do7?24int8(25char9)26標(biāo)識(shí)符10{27常數(shù)11}28+12I29-13■30*1431/15[32=16]33■?—17#02.設(shè)計(jì)2.1數(shù)據(jù)結(jié)構(gòu)定義了以下字符串類型數(shù)據(jù):CStringm_EnterString:用于接受編輯框1輸入的源程序CStringm_OutputString;:用于保存輸出到編輯框2的內(nèi)容,即單詞符號(hào)與其對(duì)應(yīng)的類別碼char*s=m_EnterStri

6、ng.GetBuffer():用于將輸入的Cstring類型轉(zhuǎn)換為字符數(shù)組類型,以存入文件屮ofstreamoutfile:用于將源程序?qū)懭胛募﨔ILE*fpin:用于讀取文件內(nèi)容,即源程序界面數(shù)據(jù)結(jié)構(gòu):IDC_STATIC1(Group-boxControl)放輸入框的框IDC_STATIC2(Group-boxControl)放輸出框的框IDC_EDIT1(EditControl)IDC_EDIT2(EditControl)IDOK(ButtonControl)IDCANCEL(ButtonControl)輸入編輯框輸出編輯框確

7、定按鈕取消按鈕界面如下圖所示:2.2.算法及程序流程圖2.2.1算法設(shè)計(jì):算法的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意思的單詞符號(hào),無獨(dú)立意義的字符視為錯(cuò)誤字符,基本思想是根據(jù)掃描到單詞符號(hào)的第一個(gè)字符的各類,拉出相應(yīng)的單詞符號(hào),根據(jù)字符與類別碼對(duì)應(yīng)表,找到相應(yīng)的類別碼并輸出,具體見流程圖。2.2.1程序流程圖如下:2.3.界面3.程序運(yùn)行實(shí)例3.1實(shí)例13.2實(shí)例21I+In二一n=begintls:^3.3實(shí)例3輸入:(以#結(jié)束)輸出:begininti=0;intj=3;intk⑸;do{k[i]:=j;}while

8、(i<=j);end#K27k10[33j10]34?■17?J10■9}3128while6(25i10<=19二j10)26?fend3120確定取消3.4實(shí)例4血詞法分一計(jì)科六班段勇輸入:(以#結(jié)束)輸出:beginintk=1

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。