編譯原理的基礎之一就是詞法分析,這裡便使用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 數字和運算子,對凝視進行過濾。同一時候還能識別出程式...