實驗
一、詞法分析實驗
專業:商業軟體工程 姓名王芷玲 學號201606110246
一、實驗目的
編制乙個詞法分析程式。
二、實驗內容和要求
對字串表示的源程式,從左到右進行掃瞄和分解,根據詞法規則,識別出乙個乙個具有獨立意義的單詞符號,以供語法分析之用 發現詞法錯誤,則返回出錯資訊。。
三、實驗方法、步驟及結果測試
源程式名:壓縮包檔案(rar
或zip
)中源程式名ceshi.c
可執行程式名:ceshi.exe
主要程式段及其解釋:
實現主要功能的程式段,重要的是程式的注釋解釋。
#include
#include
char str[100];
char take[8];//存放單詞符號的字串
int sum;//存放整數型單詞
char ch;
int zbm;//存放單詞字元的種別碼
int i,n,p,m=0;//p是緩衝區
str的指標,m是
take
的指標char *keyword[8]=;
void scanner()//詞法掃瞄程式
/* for(i=0;i<8;i++)
take[i]=null;
ch=str[p++];*/
m=0;
sum=0;
for(m=0;m<8;m++)
take[m]=0;
ch=str[p++];
while(ch==' '||ch=='\n')
ch=str[p++];
if((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z'))//可能是識別符號或者是變數名
m=0;
while(ch>='0'&&ch<='9'||(ch>='a'&&ch<='z')||(ch>='a'&&ch<='z'))
take[m++]=ch;
ch=str[p++];
take[m++]='\0';
p--;
zbm=10;
for(i=0;i<6;i++)//將識別出的字元和已定義的標符進行比較
if(strcmp(keyword[i],take==0))
zbm=i+1;
break;
else if(ch>='0'&&ch<='9')
while(ch>='0'&&ch<='9')
sum=sum*10+ch-'0';
ch=str[p++];
p--;
zbm=11;
else
switch(ch)
case '+':
zbm=13;
take[0]=ch;
ch=str[p++];
break;
case '-':
zbm=14;
take[0]=ch;
ch=str[p++];
break;
case '*':
zbm=15;
take[0]=ch;
ch=str[p++];
break;
case '/':
zbm=16;
take[0]=ch;
ch=str[p++];
break;
case '
take[m++]=ch;
ch=str[p++];
if(ch=='>')
zbm=21;
take[m++]=ch;
else if(ch=='=')
zbm=22;
take[m]=ch;
elsewhile(ch!='#');
p=0;
ch=str[0];
if(ch>='0'&&ch<='9')
printf("錯誤
!\n");
else
doscanner();
switch(zbm)
case 11:
printf("(%d,%d)\n",11,sum);
break;
case -1:
printf("錯誤
!\n");
break;
default:
printf("(%d,%s)\n",zbm,take);
}while(zbm!=0);
return 0;
執行結果及分析
詞法分析程式實驗報告
實驗一詞法分析程式實驗 專業 商軟2班 姓名 區展翔 學號 201506110183 一 實驗目的 編制乙個詞法分析程式。二 實驗內容和要求 輸入 源程式字串 輸出 二元組 種別,單詞符號本身 三 實驗方法 步驟及結果測試 1.源程式名 詞法分析.c 可執行程式名 詞法分析.exe 2.原理分析及流...
詞法分析實驗報告
實驗 一 詞法分析實驗 專業 商軟三班 姓名 姚棋輝 學號201506110250 一 實驗目的 編譯乙個詞法分析程式 實驗內容和要求 輸入字串,輸出這些字串的種別碼。二 實驗方法 步驟及結果測試 方法 鍵盤輸入字串時,使用陣列放起來,再從陣列這裡放進佇列。步驟 1 鍵盤輸入字串,存放在陣列中,2 ...
詞法分析實驗報告
實驗 一 詞法分析實驗 商業軟體工程 麥振澎 201506110162 一 實驗目的 對使用者輸入的字串進行判斷,區分它們的型別,熟悉詞法分析的過程。二 實驗內容和要求 使用者輸入的字串進行判斷,分別輸出每個字串所屬的型別。其中的判斷標準如下 無符號整數 整數 識別符號 字母 數字 0 1 2 8 ...