版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、集美大學(xué)實(shí)驗(yàn)報(bào)告課程名稱:編譯原理班級(jí):指導(dǎo)教師: 姓名: 實(shí)驗(yàn)項(xiàng)目編號(hào):實(shí)驗(yàn)三學(xué)號(hào):實(shí)驗(yàn)項(xiàng)目名稱:詞法分析器的設(shè)計(jì)實(shí)驗(yàn)成績(jī):一、實(shí)驗(yàn)?zāi)康?通過(guò)設(shè)計(jì)編制調(diào)試一個(gè)具體的詞法分析程序,加深對(duì)詞法分析原理的理解。并掌握在對(duì)程序設(shè)計(jì)語(yǔ)言源程序進(jìn)行掃描過(guò)程中將其分解為各類單詞的詞法分析方法。二、實(shí)驗(yàn)內(nèi)容編寫一個(gè)詞法分析器,從輸入的源程序(編寫的語(yǔ)言為C語(yǔ)言的一個(gè)子集)中,識(shí)別出各個(gè)具有獨(dú)立意義的單詞,即基本保留字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、分隔符五大類。并依次輸出各個(gè)單詞的內(nèi)部編碼及單詞符號(hào)自身值。(遇到錯(cuò)誤時(shí)可顯示“Error”,然后跳過(guò)錯(cuò)誤部分繼續(xù)顯示) 三、實(shí)驗(yàn)要求 1、 詞法分析器的功能和輸出格式詞
2、法分析器的功能是輸入源程序,輸出單詞符號(hào)。詞法分析器的單詞符號(hào)常常表示成以下的二元式(單詞種別碼,單詞符號(hào)的屬性值)。單詞示例單詞種別碼要求保留字if、else、int、while、do每個(gè)保留字的單詞種別都單獨(dú)為一種標(biāo)識(shí)符以字母開頭且包含字母和數(shù)字的字符串標(biāo)識(shí)符作為一種常數(shù)(只識(shí)別無(wú)符號(hào)整數(shù))123、343無(wú)符號(hào)整數(shù)作為一種運(yùn)算符+、-、*、/、=、= = 、!=、 、=、 、4分隔符,、;、(、)5本實(shí)驗(yàn)所使用的開發(fā)語(yǔ)言是C語(yǔ)言,在Test2類中定義了以下幾個(gè)函數(shù): 開始2.程序流程圖:讀入文件,把內(nèi)容存入string中,m=0,check=ture,error=falsech是分隔符?c
3、heck=false?error=ture?check=false?輸出str,標(biāo)識(shí)為標(biāo)示符check=ture輸出str,標(biāo)識(shí)為運(yùn)算符從string中讀出一個(gè)字符放入ch中結(jié)束ch是最后一個(gè)字符? Ych是運(yùn)算符? N Y Nerror=ture? N輸出str,標(biāo)識(shí)為無(wú)法識(shí)別的串check=ture,error=false Y Y N輸出str,標(biāo)識(shí)為無(wú)法識(shí)別的串check=ture,error=false Y N Y Y 輸出str,標(biāo)識(shí)為標(biāo)示符check=ture 輸出str,標(biāo)識(shí)為分隔符 N Nch是數(shù)字? NCh是字母?check=ture?check=ture? Y Y N N
4、N打印出錯(cuò)清空str,ch加到str中,check=falsech加到str中清空str,ch加到str中,check=false Y Ych加到str中ch是關(guān)鍵字?ch是數(shù)字? Y 輸出str,標(biāo)識(shí)為關(guān)鍵字,check=true N Y Nch加到str中,error=true3、實(shí)驗(yàn)程序#include#include#include#include/判斷讀入的字符是否為字母bool isLetter(char c)if(c = a & c = A & c =0 & c = 9)return true;elsereturn false;/判斷是否為關(guān)鍵字bool isKey(char *
5、string) if(!strcmp(string,void) | !strcmp(string,if)| !strcmp(string,for)| !strcmp(string,while) | !strcmp(string,do)| !strcmp(string,return)| !strcmp(string,break)| !strcmp(string,main)| !strcmp(string,int)| !strcmp(string,float)| !strcmp(string,char)| !strcmp(string,double)| !strcmp(string,String)
6、return true;else return false;bool isError(char ch)if(ch = | ch = $ | ch = & | ch = # | ch = | ch = )return true;elsereturn false;void main()char string500=;/存放文件中讀出來(lái)的字符串char str10=;/存放需要對(duì)比的字符串char ch,c;/ch存放文件中的單個(gè)字符(翻譯時(shí)用),c存放文件中的單個(gè)字符(從文件中提取信息時(shí)用)char filename20;/文件名int j=0;printf(請(qǐng)輸入文件名進(jìn)行詞法翻譯:);scan
7、f(%s,filename);FILE *cfPtr; if(cfPtr=fopen(filename,r)=NULL)printf(文件未找到!);elsewhile(!feof(cfPtr)if(isspace(c=fgetc(cfPtr)/判斷是否是字符串;elsestringj=c;/從文件中一一提取字符j+;int m = 0,k=0;/m翻譯時(shí)用,k是str數(shù)組的下標(biāo)stringj= ;j+;bool check=true,error=false;/用于判斷標(biāo)識(shí)for(int i = 0;i | ch = )if(error)printf(%s,此字符無(wú)法是識(shí)別!n,str);er
8、ror=false;check=true;else if(!check)printf(2,%s)標(biāo)示符n,str);check=true;m = 4;else if(ch = , | ch = ; | ch = | ch = | ch = ( | ch = )if(error)printf(%s此字符無(wú)法識(shí)別n,str);error=false;check=true;else if(!check)printf(2,%s)標(biāo)示符n,str);check=true;m = 5; else if ( isDigit(ch =stringi) ) )if(check)memset(str, 0, st
9、rlen(str);/清空k=0;strk=ch;k+;m = 3;check=false; elsestrk=ch;k+;else if ( isLetter(ch = stringi) )if(check)check=false;memset(str, 0, strlen(str);k=0;strk=ch;k+;elsestrk=ch;k+;if(isKey(str)printf(1,%s)關(guān)鍵字n,str);check=true;else if(isError(ch = stringi)if(check)memset(str, 0, strlen(str);/清空k=0;strk=ch;
10、k+;check=false;error=true;elsestrk=ch;k+;error=true;elsebreak;case 3:if(isLetter(ch =stringi)printf(程序有錯(cuò)誤!n);strk = ch;k+;error=true;m = 0;break;if(isError(ch = stringi)printf(程序有錯(cuò)誤!n);strk = ch;k+;error=true;m = 0;break;if (isDigit(ch =stringi ) )strk = ch;k+;else if(ch=.)strk=ch;k+;else printf( 3,%s) 數(shù)字n,str);i -;m = 0;check=true;break;case 4:i-;printf( 4 ,%c) 運(yùn)算符n,ch);m = 0;break;case 5:i -;printf( 5 ,%c)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游用地轉(zhuǎn)讓居間協(xié)議
- 2025年房地產(chǎn)銷售代理服務(wù)合同樣本
- 舟山2025年浙江舟山市定海區(qū)昌國(guó)街道招聘公益性崗位筆試歷年參考題庫(kù)附帶答案詳解
- 福建2025年福建水利電力職業(yè)技術(shù)學(xué)院招聘35人筆試歷年參考題庫(kù)附帶答案詳解
- 煙臺(tái)2024年山東煙臺(tái)大學(xué)招聘5人(博士第三批)筆試歷年參考題庫(kù)附帶答案詳解
- 2025年度鮮奶生產(chǎn)安全與環(huán)境保護(hù)合同范本3篇
- 道路工程冬季施工方案
- 2025年度車隊(duì)運(yùn)輸車輛安全監(jiān)控系統(tǒng)安裝合同3篇
- 棗莊2025年山東省滕州市第一中學(xué)校園招聘15人筆試歷年參考題庫(kù)附帶答案詳解
- 杭州浙江杭州市錢塘區(qū)青少年宮招聘10人筆試歷年參考題庫(kù)附帶答案詳解
- 豬肉配送投標(biāo)方案(技術(shù)方案)
- 財(cái)務(wù)盡職調(diào)查資料清單-立信
- 2024至2030年中國(guó)柔性電路板(FPC)行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- IGCSE考試練習(xí)冊(cè)附答案
- 小學(xué)三年級(jí)下一字多義(答案)
- Unit 6 同步練習(xí)人教版2024七年級(jí)英語(yǔ)上冊(cè)
- 農(nóng)耕研學(xué)活動(dòng)方案種小麥
- 九三學(xué)社申請(qǐng)入社人員簡(jiǎn)歷表
- 非諾貝特酸膽堿緩釋膠囊-臨床用藥解讀
- 設(shè)備管理:設(shè)備管理的維護(hù)與保養(yǎng)
- 土特產(chǎn)行業(yè)現(xiàn)狀分析
評(píng)論
0/150
提交評(píng)論