递归下降分析

递归下降分析

商软一班

曾婉婷

201506110136

 

四、 程序代码:

  1 #include<stdio.h>
  2 char string[10];
  3 int index=0;
  4 void E();            //E->TE1;
  5 void X();            //X->+TE1 | e
  6 void T();            //T->FT1
  7 void Y();            //Y->*FT1 | e
  8 void F();            //F->(E) | i
  9 int i();
 10 
 11 int main()
 12 {
 13     int length;
 14     int m;
 15     printf("请输入表达式的个数:");
 16     scanf("%d",&m);
 17     while(m--)
 18     {
 19         printf("请输入算数表达式:");
 20         scanf("%s",string);
 21         length=strlen(string);
 22         string[length]='#';
 23         string[length+1]='\0';
 24         E();
 25         printf("正确!\n");
 26         strcpy(string,"");
 27         index=0;
 28     }
 29     return 0;
 30 }
 31 void E()
 32 {
 33     T();
 34     E1();
 35 }
 36 void E1()
 37 {
 38     if(string[index]=='+')
 39     {
 40         index++;
 41         T();
 42         E1();
 43     }
 44 }
 45 void T()
 46 {
 47     F();
 48     T1();
 49 }
 50 void T1()
 51 {
 52     if(string[index]=='*')
 53     {
 54         index++;
 55         F();
 56         T1();
 57     }
 58 }
 59 void F()
 60 {
 61     if(string[index]=='i')
 62     {
 63         index++;
 64     }
 65     else if (string[index]=='(')
 66     {
 67         index++;
 68         E();
 69         if(string[index]==')')
 70         {
 71             index++;
 72         }else{
 73             printf("\n失败!\n");
 74             exit (0);
 75         }
 76     }
 77     else{
 78         printf("失败!\n");
 79         exit(0);
 80     }
 81  }
 82  int i()
 83 {
 84      if(string[index]>='0'&&string[index]<='9')
 85     {
 86         while( string[index+1]>='0'&&string[index+1]<='9' )
 87         {
 88             index++;
 89         }
 90         if(string[index+1]>='a'&&string[index+1]<='z' )
 91             return 0;
 92 
 93         return 1;
 94     }
 95      else if(string[index]>='a'&&string[index]<='z' )
 96      {
 97          return 1;
 98      }
 99      else
100          return 0;
101 
102 }

 

 

 

posted @ 2016-12-19 21:07  136曾婉婷  阅读(296)  评论(1编辑  收藏  举报