詞法分析器的設(shè)計(jì)_第1頁(yè)
詞法分析器的設(shè)計(jì)_第2頁(yè)
詞法分析器的設(shè)計(jì)_第3頁(yè)
詞法分析器的設(shè)計(jì)_第4頁(yè)
詞法分析器的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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) 告 冊(cè)2017 2018 學(xué)年第1學(xué)期 學(xué)院:信息與電氣工程學(xué)院專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 姓名:李金 學(xué)號(hào):195140046班級(jí):計(jì)算機(jī)2班實(shí)驗(yàn)一詞法分析器的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、 通過(guò)設(shè)計(jì)編制一個(gè)調(diào)試一個(gè)具體的此法分析程序,理解詞法分析在編譯程序中的作用。2、 加深對(duì)有窮自動(dòng)機(jī)模型的理解。3、 掌握詞法分析程序的實(shí)現(xiàn)方法和要求。4、 用C語(yǔ)言,對(duì)一個(gè)簡(jiǎn)單語(yǔ)言 的子集編制一個(gè)一遍掃描的程序,以加深對(duì)編譯原理的理解,掌握編譯程序的實(shí)現(xiàn)方法和技術(shù)。編制一個(gè)讀單詞過(guò)程,從輸入的源程序中,識(shí)別出各個(gè)具有獨(dú)立意義的單詞,即基本保留字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、分隔符五大類(lèi),并依次輸出各個(gè)單

2、詞的內(nèi)部編碼及單詞符號(hào)自身值(遇到錯(cuò)誤時(shí)課顯示“Error”,然后跳過(guò)錯(cuò)誤部分繼續(xù)顯示)一、 程序要求程序輸入/輸出示例如源程序?yàn)镃語(yǔ)言,輸入如下一段: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、 識(shí)別保留字:if,int,for,while,do,return,break,continue; 單詞識(shí)別碼為1;2、 其他的都識(shí)別為標(biāo)識(shí)符;單詞

3、識(shí)別碼為2;3、 常數(shù)為無(wú)符號(hào)整數(shù);單詞識(shí)別碼為3;4、 運(yùn)算符包括:+,-,*,/,=,=,!=;單詞識(shí)別碼為4;5、 分隔符包括:,、;、(、);單詞識(shí)別碼為5;二、 實(shí)驗(yàn)步驟1、 定義部分:定義常亮、變量、數(shù)據(jù)結(jié)構(gòu)。2、 初始化:從文件源程序全部輸入到字符緩沖區(qū)中。3、 取單詞前后去掉多余空格和回車(chē)空行。4、 取單詞:讀出單詞的每一個(gè)字符,組成單詞,分析類(lèi)型。(1) 識(shí)別標(biāo)識(shí)符(包括保留字) 關(guān)鍵字作為特殊標(biāo)識(shí)符處理,把他們預(yù)先安排在一張表格中(保留字表),當(dāng)掃描程序識(shí)別標(biāo)識(shí)符時(shí),查找關(guān)鍵字,否則一般標(biāo)識(shí)符,識(shí)別保留字:if,int,for,while,do,return,break,c

4、ontinue; 單詞識(shí)別碼為1;其他的都識(shí)別為標(biāo)識(shí)符;單詞識(shí)別碼為2。 (2)識(shí)別常數(shù): 注意:常數(shù)的有效范圍,如果產(chǎn)生溢出則設(shè)置syn的值,與主函數(shù)的代碼呼應(yīng)。常數(shù)為無(wú)符號(hào)整數(shù);單詞識(shí)別碼為3。(3)識(shí)別運(yùn)算符 區(qū)分運(yùn)算符和和=,+和+,-和-。 運(yùn)算符包括:+,-,*,/,=,,=,=,!=;單詞識(shí)別碼為4; (4)識(shí)別分隔符 分隔符包括:,、;、(、)單詞識(shí)別碼為5;5、 流程圖 初始化 文件結(jié)束 忽略空格返回是 否 拼字符串 字母數(shù)字運(yùn)算符界符等符號(hào) 其他報(bào)錯(cuò)拼數(shù)對(duì)應(yīng)不同符號(hào)給出相應(yīng)的syn Syn=3是否是關(guān)鍵字否返回對(duì)應(yīng)SynSyn=2是三、 程序代碼#include#inclu

5、dechar 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=0;n8;n+)tokenn=NULL;m=0;ch=programp+;while(ch= )|(ch=n) ch=programp+; if(ch=a)|(ch=A) /標(biāo)識(shí)符判斷 while(ch=a)|(ch=A)|(ch=0)&(ch=9) tokenm+=ch; ch=programp+; p-; syn=2; fo

6、r(n=0;n=0)&(ch=0)&(ch=9) sum=sum*10+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+=ch; ch=programp+; if(ch=-) syn=4;

7、 tokenm+=ch; else syn=4; p-; break; case !: 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 *: 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(nFOUND ERROR IN ROW %d,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論