/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
類c語言詞法分析器是一款幫助編程工作者使用的編譯輔助程序。類c語言詞法分析器是一款幫助完成對源程序的掃描,從而將源程序轉換成單詞序列,為語法分析輸入做前提,歡迎有需要的工作人員下載使用!
【類c語言詞法分析器分析說明】:
需求分析
預處理:過濾掉跳格符、回車符、換行符等編輯性字符。將多個連續的空格合並成一個空格。過濾注釋。
單詞符號的識別,將每個單詞符號進行不同類別的劃分。單詞符號可劃分成5種。
關鍵字:如if、else、while、int、float等。
標識符:用戶自己定義的名字,常量名、變量名和過程名。
常數:各種類型的常數
運算符:如+、-、*、<、>、>=等。
屆符:如逗號、分號、括號等。
最後將所有的單詞符號轉化為便於計算機處理的機內碼形式
用戶界麵使用圖形化界麵
概要設計
1、 字符集說明:本詞法分析演示的是C語言的一個子集,字符集如下:
(1) 關鍵字:int,long,float,double,char,short,void,if,else,for,while,do,break,switch,
continue,case,default,return,static,struct
(2) 運算符:+,-,*,/,%,>,<,=,!=,==,<=,>=,++,--,!,&,&&,||,[]
(3) 界符:,,;,{,},(,),:,’,”,#
(4) 標識符:以字母開頭的字母數字串。
(5) 常數:整型或浮點型。
2、 字符集的內編碼形式:
字符 機內編碼 字符 機內編碼
int 1 = 26
long 2 > 27
char 3 < 28
if 4 ! 29
else 5 == 30
for 6 != 31
while 7 >= 32
return 8 <= 33
break 9 ++ 34
continue 10 -- 35
switch 11 & 36
case 12 && 37
default 13 || 38
float 14 [ 39
double 15 ] 40
void 16 , 41
struct 17 ; 42
static 18 ( 43
do 19 ) 44
short 20 { 45
+ 21 } 46
- 22 ‘ 47
* 23 “ 48
/ 24 : 49
% 25 # 50
如果是用戶自己定義的標識符則機內碼為51;
如果是常數,則機內碼為52。
錯誤則用0表示機內碼。
3、 相關變量說明:
1) keyword[]:{"int","long","char","if","else","for","while","return","break",
"continue","switch","case","default","float","double","void","struct","static","do","short"};
2) operater[]:{"+","-","*","/","%","=",">","<","!","==","!=",">=","<=","++","--",
"&","&&","||","[","]"};
3) delimeter[]:{",",";","(",")","{","}","\'","\"",":","#"};
4) 說明:1--20號為關鍵字,可直接用下標表示,i+1就是其機內碼,21--40為運算符,間接下標:i+21就是其機內碼, 41--50為界符,直接下標:i+41就是其機內碼;
如果是用戶自己定義的標識符,則其機內碼為51;如果是常數,則其機內碼是52;如果是
錯誤,則機內碼為0.
4、 主要類說明:
1) Analysis類:接收源程序,進行詞法分析工作,再將分析結果傳到用戶界麵。
2) UserFrame類:不參與詞法分析工作,隻提供用戶操作界麵。接收用戶的輸入,並產生輸出。
5、 主要方法說明:
1)preTreat():預處理,消除跳格符、換行符和回車符,合並空格並消除注釋。
2)doAnalysis():主分析函數,通過調用一係列子函數,完成分析工作並輸出結果。
3)divide():完成字符的分解,返回一個獨立的字符串(可能是關鍵字、標識符、運算符、界符或者數字串)。
4)check():對divide()返回的字符串進行檢查,判斷其是數字串、單個字符還是字符串,返回不同標誌。1:數字;2:單個字符;3:多個字符
5)checkDigit():如果check()返回的是數字串,則調用該函數判斷其是整型還是浮點型,返回不同標誌。是正常的數字類型則返回常數對應的機內碼,否則,返回錯誤的機內碼。
6)checkChar():如果check()返回的是單個字符,則調用該函數判斷其是標識符、運算符還是界符,返回其對應的機內碼。
7)checkString():如果check()返回的是字符串,則調用該函數判斷其是關鍵字、標識符還是運算符,返回其機內碼。