c 模擬簡單詞法分析器

2021-08-18 15:42:52 字數 1270 閱讀 8747

編譯原理的基礎之一就是詞法分析,這裡便使用c++簡單模擬了乙個詞法分析器。

這個詞法分析器的狀態轉換圖如下:

而我的執行截圖如下:

**如下:

#include

using

namespace

std;

#define max_len 200

//將乙個字串內容清空

void cleararray(char *c)

}//判斷是否為數字,true為是,false為不是

bool isdigit(char c)

else

}//判斷是否為字母,ture為是,false為不是

bool ischar(char c)

else

}/** 單詞輸出函式

* @param label 該單詞的意義

* @param word 經過詞法分析器分析後得到的單個單詞

*/void print(string label, char *word)

; // 作為tempchar的乙個索引

int j = 0;

//用於遍歷inchar字元陣列

int i = 0;

while(inchar[i] != '\0')

else

break;

default:

//判斷是否為字母+數字

if(ischar(inchar[i]))

j = 0;

print("字母+數字",tempchar);

cleararray(tempchar);

}else

if(isdigit(inchar[i]))

j = 0;

print("數字",tempchar);

cleararray(tempchar);

}else

}i++;

}}int main()

; //獲取輸入字串,輸入的字串以空格、回車、換行作為結束符

cin>>inchar;

//對輸入的字串進行分析

analysis(inchar);

return

0;}

C語言簡單詞法分析器

詞法分析器 c語言 輸入源程式 輸出單詞符號 1 預處理程式 2 掃瞄器 單詞識別程式 include include include define keyword num 32 int pos pos搜尋指標 char ch ch最新讀入的字元 char buf 1000000 buf緩衝區 ch...

簡單詞法分析器實現

編寫分析器有兩種方法,一種是通過dfa對單詞進行識別,二是通過直接編敲 進行識別。本程式採用dfa對單詞進行識別。dfa的實現方法。大概思想和書上一致,在程式中,則是用二維陣列代表狀態轉換矩陣,用一維陣列表示終態。可以識別識別符號 keyword 數字和運算子,對凝視進行過濾。同一時候還能識別出程式...

簡單詞法分析器實現

編寫分析器有兩種方法,一種是通過dfa對單詞進行識別,二是通過直接編敲 進行識別。本程式採用dfa對單詞進行識別。dfa的實現方法。大概思想和書上一致,在程式中,則是用二維陣列代表狀態轉換矩陣,用一維陣列表示終態。可以識別識別符號 keyword 數字和運算子,對凝視進行過濾。同一時候還能識別出程式...