




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上學(xué) 生 實(shí) 驗(yàn) 報 告 冊2017 2018 學(xué)年第1學(xué)期 學(xué)院:信息與電氣工程學(xué)院專業(yè):計算機(jī)科學(xué)與技術(shù) 姓名:李金 學(xué)號:班級:計算機(jī)2班實(shí)驗(yàn)一詞法分析器的設(shè)計一、實(shí)驗(yàn)?zāi)康?、 通過設(shè)計編制一個調(diào)試一個具體的此法分析程序,理解詞法分析在編譯程序中的作用。2、 加深對有窮自動機(jī)模型的理解。3、 掌握詞法分析程序的實(shí)現(xiàn)方法和要求。4、 用C語言,對一個簡單語言 的子集編制一個一遍掃描的程序,以加深對編譯原理的理解,掌握編譯程序的實(shí)現(xiàn)方法和技術(shù)。編制一個讀單詞過程,從輸入的源程序中,識別出各個具有獨(dú)立意義的單詞,即基本保留字、標(biāo)識符、常數(shù)、運(yùn)算符、分隔符五大類,并依次輸
2、出各個單詞的內(nèi)部編碼及單詞符號自身值(遇到錯誤時課顯示“Error”,然后跳過錯誤部分繼續(xù)顯示)一、 程序要求程序輸入/輸出示例如源程序?yàn)镃語言,輸入如下一段:Main()int a,b;a = 10;b = a + 20;要求輸出如下圖(2,main) (4,=) (5,()(3,10)(5,)(5,;)(5,)(2,b)(1,int)(4,=)(2,a)(2,a)(5,)(4,+)(2,b)(3,20)(5,;)(5,;)(2,a)(5,) 要求:1、 識別保留字:if,int,for,while,do,return,break,continue; 單詞識別碼為1;2、 其他的都識別為標(biāo)識
3、符;單詞識別碼為2;3、 常數(shù)為無符號整數(shù);單詞識別碼為3;4、 運(yùn)算符包括:+,-,*,/,=,<,<=,!=;單詞識別碼為4;5、 分隔符包括:,、;、(、);單詞識別碼為5;二、 實(shí)驗(yàn)步驟1、 定義部分:定義常亮、變量、數(shù)據(jù)結(jié)構(gòu)。2、 初始化:從文件源程序全部輸入到字符緩沖區(qū)中。3、 取單詞前后去掉多余空格和回車空行。4、 取單詞:讀出單詞的每一個字符,組成單詞,分析類型。(1) 識別標(biāo)識符(包括保留字) 關(guān)鍵字作為特殊標(biāo)識符處理,把他們預(yù)先安排在一張表格中(保留字表),當(dāng)掃描程序識別標(biāo)識符時,查找關(guān)鍵字,否則一般標(biāo)識符,識別保留字:if,int,for,while,do,r
4、eturn,break,continue; 單詞識別碼為1;其他的都識別為標(biāo)識符;單詞識別碼為2。 (2)識別常數(shù): 注意:常數(shù)的有效范圍,如果產(chǎn)生溢出則設(shè)置syn的值,與主函數(shù)的代碼呼應(yīng)。常數(shù)為無符號整數(shù);單詞識別碼為3。(3)識別運(yùn)算符 區(qū)分運(yùn)算符<和<=,>和>=,+和+,-和-。 運(yùn)算符包括:+,-,*,/,=,<,=,<=,!=;單詞識別碼為4; (4)識別分隔符 分隔符包括:,、;、(、)單詞識別碼為5;5、 流程圖 初始化 文件結(jié)束 忽略空格返回是 否 拼字符串 字母數(shù)字運(yùn)算符界符等符號 其他報錯拼數(shù)對應(yīng)不同符號給出相應(yīng)的syn Syn=3是否
5、是關(guān)鍵字否返回對應(yīng)SynSyn=2是三、 程序代碼#include<stdio.h>#include<string.h>char program80,token8;char ch;int syn,p,m,n,row;long int sum;char *key8="if","int","for","while","do","return","break","continue"void scaner()for(n=
6、0;n<8;n+)tokenn=NULL;m=0;ch=programp+;while(ch=' ')|(ch='n') ch=programp+; if(ch<='z')&&(ch>='a')|(ch<='Z')&&(ch>='A') /標(biāo)識符判斷 while(ch<='z')&&(ch>='a')|(ch<='Z')&&(ch>=&
7、#39;A')|(ch>='0')&&(ch<='9') tokenm+=ch; ch=programp+; p-; syn=2; for(n=0;n<8;n+) if(strcmp(token,keyn)=0) syn=1; break; else if(ch>='0')&&(ch<='9') /無符號常數(shù)的判斷 sum = 0; while(ch>='0')&&(ch<='9') sum=sum*1
8、0+ch-'0' ch=programp+; p-; syn=3; else switch(ch) case '<': tokenm+=ch; ch=programp+; if(ch='=') syn=4; tokenm+=ch; else syn=4; p-; break; case '>': tokenm+=ch; ch=programp+; if(ch='=') syn=4; tokenm+=ch; else syn=4; p-; break; case '+': tokenm+=
9、ch; ch=programp+; if(ch='+') syn=4; tokenm+=ch; else syn=4; p-; break; case '-': tokenm+=ch; ch=programp+; if(ch='-') syn=4; tokenm+=ch; else syn=4; p-; break; case '!': ch=programp+; if(ch='=') syn=4; tokenm+=ch; else syn=4; p-; break; case '=': token
10、m+=ch; ch=programp+; if(ch='=') syn=4; tokenm+=ch; else syn=4; p-; break; case '*': case '/': syn=4; tokenm+=ch; case '(': case ')': case '': case '': case '': case ':': case ',': syn=5; tokenm+=ch; break; case '#': syn=-2; tokenm+=ch; break; default: syn=-1; break; tokenm+='0'main()p=0;row=1;printf("n please input string:n");doch=getchar();programp+=ch;while(ch!='#');p=0;doscaner();switch(syn)case 3:printf("n(%d,%d)",syn,sum);break;case -1:printf("n
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 季節(jié)性用工合同規(guī)定
- 采購合同修訂協(xié)議
- 廣場舞合同范本
- 旅館住宿合同范本
- 19剃頭大師教學(xué)設(shè)計-2024-2025學(xué)年三年級下冊語文統(tǒng)編版
- 4 氣味告訴我們 教學(xué)設(shè)計-2024-2025學(xué)年科學(xué)一年級上冊教科版
- 圓木采購合同范本
- 煤炭安全協(xié)議合同范本
- Module 8 Unit 1 教學(xué)設(shè)計 2024-2025學(xué)年外研版八年級英語下冊
- 2023-2024學(xué)年清華版(2012)信息技術(shù)三年級上冊第四單元《14課 一句一景色-“復(fù)制”和“裁剪”圖片》教學(xué)設(shè)計
- 人教版(2025版)七年級下冊英語UNIT 1 Animal Friends 單元整體教學(xué)設(shè)計(6個課時)
- 項(xiàng)目管理知識手冊指南
- 2025年春季學(xué)期學(xué)校德育工作計劃及安排表
- 2025年常熟市招聘進(jìn)村人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- (主城一診)重慶市2025年高2025屆高三學(xué)業(yè)質(zhì)量調(diào)研抽測 (第一次)物理試卷(含答案)
- 2025年中國電信集團(tuán)有限公司招聘筆試參考題庫含答案解析
- DB50T 393-2011 城市三維建模技術(shù)規(guī)范
- 《肺癌圍手術(shù)期護(hù)理》課件
- 《糖尿病足護(hù)理查房》課件
- 山東省臨沂市地圖矢量課件模板()
評論
0/150
提交評論