首页 > 其他 > 详细

词法分析程序

时间:2016-09-30 21:30:10      阅读:203      评论:0      收藏:0      [点我收藏+]

词法分析程序的功能:
提示用户输入一段需分析的源程序,然后程序读入该源程序的字符串进行词法分析,最后输出词法分析的结果显示在屏幕上。
符号与种别码对照表:
单词符号 种别码 单词符号 种别码
begin     1        :          17
if           2        :=        18
then      3        <          20
while      4       <=        22
do         5 
end       6         >         23
l(l|d)*   10       >=       24
dd*      11       =         25
+         13         ;        26
-          14        (         27
*          15        )        28
/          16        #         0

 

<字母>
S->a|b|c||d|.....y|z|
<数字>
D->1|2|3|...|8|9|
S->D|SD|S0|
<标识符>
A->1|2|3|...|8|9|
B->a|b|c|...|y|z|
S->AB
<关键字>
B->a|b|c|...|y|z|
S->B|AB|
<运算符>s
A->+|-|*|/|
<界符>
D->:|;|...|<|=|
S->D|SD|

 

 1 #include<stdio.h>
 2 #define MAX 100
 3 char ch,zifu[MAX];
 4 int zhongbie,p;/*zhongbie代表字符种别,p代表数组zifi的下标位置*/
 5 void cwh();
 6 main()
 7 {
 8     p=0;
 9     gets(zifu);
10     
11         cwh();
12         printf("%d",zhongbie);
13     /*如何输出数字*/
14 
15 }
16 void cwh()
17 {
18     int i,m;/*m用于记录linshi的下标*/
19     char *guanjianzi[6]={"begin","if","then","while","do","end"};/*char*[]数组每个元素指向一个char型的变量,关键字数组记得zhongbie+1*/
20     char shuangfuhao[2]={1,1};/*字符=1*/
21     char linshi[8];
22     for(i=0;i<8;i++)
23         linshi[i]=NULL;/*定义一个临时存放字符串的数组用作比较*/
24     m=0;
25     ch=zifu[p++];
26     /*开始识别字符种别*/
27     while(ch== )
28     {
29         p++;
30         ch=zifu[p];   
31     }
32     /*识别关键字或者标志符*/
33     if((ch>=a&&ch<=z)||(ch>=A&&ch<=Z))
34     {
35          while((ch>=0&&ch<=9)||(ch>=a&&ch<=z)||(ch>=A&&ch<=Z))
36         {
37             linshi[m++]=ch;
38             ch=zifu[p++];
39         }
40         p--;
41         zhongbie=10;
42         for(i=0;i<6;i++)  /*将识别出来的字符和已定义的标示符作比较 */
43         {
44             if(strcmp(linshi,guanjianzi[i])==0)
45             {
46                 zhongbie=i+1;
47                 break;
48             }
49         }
50     }
51     /*识别数字*/
52     else if((ch>=0&&ch<=9))
53     {
54         while((ch>=0&&ch<=9))
55         {
56             ch=zifu[++p];
57         }
58         zhongbie=11;
59     }
60 
61 }

程序还没完成,只写到了识别关键字和数字的部分

词法分析程序

原文:http://www.cnblogs.com/lsq141205/p/5924822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!