實驗
一、詞法分析實驗
商業軟體工程專業 李錦旭 學號201506110131
一、實驗目的
通過設計乙個詞法分析程式,對詞法進行分析,加強對詞法的理解,掌握對程式語言的分解和理解。
二、實驗內容和要求
在原程式中輸入源**
在源程式中,自動識別單詞,把單詞分為五種,並輸出對應的單詞種別碼。
識別關鍵字:main if int for while do return break continue,該類的單詞碼為1.
識別識別符號:表示各種名字,如變數名、陣列名、函式名等,如char ch, int syn, token,sum,該類的單詞碼為2.
運算子:+、-、*、/、=、>、=、<=、!=
分隔符:,、;、、(、)
常數,如123,4587
各種單詞符號對應的種別碼。
輸出形式:
– (單詞種別,單詞自身的值)
– 整數碼
– 識別符號token、常數sum
– 關鍵字、運算子、界符token
三、實驗方法、步驟及結果測試
源程式名:
可執行程式名:
原理分析及流程圖
主要程序段及其解釋:
實現主要功能的程式段,重要的是程式的注釋解釋。
void執行結果及分析輸入源**:begin x:=9: if x>9 then x:=2*x; end #judge()
ch =str[i];
while (ch == '
') //
忽視空格
x = 0
; i++;
if (((ch >= '
a') && (ch <= '
z')) || ((ch >= '
a') && (ch <= '
z'))) //
訪問到字母
i--;
typenum = 10
;
for (n = 0; n < 6; n++) //
判斷是否是關鍵字}}
else
if ((ch >= '
0') && (ch <= '
9')) //
訪問到數字
i--;
typenum = 11
; }
else
else
if (ch == '
>')
else
break
;
case
'>':
token[x] =ch;
x++;
ch =str[i];
i++;
if (ch == '='
)
else
break
;
case'+
':
typenum = 13
; token[x] =ch;
x++;
break
;
case'-
':typenum = 14
; token[x] =ch;
x++;
break
;
case'=
':typenum = 25
; token[x] =ch;
x++;
break
;
case'*
':typenum = 15
; token[x] =ch;
x++;
break
;
case'(
':typenum = 27
; token[x] =ch;
x++;
break
;
case')
':typenum = 28
; token[x] =ch;
x++;
break
;
case';
':typenum = 26
; token[x] =ch;
x++;
break
;
case'/
':typenum = 16
; token[x] =ch;
x++;
break
;
case'#
':typenum = 0
; token[x] =ch;
x++;
break
;
case':
':token[x] =ch;
x++;
ch =str[i];
i++;
if (ch == '='
)
else
break
;
default
: typenum = -1
;
break
; }}}
結果分析:詞法分析器正常執行,分析結果正確
四、實驗總結
通過編寫出乙個簡易的詞法分析程式,對自己的程式設計能力有了乙個更好的理解了。
詞法分析器實驗報告
一 實驗目的 編制乙個詞法分析器,通過該詞法分析程式的設計例項,進一步了解詞法分析程式構造的一些細節。二 實驗內容和要求 實驗內容 對字串表示的源程式,從左到右進行掃瞄和分解。根據詞法規則,識別出乙個乙個具有獨立意義的單詞符號,以供語法分析之用,若發現詞法錯誤,則返回出錯資訊。實驗要求 輸入 源程式...
詞法分析器實驗報告
一 實驗目的 通過設計乙個詞法分析程式,對詞法進行分析,加強對詞法的理解,掌握對程式語言的分解和理解。二 實驗內容和要求 在原程式中輸入源 在源程式中,自動識別單詞,把單詞分為五種,並輸出對應的單詞種別碼。識別關鍵字 main if int for while do return break con...
詞法分析實驗報告
實驗 一 詞法分析實驗 專業 商軟三班 姓名 姚棋輝 學號201506110250 一 實驗目的 編譯乙個詞法分析程式 實驗內容和要求 輸入字串,輸出這些字串的種別碼。二 實驗方法 步驟及結果測試 方法 鍵盤輸入字串時,使用陣列放起來,再從陣列這裡放進佇列。步驟 1 鍵盤輸入字串,存放在陣列中,2 ...