實(shí)驗(yàn)一-詞法分析_第1頁(yè)
實(shí)驗(yàn)一-詞法分析_第2頁(yè)
實(shí)驗(yàn)一-詞法分析_第3頁(yè)
實(shí)驗(yàn)一-詞法分析_第4頁(yè)
實(shí)驗(yàn)一-詞法分析_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)一 詞法分析 一、實(shí)驗(yàn)?zāi)康模?通過(guò)本實(shí)驗(yàn)理解詞法分析的整個(gè)過(guò)程,處理對(duì)象和處理的結(jié)果,了解詞法分析在整個(gè)編譯過(guò)程中的作用。 二、實(shí)驗(yàn)學(xué)時(shí): 2學(xué)時(shí)。 三、實(shí)驗(yàn)內(nèi)容 根據(jù)給出的簡(jiǎn)單語(yǔ)言的詞法構(gòu)成規(guī)則和單詞集合,編制詞法分析程序,要求能用給定的簡(jiǎn)單語(yǔ)言書(shū)寫(xiě)的源程序進(jìn)行詞法分析,同時(shí)建立相應(yīng)的符號(hào)表文件存放正確的單詞。輸出分析結(jié)果于文件中,包括: (1) 正確的單詞符號(hào)及其單詞種類的序?qū)ΧM。 具體輸出形式為:二元組:(單詞種類,單詞內(nèi)碼值)單詞種類見(jiàn)五。 四、實(shí)驗(yàn)方法 構(gòu)造識(shí)別單詞集的自動(dòng)機(jī),編寫(xiě)程序?qū)崿F(xiàn)。 五、實(shí)驗(yàn)的處理單詞集 (注:?jiǎn)卧~種類統(tǒng)一分類如下:) 單詞

2、符號(hào)單詞種類任意變量名(以字母開(kāi)頭由字母和數(shù)字組成的符號(hào)串)0(1)234;5=6+7*8>9<10,1112整型常數(shù)(由數(shù)字組成的符號(hào)串)30main26int21if22then23else24return25其它100六、處理程序例和處理結(jié)果例 例1:源程序: main() y=x-1; 處理結(jié)果: (26,"main") (1,"(") (2,")") (3,"") (0,"y") (6,"=") (0,"x") (100,"

3、-") (20,"1") (5,"") (4,")") 例2:源程序 main() int a,b; b!=a-1; 處理結(jié)果: (26,"main") (1,"(") (2,")") (3,"" )(21,”int”) (0,"a") (11,",") (0,"b") (5,”;”) (0,"b")(100,"! ") (6,"=&qu

4、ot;) (0,"a") (100,"-") (30,"1") (5,”;”) (4,”)七、實(shí)驗(yàn)報(bào)告要求給出單詞識(shí)別的狀態(tài)轉(zhuǎn)換圖;帶有注釋(簡(jiǎn)單說(shuō)明)的源程序。程序運(yùn)行截圖,要求運(yùn)行結(jié)果內(nèi)有輸出自己的名字和學(xué)號(hào).源程序:#include <iostream>#include <string.h> /strcmp函數(shù)所需using namespace std;char token8;/關(guān)鍵字比較臨時(shí)存儲(chǔ)空間char ch;/每次輸入字符存儲(chǔ)char prog100=0;/所有的輸入存入int p=0;/計(jì)數(shù)變量

5、int syn;/關(guān)鍵字或其他代碼的數(shù)字標(biāo)號(hào)int n,i;char *keyword6="int","if","then","else","return","main"void scaner();void main()int select=-1;/選擇變量p=0;printf("輸入需要分析的語(yǔ)句, 以'#'結(jié)尾!n");do/將所有字符存入prog數(shù)組中ch=getchar();progp+=ch;while(ch!='#

6、9;);p=0;while (select!=2)printf("請(qǐng)輸入1 或 2 n 1.開(kāi)始詞法分析n 2.退出n");scanf("%d",&select);if(select=1) doscaner();switch(syn)case -1:printf("詞法分析 出錯(cuò)n");break;default :if (syn=-2)printf("語(yǔ)句結(jié)束!n");break;printf("< %d,%s >n",syn,token);break; while(syn

7、!=-2);printf("詞法分析 成功n");else continue;void scaner()for(n=0;n<10;n+)tokenn='0'n=0;ch=progp+;while(ch=' ')|(ch=int(13)|(ch=int(10)/排除空格和回車ch=progp+;if(ch>='a'&&ch<='z')|(ch>='A'&&ch<='Z')dotokenn+=ch;ch=progp+;wh

8、ile(ch>='a'&&ch<='z')|(ch>='A'&&ch<='Z')|(ch>='0'&&ch<='9');syn=0;for(n=0;n<6;n+)if(strcmp(token,keywordn)=0)/對(duì)輸入字符和關(guān)鍵字進(jìn)行比較syn=n+21;/對(duì)關(guān)鍵字標(biāo)號(hào)進(jìn)行輸出p-;else if(ch>='0'&&ch<='9')p-;dot

9、okenn+=progp+;ch=progp; while(ch>='0'&&ch<='9');syn=20;else/ch=progp+;switch(ch)case '(':syn=1;token0=ch;break;case ')':syn=2;token0=ch;break;case '':syn=3;token0=ch;break;case '':syn=4;token0=ch;break;case '':syn=5;token0=ch;brea

10、k;case '=':syn=6;token0=ch;break;case '+':syn=7;token0=ch;break;case '-':syn=100;token0=ch;break;case '*':syn=8;token0=ch;break;case '>':syn=9;token0=ch;ch=progp;/退格操作break;case '<':syn=10;token0=ch;ch=progp;break;case ',':syn=11;token0=ch;break;case '':syn=12;token0=ch;break;case '#':syn=-2;token0=ch;break;default: printf("詞法分析出錯(cuò)! 請(qǐng)檢查是否輸入非法字符n");syn=-1;break;截圖:狀態(tài)轉(zhuǎn)換圖0213756891011417空白字母或數(shù)字字母非字母與數(shù)字字?jǐn)?shù)字非數(shù)字字?jǐn)?shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論