演算法分析實驗報告 詞法分析器

2022-06-04 23:15:13 字數 3291 閱讀 1865

實驗

一、詞法分析實驗

商業軟體工程專業   李錦旭  學號201506110131

一、實驗目的

通過設計乙個詞法分析程式,對詞法進行分析,加強對詞法的理解,掌握對程式語言的分解和理解。

二、實驗內容和要求

在原程式中輸入源**

在源程式中,自動識別單詞,把單詞分為五種,並輸出對應的單詞種別碼。

識別關鍵字:main if int for while do return break continue,該類的單詞碼為1.

識別識別符號:表示各種名字,如變數名、陣列名、函式名等,如char ch, int syn, token,sum,該類的單詞碼為2.

運算子:+、-、*、/、=、>、=、<=、!=

分隔符:,、;、、(、)

常數,如123,4587

各種單詞符號對應的種別碼。

輸出形式:

– (單詞種別,單詞自身的值)

– 整數碼

– 識別符號token、常數sum

– 關鍵字、運算子、界符token

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

源程式名:

可執行程式名:

原理分析及流程圖

主要程序段及其解釋:

實現主要功能的程式段,重要的是程式的注釋解釋。

void

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

; }}}

執行結果及分析輸入源**:begin x:=9: if x>9 then x:=2*x; end #

結果分析:詞法分析器正常執行,分析結果正確

四、實驗總結

通過編寫出乙個簡易的詞法分析程式,對自己的程式設計能力有了乙個更好的理解了。

詞法分析器實驗報告

一 實驗目的 編制乙個詞法分析器,通過該詞法分析程式的設計例項,進一步了解詞法分析程式構造的一些細節。二 實驗內容和要求 實驗內容 對字串表示的源程式,從左到右進行掃瞄和分解。根據詞法規則,識別出乙個乙個具有獨立意義的單詞符號,以供語法分析之用,若發現詞法錯誤,則返回出錯資訊。實驗要求 輸入 源程式...

詞法分析器實驗報告

一 實驗目的 通過設計乙個詞法分析程式,對詞法進行分析,加強對詞法的理解,掌握對程式語言的分解和理解。二 實驗內容和要求 在原程式中輸入源 在源程式中,自動識別單詞,把單詞分為五種,並輸出對應的單詞種別碼。識別關鍵字 main if int for while do return break con...

詞法分析實驗報告

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