編譯實(shí)習(xí)-詞法分析

編譯實(shí)習(xí)-詞法分析

ID:6651884

大?。?56.26 KB

頁(yè)數(shù):13頁(yè)

時(shí)間:2018-01-21

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

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

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

2、以“#”為結(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的輸入,將其轉(zhuǎn)換為char類型的數(shù)組,用s保研,即char*s=m_EnterString.GetBuffer(),再將s中的內(nèi)容以文件形式保存于D盤test.txt中,即:ofstreamoutfile;intx=0;outfile.open("D:\test.t

3、xt");while(s[x]!='#'){outfile<

4、tLength(),arr.c_str());m_OutputString.Insert(m_OutputString.GetLength(),"1r");1.3.3待分析的簡(jiǎn)單的詞法(1)關(guān)鍵字:beginendifthenelsewhiledointchar(2)標(biāo)識(shí)符和數(shù)字(3)運(yùn)算符+-*/=:=<<=<<<>>>=>>(4)界限符{}[]'();,(5)結(jié)束符#1.3.4各種單詞符號(hào)對(duì)應(yīng)的類別碼單詞符號(hào)類別碼單詞符號(hào)類別碼begin1<18end2<=19if3<<20then4<>21else5>22while6>=23do7>>24int8(25char9)26標(biāo)識(shí)符

5、10{27常數(shù)11}28+12'29-13;30*14,31/15[32=16]33:=17#0121.設(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_EnterString.GetBuffer():用于將輸入的Cstring類型轉(zhuǎn)換為字符數(shù)組類型,以存入文件中ofstreamoutfile:用于將源程序?qū)懭胛募﨔ILE*fpin:用于讀取文件內(nèi)容,即源程序界面數(shù)據(jù)結(jié)構(gòu):IDC_STATIC1(Group

6、-boxControl)放輸入框的框IDC_STATIC2(Group-boxControl)放輸出框的框IDC_EDIT1(EditControl)輸入編輯框IDC_EDIT2(EditControl)輸出編輯框IDOK(ButtonControl)確定按鈕IDCANCEL(ButtonControl)取消按鈕IDD_CIFA_DIALOG(Dialog)整個(gè)界面框12界面如下圖所示:2.2.算法及程序流程圖2.2.1算法設(shè)計(jì):算法的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意思的單詞符號(hào),無(wú)獨(dú)立意義的字符視為錯(cuò)誤字符,基本思想是根據(jù)掃描到單詞符號(hào)的第一個(gè)字符的各類,拉出相應(yīng)的單詞

7、符號(hào),根據(jù)字符與類別碼對(duì)應(yīng)表,找到相應(yīng)的類別碼并輸出,具體見(jiàn)流程圖。122.2.1程序流程圖如下:YNN開(kāi)始輸入源程序txt格式在于D盤打開(kāi)已存儲(chǔ)的文件初始化文件指針是#?識(shí)別指針內(nèi)容結(jié)束YN空/換行?指向下一個(gè)字符YN字母?數(shù)字?界符?YN將字符加入arr指向下一個(gè)字符字母/數(shù)字?Y將arr與key中項(xiàng)比較匹配?根據(jù)返回值輸出arr與其類別碼指向下一字符標(biāo)識(shí)符N加入arr指下個(gè)字符數(shù)字?Y輸出arr類別碼為11N輸出ch為界符相應(yīng)

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(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)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。