實驗報告 詞法分析 c

2022-08-22 07:00:17 字數 3801 閱讀 3186

實驗

一、詞法分析程式

商業軟體工程   簡梓茵  201506110132

一、實驗目的

熟悉詞法分析的形式。

二、實驗內容和要求

對輸入的每個關鍵字或者字元進行詞法分析,給出該關鍵字對應的排序序號

三、實驗方法、步驟及結果測試

1.源程式名:wordanalyse.c

2.原理分析及流程圖

3.主要程式段及其解釋:

#include

#include

char prog[80],token[8],ch; 

int syn,p,m,n,sum; 

char *rwtab[6]=; 

void scaner(void); 

main() 

p=0; 

printf("\n please input a string(end with '#'):\n"); 

dowhile(ch!='#'); 

p=0; 

dowhile(syn!=0); 

//getch(); 

//******************************===對錄入的詞彙進行解析

void scaner(void) 

sum=0; 

for(m=0;m<8;m++) 

token[m++]= null; 

ch=prog[p++]; 

m=0; 

while((ch==' ')||(ch=='\n'))  //處理空格和回車

ch=prog[p++]; 

if(((ch<='z')&&(ch>='a'))||((ch<='z')&&(ch>='a')))  //處理字母

while(((ch<='z')&&(ch>='a'))||((ch<='z')&&(ch>='a'))||((ch>='0')&&(ch<='9'))) 

token[m++]=ch; 

ch=prog[p++]; 

p--; 

syn=10; 

for(n=0;n<6;n++) 

if(strcmp(token,rwtab[n])==0) 

syn=n+1; 

break;

else if((ch>='0')&&(ch<='9'))  //處理數字

while((ch>='0')&&(ch<='9')) 

sum=sum*10+ch-'0'; 

ch=prog[p++]; 

p--; 

syn=11; 

else  

switch(ch)  //處理符號 對各種符號進行分類討論

case '

token[m++]=ch; 

ch=prog[p++]; 

if(ch=='=') 

syn=22; 

token[m++]=ch; 

else 

syn=20; 

p--; 

break; 

case '>': 

token[m++]=ch; 

ch=prog[p++]; 

if(ch=='=') 

syn=24; 

token[m++]=ch; 

else 

syn=23; 

p--; 

break; 

case '+': 

token[m++]=ch; 

ch=prog[p++]; 

if(ch=='+') 

syn=17; 

token[m++]=ch; 

else 

syn=13; 

p--; 

break; 

case '-': 

token[m++]=ch; 

ch=prog[p++]; 

if(ch=='-') 

syn=29; 

token[m++]=ch; 

else 

syn=14; 

p--; 

break; 

case '!': 

ch=prog[p++]; 

if(ch=='=') 

syn=21; 

token[m++]=ch; 

else 

syn=31; 

p--; 

break; 

case '=': 

token[m++]=ch; 

ch=prog[p++]; 

if(ch=='=') 

syn=25; 

token[m++]=ch; 

else 

syn=18; 

p--; 

break; 

case '*': 

syn=15; 

token[m++]=ch; 

break; 

case '/': 

syn=16; 

token[m++]=ch; 

break; 

case '(':  

syn=27; 

token[m++]=ch; 

break; 

case ')': 

syn=28; 

token[m++]=ch; 

break; 

case '':  

syn=6; 

token[m++]=ch; 

break; 

case ';': 

syn=26; 

token[m++]=ch; 

break; 

case '\"': 

syn=30; 

token[m++]=ch; 

break; 

case '#':  

syn=0; 

token[m++]=ch; 

break; 

case ':': 

syn=17; 

token[m++]=ch; 

break; 

default:  //如果字元無法識別

syn=-1; 

break; 

token[m++]='\0'; 

4.執行結果及分析

執行正常。

四、實驗總結

很多地方都糾結了好久,

包括符號處理,符號處理需要分類討論。

另外還有就是空格和回車的處理,以及字元的讀取處理。

為了提高程式效率,關鍵字處理最後用了指標陣列來儲存關鍵字。

詞法分析實驗報告

實驗 一 詞法分析實驗 專業 商軟三班 姓名 姚棋輝 學號201506110250 一 實驗目的 編譯乙個詞法分析程式 實驗內容和要求 輸入字串,輸出這些字串的種別碼。二 實驗方法 步驟及結果測試 方法 鍵盤輸入字串時,使用陣列放起來,再從陣列這裡放進佇列。步驟 1 鍵盤輸入字串,存放在陣列中,2 ...

詞法分析實驗報告

實驗 一 詞法分析實驗 商業軟體工程 麥振澎 201506110162 一 實驗目的 對使用者輸入的字串進行判斷,區分它們的型別,熟悉詞法分析的過程。二 實驗內容和要求 使用者輸入的字串進行判斷,分別輸出每個字串所屬的型別。其中的判斷標準如下 無符號整數 整數 識別符號 字母 數字 0 1 2 8 ...

詞法分析實驗報告

格式說明 排版時注意按此模板的字型,字型大小和行距。報告提交和列印輸出時請去掉此框。實驗 一 詞法分析實驗 專業 商業軟體工程 姓名 李桂源 學號 201506110201 一 實驗目的 通過設計編制除錯乙個具體的詞法分析程式,加深對詞法分析原理的理解。並掌握在對程式語言源程式進行掃瞄過程中將其分解...