




版權(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ì)文檔-傾情為你奉上集美大學(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)容編寫(xiě)一個(gè)詞法分析器,從輸入的源程序(編寫(xiě)的語(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、160; 詞法分析器的功能和輸出格式詞法分析器的功能是輸入源程序,輸出單詞符號(hào)。詞法分析器的單詞符號(hào)常常表示成以下的二元式(單詞種別碼,單詞符號(hào)的屬性值)。單詞示例單詞種別碼要求保留字if、else、int、while、do每個(gè)保留字的單詞種別都單獨(dú)為一種標(biāo)識(shí)符以字母開(kāi)頭且包含字母和數(shù)字的字符串標(biāo)識(shí)符作為一種常數(shù)(只識(shí)別無(wú)符號(hào)整數(shù))123、343無(wú)符號(hào)整數(shù)作為一種運(yùn)算符+、-、*、/、=、= = 、!=、> 、<、 >=、 <=每符一種,也可以每一類符號(hào)一種分隔符,、;、(、)每符一種2、上述要求僅為基本要求,可以在此基礎(chǔ)上擴(kuò)充,例如刪除注釋,增加識(shí)別單詞的類型,將標(biāo)識(shí)
3、符和常量分別插入到相應(yīng)的符號(hào)表中,增加錯(cuò)誤處理等。3、編程語(yǔ)言不限。四、實(shí)驗(yàn)設(shè)計(jì)方案 1、數(shù)據(jù)字典本實(shí)驗(yàn)用到的數(shù)據(jù)字典如下表所示:?jiǎn)卧~示例標(biāo)識(shí)ID保留字void、if、else、for、while、do、return、break、main、int、float、char、double、String1標(biāo)識(shí)符以字母開(kāi)頭且包含字母和數(shù)字的字符串2常數(shù)(只識(shí)別無(wú)符號(hào)整數(shù))無(wú)符號(hào)整數(shù)和小數(shù)3運(yùn)算符+、-、*、/、=、> 、<、4分隔符,、;、(、)5本實(shí)驗(yàn)所使用的開(kāi)發(fā)語(yǔ)言是C語(yǔ)言,在Test2類中定義了以下幾個(gè)函數(shù): 開(kāi)始2.程序流程圖:讀入文件,把內(nèi)容存入string中,m=0,check=
4、ture,error=falsech是分隔符?check=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=t
5、ure?check=ture? Y Y N N 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<stdio.h>#include<string.h>#include<ctype.h>#include<windows.h>/判斷讀入的字符是否為字母bool isLetter(char c)
6、if(c >= 'a' && c <= 'z') | (c >= 'A' && c <= 'Z')return true;elsereturn false;/判斷讀入的字符是否為數(shù)字bool isDigit(char c)if(c >='0' && c <= '9')return true;elsereturn false;/判斷是否為關(guān)鍵字bool isKey(char *string) if(!strcmp(st
7、ring,"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")| !str
8、cmp(string,"float")| !strcmp(string,"char")| !strcmp(string,"double")| !strcmp(string,"String")return true;else return false;bool isError(char ch)if(ch = '' | ch = '$' | ch = '&' | ch = '#' | ch = '' | ch = ''
9、;)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)行詞法翻譯:");scanf("%s",filename);FILE *cfPtr; if(cfPtr=fopen(filename,&
10、quot;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 < j;i+)/實(shí)現(xiàn)語(yǔ)法翻譯器switch (m)case 0:ch = stringi;if(ch = '+
11、9; | 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 = 4;else if(ch = ',' | ch = ''
12、; | 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, strlen(str);/清空k=0;strk=ch;k+;m
13、 = 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;k+;check=false;e
14、rror=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"
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 激光工程師考試備考新觀念試題及答案
- 快速提升專利代理人考試能力的試題及答案
- 藥物療法與生活方式干預(yù)試題及答案
- 確立護(hù)士資格證考試目標(biāo)的試題及答案
- 精確復(fù)習(xí)衛(wèi)生管理證書(shū)考試試題及答案
- 育嬰師學(xué)科知識(shí)考試試題及答案
- 藥劑學(xué)考試的特色設(shè)計(jì)與試題及答案
- 福建專版2024春九年級(jí)歷史下冊(cè)第6單元冷戰(zhàn)結(jié)束后的世界第20課聯(lián)合國(guó)與世界貿(mào)易組織知能演練提升新人教版
- 自我評(píng)估的花藝師考試試題與答案
- 企業(yè)如何靈活運(yùn)用知識(shí)產(chǎn)權(quán)政策試題及答案
- 上海交通大學(xué)醫(yī)學(xué)院附屬仁濟(jì)醫(yī)院-日間手術(shù)管理信息化實(shí)踐與發(fā)展
- 2021年湖北理工學(xué)院輔導(dǎo)員招聘考試題庫(kù)及答案解析
- 消防設(shè)備設(shè)施維護(hù)保養(yǎng)臺(tái)賬
- 神奇的植物王國(guó)課件
- 員工崗位技能考核評(píng)定表
- 項(xiàng)目部安全生產(chǎn)事故應(yīng)急預(yù)案
- 普通沖床設(shè)備日常點(diǎn)檢標(biāo)準(zhǔn)作業(yè)指導(dǎo)書(shū)
- DBT29-265-2019 天津市市政基礎(chǔ)設(shè)施工程資料管理規(guī)程
- -城鄉(xiāng)規(guī)劃法-最新課件
- DB32T 4013-2021 第三方社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估技術(shù)規(guī)范
- 夏日泛舟海上 (3)
評(píng)論
0/150
提交評(píng)論