




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上院(系) 計算機學(xué)院 專業(yè) 計算機科學(xué)與技術(shù) 班級 姓名 學(xué)號 同組人 無 實驗室 S4305 組號 日期 課程 編譯原理 指導(dǎo)教師 成績 實驗項目編號 實驗項目名 詞法分析 1、 實驗?zāi)康?、 通過設(shè)計、開發(fā)一個高級語言的詞法分析程序,加深對課堂教學(xué)內(nèi)容(包括正規(guī)文法、正規(guī)表達式、有限自動機、NFA到DFA的轉(zhuǎn)換、DFA的最小化)的理解,提高詞法分析方法的實踐能力。2、編譯原理涉及詞法分析,語法分析,語義分析及優(yōu)化設(shè)計等各方面。詞法分析階段是編譯過程的第一個階段,是編譯的基礎(chǔ)。這個階段的任務(wù)是從左到右一個字符一個字符地讀入源程序,即對構(gòu)成源程序的字符流進行掃描然后根
2、據(jù)構(gòu)詞規(guī)則識別單詞(也稱單詞符號或符號)。詞法分析程序?qū)崿F(xiàn)這個任務(wù)。從左到右逐個字符對構(gòu)成源程序的字符串進行掃描,依據(jù)詞法規(guī)則,識別出一個一個的標(biāo)記(token),把源程序變?yōu)榈葍r的標(biāo)記串序列。執(zhí)行詞法分析的程序稱為詞法分析器,也稱為掃描器。2、 實驗環(huán)境(儀器設(shè)備、軟件等) 電腦一臺 VC 三、實驗原理(或要求)1、深入理解、掌握有限自動機及其應(yīng)用;2、掌握根據(jù)語言的詞法規(guī)則構(gòu)造識別其單詞的有限自動機的方法;3、掌握NFA到DFA的等價變換方法、DFA最小化的方法;4、掌握設(shè)計、編碼、調(diào)試詞法分析程序的技術(shù)與方法,具體實現(xiàn)S語言的詞法分析程序。四、實驗步驟待分析的簡單的詞法(1)關(guān)鍵字:
3、160; begin if then while do end 所有的關(guān)鍵字都是小寫。(2)運算符和界符: : = + - * / < <= <> > >= =
4、0; ( ) #(3)其他單詞是標(biāo)識符(ID)和整型常數(shù)(SUM),通過以下正規(guī)式定義:ID = letter (letter | digit)*NUM = digit digit*(4)空格有空白、制表符和換行符組成??崭褚话阌脕矸指鬒D、SUM、運算符、界符和關(guān)鍵字,詞法分析階段通常被忽略。 2.2 各種單詞符號對應(yīng)的種別碼表2.1 各種單詞符號對應(yīng)的種別碼單詞符號種別碼單詞符號種別碼begin1:17if2: =18then3< 20while4<>
5、160;21do5<=22end6> 23letter (letter | digit)*10>=24digit digit*11=25+13;26-14(27*15)28/16#0詞法分析程序的C語言程序源代碼#include <stdio.h>#include <stdlib.h>#include <string.h>char prog100,ch,token8;int p=0,syn,n,i;char *keyword6="begin","then","if",&q
6、uot;while","do","end"void scaner();void Irparse();void statement();void expression_r();void term();void factor(); void main() int select=-1; p=0; &
7、#160;printf("please input sentence, end of '#' !n"); do ch=getchar();
8、; progp+=ch; while(ch!='#'); p=0; printf("請輸入1 或 2 n 1.詞法分析n
9、2.語法分析n"); scanf("%d",&select); if(select=1)
10、; do scaner();
11、switch(syn) &
12、#160; case -1:printf("詞法分析 出錯n");break; default :printf("<%d,%s>n",syn,token);break; &
13、#160; while(syn!=0);
14、; printf("詞法分析 成功n"); else if(select=2) scaner();
15、; if(syn=1) Irparse();/begin else printf("語法分析出錯!
16、0;請檢查begin關(guān)鍵字n");return; if(syn=6)/end scaner();
17、60; if(syn=0)
18、 printf("恭喜 語法分析 成功n");
19、 else printf("語法分析出錯! 請檢查是否缺少'#'n");
20、60; elseprintf("語法分析出錯! 請檢查是否缺少'end'n");
21、0; getchar(); void scaner() for(n=0;n<8;n+) tokenn='0'
22、; n=0; ch=progp+; while(ch=' ')ch=progp+;
23、160; if(ch>='a'&&ch<='z')|(ch>='A'&&ch<='Z')
24、; do tokenn+=ch;
25、0; ch=progp+; while(ch>='a'&&ch<='z&
26、#39;)|(ch>='a'&&ch<='z')|(ch>='0'&&ch<='9'); syn=10;
27、60; for(n=0;n<6;n+)
28、60; if(strcmp(token,keywordn)=0)
29、; syn=n+1;
30、60; p-;
31、 /return;
32、0;else if(ch>='0'&&ch<='9') p-;
33、 do
34、0; tokenn+=progp+; ch=progp;
35、0; while(ch>='0'&&ch<='9'); syn=11;
36、60;
37、60; return; else
38、0; /ch=progp+;
39、; switch(ch) &
40、#160; case '+':syn=13;token0=ch;break; case '-':syn=14;token0=ch;break;
41、; case '*':syn=15;token0=ch;break; case '/':syn=16;token0=
42、ch;break; case ':':syn=17;token0=ch;
43、; ch=progp+; i
44、f(ch='=')token1=ch;syn+; else p-;
45、160; break; case
46、9;<':syn=20;token0=ch; ch=progp+;
47、60; if(ch='>')token1=ch;syn+;
48、60; else if(ch='=')token1=ch;syn=syn+2;
49、160; else p-; break;
50、 case '>':syn=23;token0=ch;
51、; ch=progp+; if(ch='=')token1=ch;syn+;
52、0; else p-;
53、160; break; case '=':syn=25;token0=ch;break;
54、0; case '':syn=26;token0=ch;break; case '(':syn=27;token0=ch;bre
55、ak; case ')':syn=28;token0=ch;break; case
56、'#':syn=0;token0=ch;break; default: printf(&quo
57、t;詞法分析出錯! 請檢查是否輸入非法字符n");syn=-1;break;
58、 /return;
59、0; void Irparse() scaner(); statement(); while(syn=26)/;
60、160; scaner(); statement();
61、; void statement() if(syn=10) scaner();
62、 if(syn=18) scaner();
63、; expression_r(); else
64、0; printf("語法分析出錯! 請檢查表達式是否正確n");return;
65、 else printf("語法分析出錯! 請檢查語句是否正確n");
66、return; void expression_r() term(); while(syn=13|syn=14)/+ - scaner(); term(); void term() factor(); while(s
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南測繪職業(yè)學(xué)院《社會體育運動技能與指導(dǎo)(瑜伽)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西財經(jīng)學(xué)院《流域管理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉安職業(yè)技術(shù)學(xué)院《群落生態(tài)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶城市科技學(xué)院《安全行為學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆農(nóng)業(yè)大學(xué)《醫(yī)學(xué)影像診斷學(xué)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南大學(xué)《中國古文名篇導(dǎo)讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 安陽幼兒師范高等專科學(xué)?!秾W(xué)位論文選題與設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 公章申請流程
- 抽排水施工方案
- 2025年鄉(xiāng)村醫(yī)生崗位理論知識考試模擬試題及答案(共100題)
- 2024年河南省中考滿分作文《成功所至諸徑共趨》
- 2025年中考百日誓師大會校長發(fā)言稿:激揚青春志 決勝中考時
- GB/T 10781.4-2024白酒質(zhì)量要求第4部分:醬香型白酒
- 封條模板A4直接打印版
- 021[學(xué)士]某六層框架宿舍樓畢業(yè)設(shè)計(含計算書、圖紙)
- (完整版)高層鋼結(jié)構(gòu)住宅施工方案(非常詳細(xì))
- 公司往來客戶對帳確認(rèn)單 6個套模版
- 云管理系統(tǒng)CRM系統(tǒng)操作手冊
- 資料:《標(biāo)準(zhǔn)(國標(biāo)M281745),急救箱配置標(biāo)準(zhǔn)》
- 校園及設(shè)備設(shè)施安全隱患排查情況登記表
- 有理數(shù)混合運算100題(有答案)(共13頁)
評論
0/150
提交評論