版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗一 詞法分析 一、實驗目的: 通過本實驗理解詞法分析的整個過程,處理對象和處理的結(jié)果,了解詞法分析在整個編譯過程中的作用。 二、實驗學時: 2學時。 三、實驗內(nèi)容 根據(jù)給出的簡單語言的詞法構(gòu)成規(guī)則和單詞集合,編制詞法分析程序,要求能用給定的簡單語言書寫的源程序進行詞法分析,同時建立相應(yīng)的符號表文件存放正確的單詞。輸出分析結(jié)果于文件中,包括: (1) 正確的單詞符號及其單詞種類的序?qū)ΧM。 具體輸出形式為:二元組:(單詞種類,單詞內(nèi)碼值)單詞種類見五。 四、實驗方法 構(gòu)造識別單詞集的自動機,編寫程序?qū)崿F(xiàn)。 五、實驗的處理單詞集 (注:單詞種類統(tǒng)一分類如下:) 單詞符號單詞種類任意變量名(以
2、字母開頭由字母和數(shù)字組成的符號串)0(1)234;5=6+7*8>9<10,1112整型常數(shù)(由數(shù)字組成的符號串)30main26int21if22then23else24return25其它100六、處理程序例和處理結(jié)果例 例1:源程序: main() y=x-1; 處理結(jié)果: (26,"main") (1,"(") (2,")") (3,"") (0,"y") (6,"=") (0,"x") (100,"-") (20,
3、"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,"=") (0,"
4、;a") (100,"-") (30,"1") (5,”;”) (4,”)七、實驗報告要求給出單詞識別的狀態(tài)轉(zhuǎn)換圖;帶有注釋(簡單說明)的源程序。程序運行截圖,要求運行結(jié)果內(nèi)有輸出自己的名字和學號.源程序:#include <iostream>#include <string.h> /strcmp函數(shù)所需using namespace std;char token8;/關(guān)鍵字比較臨時存儲空間char ch;/每次輸入字符存儲char prog100=0;/所有的輸入存入int p=0;/計數(shù)變量int syn;/關(guān)鍵字或
5、其他代碼的數(shù)字標號int n,i;char *keyword6="int","if","then","else","return","main"void scaner();void main()int select=-1;/選擇變量p=0;printf("輸入需要分析的語句, 以'#'結(jié)尾!n");do/將所有字符存入prog數(shù)組中ch=getchar();progp+=ch;while(ch!='#');p=0;while
6、 (select!=2)printf("請輸入1 或 2 n 1.開始詞法分析n 2.退出n");scanf("%d",&select);if(select=1) doscaner();switch(syn)case -1:printf("詞法分析 出錯n");break;default :if (syn=-2)printf("語句結(jié)束!n");break;printf("< %d,%s >n",syn,token);break; while(syn!=-2);printf(
7、"詞法分析 成功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+;while(ch>=
8、39;a'&&ch<='z')|(ch>='A'&&ch<='Z')|(ch>='0'&&ch<='9');syn=0;for(n=0;n<6;n+)if(strcmp(token,keywordn)=0)/對輸入字符和關(guān)鍵字進行比較syn=n+21;/對關(guān)鍵字標號進行輸出p-;else if(ch>='0'&&ch<='9')p-;dotokenn+=progp+
9、;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;break;case '=
10、':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("詞法分析出錯! 請檢查是否輸入非法字符n");syn=-1;break;截圖:狀態(tài)轉(zhuǎn)換圖0213756891011417空白字母或數(shù)字字母非字母與數(shù)字字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)療設(shè)備維修合同
- 2025年倉儲租金費用合同
- 2025年家居和解協(xié)議書
- 2025年在線音樂電臺服務(wù)合約
- 2025年企業(yè)員工靈活用工管理服務(wù)合同
- 2025年分期付款游泳館會員購買合同
- 2025年度二零二五年度獼猴桃產(chǎn)業(yè)鏈金融服務(wù)平臺合作合同4篇
- 2025版小公司租車及車輛租賃售后服務(wù)合同2篇
- 二零二五版醫(yī)院康復病區(qū)承包服務(wù)協(xié)議2篇
- 二零二五年度木地板綠色環(huán)保材料采購合同4篇
- 光伏自發(fā)自用項目年用電清單和消納計算表
- 量子計算在醫(yī)學圖像處理中的潛力
- 阿里商旅整體差旅解決方案
- 浙江天臺歷史文化名城保護規(guī)劃說明書
- 邏輯思維訓練500題
- 第八講 發(fā)展全過程人民民主PPT習概論2023優(yōu)化版教學課件
- 實體瘤療效評價標準RECIST-1.1版中文
- 企業(yè)新春茶話會PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計算方法
- DIC診治新進展課件
- 公路工程施工現(xiàn)場安全檢查手冊
評論
0/150
提交評論