簡單的詞法分析小程式

2022-06-04 22:39:19 字數 3725 閱讀 1884

實驗:詞法分析

一.實驗目的:編寫乙個詞法分析

實驗要求:輸入:源程式字串

輸出:二元組(種別,單詞本身)

二.詞法分析程式設計

詞法規則:字母

數字<0|1|2|...|9>

整數常數:《數字》

識別符號:《變數〉

關鍵字:

運算子:

界符   :

各單詞對應的種別碼

三:源**展示

1 #include2 #include 

3 #include4 #include5 typedef struct

node

6qnode,*queueptr;

1011 typedef struct

12linkqueue;

1617

linkqueue q;

18 queueptr p; //

定義乙個指標變數

19char *keyword[30]=;

22char *operatornum[6]=;

23char *comparison[8]=;

24char *interpunction[8]=

"};

25char *biaoshifu[6]=; //

特殊識別符號

26char *zhushifu[3]=; //

注釋符

27char *luoji[3]=; //

邏輯運算子

28char *k="";29

30void initqueue() //

初始化乙個帶節點的空佇列

3137

void

printf()

3846 printf("\n"

);47}48

void creat() //

建立佇列

4963}64

6566

int search(char searchstr,int wordtype)//

符號匹配

67

77break

; 78

case

2:

79for(i=0;i<=5;i++)

80

84break

; 85

86case

3:

87for(i=0;i<=7;i++)

88

92break

; 93

94case

4:

95for(i=0;i<=7;i++)

96

100101

break

; 102

case

5:

103for(i=0;i<=5;i++)

104

108break

; 109

case

6:

110for(i=0;i<=2;i++)

111

115break

; 116

case

7:

117for(i=0;i<=2;i++)

118

122break

; 123

} 124

125return -1

; 126

} 127

void

analyze()

128

147 letter[i+1]='\0'

; 148

if (search(letter,1)!=-1

) 149

153else

154

157}

158else

159

169if(isalpha(str)!=0) //

數字後面是字元

170

177 num[i+1]='\0'

; 178 printf("

錯誤!非法識別符號:%s\n

",num);

179180

} 181 num[i+1]='\0'

; 182 printf("

( %d,%s )\n

",65

,num);

183}

184else

185

193while ((isspace(str)==0)&&(isalnum(str)==0

))

194

201 other[i+1]='\0'

; 202

if (search(other,2)!=-1

) 203 printf("

( %d,%s )\n

",search(other,2

),other);

204else

if (search(other,3)!=-1

) 205 printf("

( %d,%s )\n

",search(other,3

),other);

206else

if (search(other,4)!=-1

) 207 printf("

( %d,%s )\n

",search(other,4

),other);

208else

if (search(other,5)!=-1

) 209 printf("

( %d,%s )\n

",search(other,5

),other);

210else

if (search(other,6)!=-1

) 211 printf("

( %s,注釋符號 )\n

",other);

212else

if (search(other,7)!=-1

) 213 printf("

( %d,%s )\n

",search(other,7

),other);

214else

215 printf("

錯誤!非法字元:%s\n

",other);

216}

217}

218 }while(q.front!=q.rear);

219 printf("

詞法分析結束,謝謝使用!\n

");

220}

221222

intmain()

223

詞法分析程式

上課沒聽啥,一邊看書,一邊做的。基本上,老師的要求是實現了,能把乙個句子 也可以是一整個程式,但還不完善,由於時間急,很多情況來不及考慮了 中的單詞項分析出它是保留字,還是識別符號,運算子等等。開始是在控制台下做得,也比較純正 lex.h ifndef lex h define lex h incl...

詞法分析程式

include include char scanin 300 scanout 300 extern int testscan char scanin 300 scanout 300 file fin,fout 指向輸入輸出檔案的指標 int main include include include...

詞法分析程式

include include void fenxi char c,char b void word char a void number char a int i 定義全域性變數i int s 1 用來記錄是否存在非法字元 main printf n void number char a 對數字字...