




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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)康?通過設(shè)計(jì)編制調(diào)試一個(gè)具體的詞法分析程序,加深對(duì)詞法分析原理的理解。并掌握在對(duì)程序設(shè)計(jì)語言源程序進(jìn)行掃描過程中將其分解為各類單詞的詞法分析方法。二、實(shí)驗(yàn)內(nèi)容編寫一個(gè)詞法分析器,從輸入的源程序(編寫的語言為C語言的一個(gè)子集)中,識(shí)別出各個(gè)具有獨(dú)立意義的單詞,即基本保留字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、分隔符五大類。并依次輸出各個(gè)單詞的內(nèi)部編碼及單詞符號(hào)自身值。(遇到錯(cuò)誤時(shí)可顯示“Error”,然后跳過錯(cuò)誤部分繼續(xù)顯示) 三、實(shí)驗(yàn)要求 1、
2、160; 詞法分析器的功能和輸出格式詞法分析器的功能是輸入源程序,輸出單詞符號(hào)。詞法分析器的單詞符號(hào)常常表示成以下的二元式(單詞種別碼,單詞符號(hào)的屬性值)。單詞示例單詞種別碼要求保留字if、else、int、while、do每個(gè)保留字的單詞種別都單獨(dú)為一種標(biāo)識(shí)符以字母開頭且包含字母和數(shù)字的字符串標(biāo)識(shí)符作為一種常數(shù)(只識(shí)別無符號(hào)整數(shù))123、343無符號(hào)整數(shù)作為一種運(yùn)算符+、-、*、/、=、= = 、!=、> 、<、 >=、 <=每符一種,也可以每一類符號(hào)一種分隔符,、;、(、)每符一種2、上述要求僅為基本要求,可以在此基礎(chǔ)上擴(kuò)充,例如刪除注釋,增加識(shí)別單詞的類型,將標(biāo)識(shí)
3、符和常量分別插入到相應(yīng)的符號(hào)表中,增加錯(cuò)誤處理等。3、編程語言不限。四、實(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í)符以字母開頭且包含字母和數(shù)字的字符串2常數(shù)(只識(shí)別無符號(hào)整數(shù))無符號(hào)整數(shù)和小數(shù)3運(yùn)算符+、-、*、/、=、> 、<、4分隔符,、;、(、)5本實(shí)驗(yàn)所使用的開發(fā)語言是C語言,在Test2類中定義了以下幾個(gè)函數(shù): 開始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í)為無法識(shí)別的串check=ture,error=false Y Y N輸出str,標(biāo)識(shí)為無法識(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=""/存放文件中讀出來的字符串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)語法翻譯器switch (m)case 0:ch = stringi;if(ch = '+
11、9; | ch = '-' | ch = '*' | ch = '/' | ch = '='| ch = '>' | ch = '<')if(error)printf("%s,此字符無法是識(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此字符無法識(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于成立天然氣制乙二醇公司可行性研究報(bào)告
- 網(wǎng)絡(luò)安全防護(hù)在海洋觀測(cè)領(lǐng)域的應(yīng)用評(píng)估考核試卷
- 糖果、巧克力、蜜餞及類似食品項(xiàng)目效益評(píng)估報(bào)告
- 水產(chǎn)品養(yǎng)殖技術(shù)培訓(xùn)與推廣考核試卷
- 輪胎工廠布局與物流規(guī)劃考核試卷
- 創(chuàng)業(yè)空間的新媒體創(chuàng)業(yè)服務(wù)平臺(tái)計(jì)劃考核試卷
- 絲織品在能源領(lǐng)域的應(yīng)用考核試卷
- 安徽省A10聯(lián)盟2023-2024學(xué)年高二上學(xué)期11月期中考試數(shù)學(xué)含解析
- 企業(yè)培訓(xùn)師職稱申請(qǐng)書指南
- 小學(xué)網(wǎng)絡(luò)安全教育矛盾處理工作措施
- 浙江省溫州市2025屆高三下學(xué)期三模政治試題 含解析
- 車輛超速考試試題及答案
- 成人患者營(yíng)養(yǎng)不良診斷與應(yīng)用指南(2025版)解讀課件
- 2025年一級(jí)注冊(cè)建筑師歷年真題答案
- 十五五時(shí)期經(jīng)濟(jì)社會(huì)發(fā)展座談會(huì)十五五如何謀篇布局
- 初中電與磁試題及答案
- 浙江開放大學(xué)2025年《行政復(fù)議法》形考作業(yè)1答案
- 國(guó)家開放大學(xué)《西方經(jīng)濟(jì)學(xué)(本)》章節(jié)測(cè)試參考答案
- 湖南省炎德英才名校聯(lián)合體2025屆高考考前仿真聯(lián)考二英語+答案
- 重慶地理會(huì)考試卷題及答案
- 福建省三明市2025年普通高中高三畢業(yè)班五月質(zhì)量檢測(cè)地理試卷及答案(三明四檢)
評(píng)論
0/150
提交評(píng)論