實驗
一、詞法分析程式
商業軟體工程 簡梓茵 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 一 實驗目的 通過設計編制除錯乙個具體的詞法分析程式,加深對詞法分析原理的理解。並掌握在對程式語言源程式進行掃瞄過程中將其分解...