實驗
一、詞法分析實驗
專業:商業軟體工程 姓名:李立建 學號:201506110112
一、實驗目的
(1) 理解詞法分析在編譯程式中的作用。
(2) 加深對有窮自動機模型的理解。
(3) 掌握詞法分析程式的實現方法。
(4) 用c語言對乙個簡單語言的子集編制乙個一遍掃錨的編譯理解,掌握編譯程式的實現方法和技術。
二、實驗內容和要求
1,待分析的簡單語言的詞法
2,各種單詞符號對應的種別碼。
3,詞法分析程式的功能(輸入,輸出)。
三、實驗方法、步驟及結果測試
1.源程式名:壓縮包檔案(rar或zip)中源程式名:cifenxi.c
可執行程式名:cifafen.exe
2.原理分析及流程圖
主要總體設計問題。
(包括儲存結構,主要演算法,關鍵函式的實現等)
詞法分析主程式示意圖
主要演算法:
1.先應用陣列存放關鍵字。
2.利用if,switch進行分析單詞符號。
3.最後輸出單詞對應的種別碼。
關鍵函式的實現:
1.*定義i/o庫所用的某些巨集和變數*/
2. /*定義字串庫函式*/
3./*提供有關螢幕視窗操作函式*/
4./*分類函式*/
3.主要程式段及其解釋:
實現主要功能的程式段,重要的是程式的注釋解釋。
主要程式共分為三大塊,分別是標示符、數字、符號。
void scaner()
token[m++]='\0';
ch=prog[p--];
syn=10;
for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0) /*字串的比較*/
}else
if(isdigit(ch)) /*ch是數字字元*/
ch=prog[p--];
syn=11;}
else
switch(ch)//識別符號的函式
else if(ch=='=')
else
break;
case'>':m=0;token[m++]=ch;ch=prog[p++];
if(ch=='=')
else
break;
case':':m=0;token[m++]=ch;ch=prog[p++];
if(ch=='=')
else
break;
case'+':syn=13;token[0]=ch;break;
case'-':syn=14;token[0]=ch;break;
case'*':syn=15;token[0]=ch;break;
case'/':syn=16;token[0]=ch;break;
case'=':syn=25;token[0]=ch;break;
case';':syn=26;token[0]=ch;break;
case'(':syn=27;token[0]=ch;break;
case')':syn=28;token[0]=ch;break;
case'#':syn=0;token[0]=ch;break;
default:syn=-1;}}
4.執行結果及分析
一般必須配執行結果截圖,結果是否符合預期及其分析。
源**:
voidscaner()token[m++]='\0';
ch=prog[p--];
syn=10;
for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0) /*字串的比較*/}
else
if(isdigit(ch)) /*ch是數字字元*/
ch=prog[p--];
syn=11;}
else
switch(ch)//識別符號的函式
else if(ch=='=')
else
break;
case'>':m=0;token[m++]=ch;ch=prog[p++];
if(ch=='=')
else
break;
case':':m=0;token[m++]=ch;ch=prog[p++];
if(ch=='=')
else
break;
case'+':syn=13;token[0]=ch;break;
case'-':syn=14;token[0]=ch;break;
case'*':syn=15;token[0]=ch;break;
case'/':syn=16;token[0]=ch;break;
case'=':syn=25;token[0]=ch;break;
case';':syn=26;token[0]=ch;break;
case'(':syn=27;token[0]=ch;break;
case')':syn=28;token[0]=ch;break;
case'#':syn=0;token[0]=ch;break;
default:syn=-1;}}
四、實驗總結
本次實驗花了將近四小時才完成。在草稿紙上設計的時間大概乙個半小時,剩下時間都在實行**的完善和報告的所要求的步奏。在本次實驗中我認識到程式不經常編譯,水平只會降低。好多關於之前的知識也會逐漸忘掉。所以以後我會經常寫程式,理解程式的內涵。另外,通過本次實驗,我又 進一步對詞法分析原理的理解。總的來說,收穫匪淺!
李建忠設計模式(一)
目錄 1.軟體設計的目標 2.物件導向設計原則 1.重新認識物件導向 2.物件導向設計原則 1.依賴倒置原則 dip 2.開放封閉原則 ocp 3.單一職責原則 srp 4.liskov替換原則 lsp 5.介面隔離原則 isp 6.有限使用物件組合,而不是類繼承 7.封裝變化點 8.針對介面程式設...
李建忠設計模式 抽象工廠
提供乙個介面,讓該介面負責建立一系列 相關或者相互依賴的物件 無需指定它們具體的類。設計模式 gof 抽象產品類角色 abstractproduct 為抽象工廠中相互依賴的每種產品定義抽象介面物件,也可以這樣說,有幾種產品,就要宣告幾個抽象角色,每乙個抽象產品角色和一種具體的產品相匹配。具體產品類 ...
李建忠設計模式 原型模式
目錄 1.原型模式 prototype 1.動機 2.定義 3.結構圖 4.模式的組成 2.例項 3.要點總結 4.參考 使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件。模式設計 gof 原型類 prototype 原型類,宣告乙個clone自身的介面 具體原型類 concret...