首页 > 代码库 > 词法分析程序

词法分析程序

词法分析程序的功能:
提示用户输入一段需分析的源程序,然后程序读入该源程序的字符串进行词法分析,最后输出词法分析的结果显示在屏幕上。
符号与种别码对照表:
单词符号 种别码 单词符号 种别码
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 }

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

词法分析程序