版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理實驗報告實驗名稱:編寫詞法分析程序?qū)嶒烆愋停候炞C型實驗指導(dǎo)教師:何 中 勝專業(yè)班級:09軟件Y姓 名:徐裕學(xué) 號:09123132電子郵件:564747336實驗地點:秋白樓B720實驗成績: 日期:2012年 4 月18 日一、實驗?zāi)康耐ㄟ^設(shè)計。測試詞法分析器程序,實現(xiàn)從源程序中分出各種單詞的方法,熟悉詞法分析程序中的工具自動機,進(jìn)一步理解自動機理論,掌握文法轉(zhuǎn)換成自動機的技術(shù)及有窮自動機實現(xiàn)的方法。通過本實驗,應(yīng)達(dá)到以下目標(biāo):1、掌握從源程序文件中讀取有效字符的方法和產(chǎn)生源程序的內(nèi)容表達(dá)式的方法2、掌握詞法分析的試驗方法3、上機測試編出的詞法分析程序二、實驗過程1.首先建好關(guān)鍵字表
2、,分界符表和運算符表。指針數(shù)組k為關(guān)鍵字表,每個數(shù)組元素存放一個關(guān)鍵字。采用不定長的方式。 指針數(shù)組P存放分界符。為了簡單起見,分界符、算術(shù)運算符和關(guān)系運算符都放在p表中,合并成一類。2.instring 數(shù)組為輸入源程序和輸出單詞的單詞緩存。3.詞法分析過程根據(jù)從文件讀到的第一個字符(有時還需讀第二個字符),判斷單詞類,產(chǎn)生類號:以字符1表示關(guān)鍵字;2表示標(biāo)識符;3 表示常數(shù);4 表示分界符;5 表示運算符。4.根據(jù)第一個字符來寫出相應(yīng)的處理程序和順序,流程圖如下:5.編寫程序。三、實驗結(jié)果1. 運行程序前先建好一個文本文件(09123132.txt),假如內(nèi)容如圖所示。2.運行程序,分析結(jié)
3、果在dos中顯示,每一個詞都按要求被分析出來,并把每個詞的類型也打印出來,如下圖所示:四、討論與分析實驗內(nèi)容我通過上網(wǎng)查找各種資料,并逐步的了解題目的要求,之后在編寫上面,關(guān)鍵字處理、標(biāo)識符和數(shù)字處理代碼寫的比較順,但是還是在各種符號上面吃虧,程序并不是預(yù)期的,經(jīng)過幾次更改后,實驗達(dá)到了要求,程序全部寫完。五、附錄:關(guān)鍵代碼(給出適當(dāng)注釋,可讀性高)void main()void lexical(FILE *FP);int i;FILE *fp; /指針/printf(請創(chuàng)建k表:n); / 創(chuàng)建k表k0=BEGIN;k1=DO;k2=ELSE; k3=END;k4=IF;k5=THEN;k6
4、=VAR;k7=WHILE;/printf(請創(chuàng)建p表:n); / 創(chuàng)建p表p0=,;p1=;p2=.;p3=:=;p4=(;p5=);p6=+;p7=-;p8=*;p9=/;p10=;p11=;p14=;p15=;if(fp=fopen(09123132.txt,r)=NULL) /讀取文件夾下的文件printf(Cannot open the filen);exit(0);char ch,ch1; int n=0;ch1=ch=fgetc(fp);doif(ch1=a & ch1=A & ch1=a & ch=A & ch=0 & ch=9)instringn+=ch;elseinstri
5、ngn+=0;strupr(instring);for(i=0;i=7;i+)if(strcmp(instring,ki)=0) break;if(i=0 & ch1=0 & ch=a & ch=A & ch=Z)instringn+=ch;printf(error!t);puts(instring);n=0;ch=fgetc(fp);ch1=ch;instringn+=ch1;elseinstringn+=0;printf(%dt,type);puts(instring);n=0;ch1=ch;instringn+=ch1;elsetype=4; /處理其他if(ch1= | ch1=n |
6、 ch1=t)n=0;ch1=ch;instringn+=ch1;elseif(ch1=:)if(ch=)instringn+=ch;instringn=0;printf(%dt,type);puts(instring);ch=fgetc(fp);n=0;ch1=ch;instringn+=ch1;elseinstringn=0;printf(error!t);puts(instring);n=0;ch1=ch;instringn+=ch1;elseif(ch1=)instringn+=ch;instringn=0;puts(instring);ch=fgetc(fp);n=0;ch1=ch;
7、instringn+=ch1;elseinstringn=0;puts(instring);n=0;ch1=ch;instringn+=ch1;elseif(ch1=)type=5;printf(%dt,type);if(ch=)instringn+=ch;instringn=0;puts(instring);ch=fgetc(fp);n=0;ch1=ch;instringn+=ch1;elseinstringn=0;puts(instring);n=0;ch1=ch;instringn+=ch1;elseinstringn=0;for(i=0;i=15;i+)if(strcmp(instring,pi)=0)break;if(i=5)type=4;else if(i=15)type=5;printf(%dt,type);puts(instring);n=0;ch1=ch;instringn+=ch1;ch=fgetc(fp);while(!feof(fp);if(ch1= | ch1=n | ch1=t);elseinstringn=0;printf(%dt,type);puts(inst
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024酒店專用鮮肉訂購協(xié)議模板
- 2024年秋冬服裝系列代言協(xié)議
- 2024專業(yè)店鋪租賃承包協(xié)議
- 創(chuàng)業(yè)伙伴2024年項目合作協(xié)議
- 2024年家居定制服務(wù)全流程協(xié)議模板
- 二手房交易中介服務(wù)個性化協(xié)議
- 育強國建設(shè)背景下的義務(wù)教育公共服務(wù)治理體系構(gòu)建路徑
- 數(shù)字化轉(zhuǎn)型與義務(wù)教育治理策略
- 2024年環(huán)保型木屑批量采購協(xié)議
- 2024年國際貨物交易協(xié)議商談細(xì)節(jié)
- 《語言學(xué)綱要》修訂版課后練習(xí)題
- 甲狀腺癌術(shù)后并發(fā)癥護理
- 2022年《江蘇省機動車維修費用結(jié)算清單》格式
- 數(shù)字媒體技術(shù)專業(yè)群建設(shè)方案
- 機械畢業(yè)設(shè)計(PLC的恒溫箱控制系統(tǒng)設(shè)計)
- 簡述火力發(fā)電廠生產(chǎn)過程課件
- 砷環(huán)境地球化學(xué)研究進(jìn)展
- 06竣工財務(wù)決算審計工作底稿(試行)
- 化驗室化學(xué)試劑分類清單(參考模板)
- 三教”統(tǒng)一、和諧發(fā)展促進(jìn)學(xué)生健康成長的有效方式
- 材料成型概論 第四章 擠壓成型
評論
0/150
提交評論