實驗:詞法分析
一.實驗目的:編寫乙個詞法分析
實驗要求:輸入:源程式字串
輸出:二元組(種別,單詞本身)
二.詞法分析程式設計
詞法規則:字母
數字<0|1|2|...|9>
整數常數:《數字》
識別符號:《變數〉
關鍵字:
運算子:
界符 :
各單詞對應的種別碼
三:源**展示
1 #include2 #include3 #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 對數字字...