![編譯原理詞法分析報(bào)告器設(shè)計(jì)課程設(shè)計(jì)報(bào)告材料_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/4f0947c4-97c8-4d64-8de0-ae09fdaf0771/4f0947c4-97c8-4d64-8de0-ae09fdaf07711.gif)
![編譯原理詞法分析報(bào)告器設(shè)計(jì)課程設(shè)計(jì)報(bào)告材料_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/4f0947c4-97c8-4d64-8de0-ae09fdaf0771/4f0947c4-97c8-4d64-8de0-ae09fdaf07712.gif)
![編譯原理詞法分析報(bào)告器設(shè)計(jì)課程設(shè)計(jì)報(bào)告材料_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/3/4f0947c4-97c8-4d64-8de0-ae09fdaf0771/4f0947c4-97c8-4d64-8de0-ae09fdaf07713.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、鹽城工學(xué)院編譯原理課程設(shè)計(jì)報(bào)告設(shè)計(jì)詞法分析器專(zhuān) 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生班級(jí)學(xué)號(hào)完成日期2013年1月10日目錄1前言2.2報(bào)告主體2.2.1設(shè)計(jì)目的:2.2.2設(shè)計(jì)容及要求: 2.課程設(shè)計(jì)容 2.測(cè)試?yán)?.2.3實(shí)現(xiàn)原理.3.2.4算法實(shí)現(xiàn)流程圖7.2.5程序源代碼 8.2.6結(jié)果輸出及分析122.7心得體會(huì)132.8、參考資料141刖言在網(wǎng)絡(luò)世界中,我們往往對(duì)功能強(qiáng)大的程序嘆為觀止。而這些強(qiáng)大程序的背后 是編譯這些程序的編譯軟件,是這些編譯軟件承托起了這些功能強(qiáng)大的運(yùn)行程序。 我們有不少的同志致其自身于無(wú)盡的運(yùn)行程序上。而只有很少的人搞編譯程序。這 就是為什么中國(guó)的可運(yùn)行程序滿天飛,而編譯
2、程序卻很少。本課程設(shè)計(jì)就是在這方 面的探索,為你解讀編譯程序的奧秘。課程設(shè)計(jì)題目選擇5個(gè)題目中的一個(gè),要求根據(jù)自己的興趣和能力,選擇一個(gè) 對(duì)自己意義甚大的題目。課程設(shè)計(jì)基本原理是在實(shí)踐上,實(shí)現(xiàn)我們?cè)谡n程上學(xué)習(xí)到 的理論知識(shí)。通過(guò)理論聯(lián)系實(shí)踐,更好的掌握課本上的理論知識(shí)。2報(bào)告主體2.1設(shè)計(jì)目的:學(xué)生在學(xué)習(xí)編譯原理課程設(shè)計(jì)中,結(jié)合各章節(jié)的構(gòu)造編譯程序的基本理論, 總共用一周的時(shí)間完成課程設(shè)計(jì)。 要求用c或C+語(yǔ)言描述及上機(jī)調(diào)試,實(shí)現(xiàn)五個(gè) 題目中任意一個(gè),是學(xué)生將理論與實(shí)際應(yīng)用結(jié)合其,起來(lái),受到軟件設(shè)計(jì)等開(kāi)發(fā)過(guò) 程的全面訓(xùn)練,從而提高學(xué)生軟件開(kāi)發(fā)的能力。2.2設(shè)計(jì)容及要求:課程設(shè)計(jì)容設(shè)計(jì)詞法分析器
3、設(shè)計(jì)詞法分析器設(shè)計(jì)各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計(jì)種別碼。將詞法分析器設(shè)計(jì)成 供語(yǔ) 法分析器調(diào)用的子程序。功能包括:具備預(yù)處理功能。將不翻譯的注釋等符號(hào)先濾掉,只保留要翻譯的符號(hào)串,即 要求設(shè)計(jì)一個(gè)供詞法分析調(diào)用的預(yù)處理子程序;能夠拼出語(yǔ)言中的各個(gè)單詞;將拼出的標(biāo)識(shí)符填入符號(hào)表; 返回(種別碼,屬性值)。223測(cè)試?yán)築eg in x:=10; if x>0; then x=5/x-2*3;e ndDoch=getchar<>progp+=ch;2.3實(shí)現(xiàn)原理詞法分析器的設(shè)計(jì)(一)構(gòu)造單詞的分類(lèi)表單詞的分類(lèi):構(gòu)造上述語(yǔ)言中的各類(lèi)單詞符號(hào)及其分類(lèi)碼表如下單詞符號(hào)種別碼單詞
4、符號(hào)-種別碼#018Begi n1)19If2<20The n3<>21While4<=22Do5>23end>=24標(biāo)識(shí)符M0=25常數(shù)11526+13(271428*1529/16301731ID和NUM的正規(guī)定義式為:IDletter(letter | didit)*NUM digit digit* letter a | | z | A | | Z digit 0 | | 9如果關(guān)鍵字、標(biāo)識(shí)符和常數(shù)之間沒(méi)有確定的算符或界符作間隔,則至少用一 個(gè)空格作間隔??崭裼煽瞻?、制表符和換行符組成。(二)主要實(shí)驗(yàn)代碼:(1) .全局變量:char prog80=&
5、#39;0', 存放程序char toke n 8; 存放構(gòu)成單詞符號(hào)的字符串char ch;輸入字符int syn,存放單詞字符的種別碼sum, 存放整數(shù)型單詞p, /p是緩沖區(qū)prog的指針n=-1;記錄標(biāo)識(shí)符在符號(hào)表中的位置char *keyword6="else","if","i nt","while","void","return"(2) .main 函數(shù)(2.1) 輸入源程序:doch=getchar();progp+=ch;while(ch!=#);(2
6、.2) 循環(huán)調(diào)用子函數(shù):dosca ner();switch(s yn)case 11: prin tf("(%d,%d)n",sy n,sum);break;case -1: prin tf("n ERROR;n");break; default: prin tf("(%d,%s)n",s yn ,toke n);while(sy n!=0);(3) .子函數(shù):(3.1) 數(shù)據(jù)初始化及定義:void sca ner() m=0; sum=0; for(n=0;n<8;n+) toke nn='0' ch=pro
7、gp+; while(ch='') ch=progp+;(3.2) 關(guān)鍵字及標(biāo)識(shí)符判斷if(isalpha(ch) /*ch 為字母字符 */ while(isalpha(ch)|isdigit(ch) /*ch 為字母字符或者數(shù)字字符 */ toke n m+=ch;ch=progp+;toke nm+='0'ch=progp-; syn=10;(3.3) 常數(shù)判別:if(isdigit(ch) /*ch 是數(shù)字字符 */ while(isdigit(ch) /*ch 是數(shù)字字符 */ sum=sum*10+ch-'0' ch=progp+;c
8、h=progp-;syn=11;(3.4) 專(zhuān)用符號(hào)判斷:(3.4.1) 專(zhuān)用符號(hào)為兩個(gè)字符以” <=”為例:switch(ch) case'v':m=0;toke n m+=ch;ch=progp+;if(ch='>') syn=21; toke n m+=ch;else if(ch='=') syn=22; toke n m+=ch; else syn=20; ch=progp-;break;(3.4.2) 專(zhuān)用符號(hào)為一個(gè)字符:用case語(yǔ)句實(shí)現(xiàn)例:case'+':s yn=13;toke n 0=ch;break
9、; case'-':s yn=14;toke n 0=ch;break;default:s yn=-1;(三)DNF狀態(tài)轉(zhuǎn)換圖2.4算法實(shí)現(xiàn)流程圖2.5程序源代碼#include <stdio.h>/*定義I/O庫(kù)所用的某些宏和變量*/#i nclude <stri ng.h>/*定義字符串庫(kù)函數(shù)*/#in clude vconi o.h>/*提供有關(guān)屏幕窗口操作函數(shù)*/#in clude <ctype.h>/*分類(lèi)函數(shù)*/char prog80='0'char toke n 8;/*存放構(gòu)成單詞符號(hào)的字符串*/char
10、 ch;int syn;/*存放單詞字符的種別碼*/intint sum;/*存放整數(shù)型單詞*/int m,p;/*p是緩沖區(qū)prog的指針,m是token的指針*/char *rwtab6="begi n","if","the n","while","do","e nd" void sea ner()m=0;sum=0;for(n=0;n<8;n+)toke nn ='0'ch=progp+;while(ch='')ch=progp+;
11、if(isalpha(ch) /*ch 為字母字符 */while(isalpha(ch)|isdigit(ch) /*ch 為字母字符或者數(shù)字字符 */toke n m+=ch;ch=progp+;toke nm+='0'ch=progp-;syn=10;for(n=0;n<6;n+)if(strcmp(token,rwtabn)=0)/*字符串的比較 */syn=n+1;break;elseif(isdigit(ch) /*ch 是數(shù)字字符 */while(isdigit(ch) /*ch 是數(shù)字字符 */ sum=sum*10+ch-'0'ch=pr
12、ogp+;ch=progp-;syn=11;elseswitch(ch)case'v':m=0;toke n m+=ch;ch=progp+;if(ch='>')syn=21;toke n m+=ch;else if(ch='=')syn=22;toke n m+=ch;elsesy n=20;ch=progp-;break;case'>':m=0;toke n m+=ch;ch=progp+;if(ch='=')syn=24;toke n m+=ch;elsesyn=23;ch=progp-;brea
13、k;case':':m=0;toke n m+=ch;ch=progp+;if(ch='=')syn=18;toke n m+=ch;elsesyn=17;ch=progp-;break;case'+':s yn=13;toke n 0=ch;break;case'-':s yn=14;toke n 0=ch;break;case'*':s yn=15;toke n 0=ch;break;case'/':s yn=16;toke n0 =ch;break;case')':s yn=1
14、9;toke n0 =ch;break;case'=':s yn=25;toke n0 =ch;break;case'':s yn=26;toke n0 =ch;break;case'(':s yn=27;toke n0 =ch;break;case'':s yn=28;toke n0 =ch;break;case'':s yn=29;toke n0 =ch;break;case'':s yn=30;toke n0 =ch;break;case'':s yn=31;toke n0 =
15、ch;break;case'#':s yn=0;toke n 0=ch;break;defaults yn=-1;mai n()prin tf("nn The sig ni fica nee of the figures:n""數(shù)字1到6代表關(guān)鍵字n""數(shù)字10到11代表其他標(biāo)識(shí)n""數(shù)字3到31代表操作n");p=0;prin tf("nplease in put stri ng:n");do ch=getchar();progp+=ch;while(ch!='#');p=0;do sea ner();switch(s yn)ease 11: prin tf("(%d,%d)n",syn ,sum);break;case -1: prin tf("n ERROR;n");break; default: prin tf("(%d,%s)n",syn ,toke n);while(sy n!=0);getch();2.6結(jié)果輸出及分析運(yùn)行結(jié)果:2.7心得體會(huì)通過(guò)這次實(shí)驗(yàn),我對(duì)編譯原理這門(mén)專(zhuān)業(yè)必修課
溫馨提示
- 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è)的顧問(wèn)工作總結(jié)
- 2025年全球及中國(guó)無(wú)人值守汽車(chē)衡亭行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)化學(xué)鍍鎳 PTFE 涂層行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)一體式旋轉(zhuǎn)變壓器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球軟組織水平種植體行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球保險(xiǎn)業(yè)的低代碼和無(wú)代碼 (LCNC) 平臺(tái)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)加熱架式食物加熱器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)商用車(chē)氣制動(dòng)防抱死制動(dòng)系統(tǒng)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)熱水浴缸用換熱器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)變電站智能巡視解決方案行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制完整
- 原料驗(yàn)收標(biāo)準(zhǔn)知識(shí)培訓(xùn)課件
- Unit4MyfamilyStorytime(課件)人教新起點(diǎn)英語(yǔ)三年級(jí)下冊(cè)
- 物流運(yùn)作管理-需求預(yù)測(cè)
- 財(cái)務(wù)管理專(zhuān)業(yè)《生產(chǎn)實(shí)習(xí)》教學(xué)大綱
- 一年級(jí)口算天天練(可直接打印)
- 新急救常用儀器設(shè)備操作流程
- 新人教版高中數(shù)學(xué)選擇性必修第一冊(cè)全套精品課件
- 2023年四川省自貢市中考數(shù)學(xué)真題(原卷版)
- 三年級(jí)數(shù)學(xué)混合運(yùn)算100題
- 通信工程安全生產(chǎn)手冊(cè)
評(píng)論
0/150
提交評(píng)論