首页 > 其他 > 详细

递归下降语法分析

时间:2014-06-16 06:14:22      阅读:424      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
  1 # include <stdio.h>
  2 # include <string.h>
  3 # include <stdlib.h>
  4 int E();
  5 int G();
  6 int T();
  7 int Ss();
  8 int F();
  9 char a[52];
 10 int total=0;
 11 int i=0;
 12 int temp=1;
 13 int main()
 14 {
 15     gets(a);
 16     int f;
 17     
 18     f=E();
 19     if(f==0)
 20         return 0;
 21     if(a[i] == #)
 22         printf("accept\n");
 23     else
 24     {
 25         printf("error\n");
 26         return 0;
 27     }
 28 }
 29 int E()
 30 {
 31     int f,t;
 32     printf("%d E-->TG\n",total++);
 33     f=T();
 34     if(!f)
 35         return 0;
 36     t=G();
 37     if(!t)
 38         return 0;
 39     else
 40         return 1;
 41     
 42 }
 43 int G()
 44 {
 45     int f,t;
 46     if(a[i] == +)
 47     {
 48         i++;
 49         printf("%d G-->+TG\n",total++);
 50         f=T();
 51         if(!f)
 52             return 0;
 53         t=G();
 54         if(!t)
 55             return 0;
 56         else
 57             return 1;
 58     }
 59     else 
 60     {
 61         printf("%d G-->&\n",total++);
 62         return 1;
 63     }
 64 
 65 }
 66 int T()
 67 {
 68     int f,t;
 69     printf("%d T-->FS\n",total++);
 70     f=F();
 71     if(!f)
 72         return 0;
 73     t=Ss();
 74     if(!t)
 75         return 0;
 76     else
 77         return 1;
 78 }
 79 int Ss()
 80 {
 81     int f,t;
 82     if(a[i] == *)
 83     {
 84         i++;
 85         printf("%d S-->*FS\n",total++);
 86         f=F();
 87         if(!f)
 88             return 0;
 89         t=Ss();
 90         if(!t)
 91             return 0;
 92         else
 93             return 1;
 94     }
 95     else
 96     {
 97         printf("%d S-->&\n",total++);
 98         return 1;
 99     }
100 
101 }
102 int F()
103 {
104     int f,t;
105     if(a[i] == ()
106     {
107         i++;
108         printf("%d F-->(E)\n",total++);
109         f=E();
110         if(!f)
111             return 0;
112         if(a[i] == ))
113             i++;
114         else
115         {
116             printf("error\n");
117             return 0;
118         }
119     }
120     else if(a[i] == i)
121     {
122         i++;
123         printf("%d F-->i\n",total++);
124     }
125     return 1;
126 }
bubuko.com,布布扣

 

递归下降语法分析,布布扣,bubuko.com

递归下降语法分析

原文:http://www.cnblogs.com/liun1994/p/3784051.html

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