一、實驗目的
通過設計乙個詞法分析程式,對詞法進行分析,加強對詞法的理解,掌握對程式語言的分解和理解。
二、實驗內容和要求
在原程式中輸入源**
在源程式中,自動識別單詞,把單詞分為五種,並輸出對應的單詞種別碼。
識別關鍵字:main if int for while do return break continue,該類的單詞碼為1.
識別識別符號:表示各種名字,如變數名、陣列名、函式名等,如char ch, int syn, token,sum,該類的單詞碼為2.
運算子:+、-、*、/、=、>、=、<=、!=
分隔符:,、;、、(、)
常數,例:123
各種單詞符號對應的種別碼。
輸出形式:
– (單詞種別,單詞自身的值)
– 整數碼
– 識別符號token、常數sum
– 關鍵字、運算子、界符token
三、實驗方法、步驟及結果測試
1.源程式
#include #include四.執行結果及分析char
string[80],simbol[8
],ch;
intwordid,index,m,n,sum;
char *rwtab[6]=;
void scaner(void
);main()
while(ch!='#'
); index=0
;
do }
while(wordid!=0);
return0;
}void scaner(void
) index--;
wordid=10
;
for(n=0;n<6;n++)
if(strcmp(simbol,rwtab[n])==0
)
}else
if((ch>='
0')&&(ch<='
9'))//
判斷輸入的字元是否為數字
index--;
wordid=11
; }
else
else
break
;
case
'>':
simbol[m++]=ch;
ch=string[index++];
if(ch=='='
)
else
break
;
case'+
':simbol[m++]=ch;
ch=string[index++];
if(ch=='+'
)
else
break
;
case'-
':simbol[m++]=ch;
ch=string[index++];
if(ch=='-'
)
else
break
;
case'!
':ch=string[index++];
if(ch=='='
)
else
break
;
case'=
':simbol[m++]=ch;
ch=string[index++];
if(ch=='='
)
else
break
;
case'*
':wordid=15
; simbol[m++]=ch;
break
;
case'/
':wordid=16
; simbol[m++]=ch;
break
;
case'(
'://
判斷輸入的字元是否為分隔符
wordid=27
; simbol[m++]=ch;
break
;
case')
':wordid=28
; simbol[m++]=ch;
break
;
case''
: wordid=6
; simbol[m++]=ch;
break
;
case';
':wordid=26
; simbol[m++]=ch;
break
;
case'\"
':wordid=30
; simbol[m++]=ch;
break
;
case'#
':wordid=0
; simbol[m++]=ch;
break
;
case':
':wordid=17
; simbol[m++]=ch;
break
;
default
: wordid=-1
;
break
; }
}simbol[m++]='\0'
;}
詞法分析器實驗報告
一 實驗目的 編制乙個詞法分析器,通過該詞法分析程式的設計例項,進一步了解詞法分析程式構造的一些細節。二 實驗內容和要求 實驗內容 對字串表示的源程式,從左到右進行掃瞄和分解。根據詞法規則,識別出乙個乙個具有獨立意義的單詞符號,以供語法分析之用,若發現詞法錯誤,則返回出錯資訊。實驗要求 輸入 源程式...
演算法分析實驗報告 詞法分析器
實驗 一 詞法分析實驗 商業軟體工程專業 李錦旭 學號201506110131 一 實驗目的 通過設計乙個詞法分析程式,對詞法進行分析,加強對詞法的理解,掌握對程式語言的分解和理解。二 實驗內容和要求 在原程式中輸入源 在源程式中,自動識別單詞,把單詞分為五種,並輸出對應的單詞種別碼。識別關鍵字 m...
詞法分析實驗報告
實驗 一 詞法分析實驗 專業 商軟三班 姓名 姚棋輝 學號201506110250 一 實驗目的 編譯乙個詞法分析程式 實驗內容和要求 輸入字串,輸出這些字串的種別碼。二 實驗方法 步驟及結果測試 方法 鍵盤輸入字串時,使用陣列放起來,再從陣列這裡放進佇列。步驟 1 鍵盤輸入字串,存放在陣列中,2 ...