递归下降语法分析程序设计
1 #include<stdio.h> 2 3 #include<string> 4 char str[10]; 5 int index=0; 6 void E(); 7 void X(); 8 void T(); 9 void Y(); 10 void F(); 11 int main() 12 { 13 int len; 14 int m; 15 printf("请输入测试的次数:"); 16 scanf("%d",&m); 17 while(m--) 18 { 19 printf("请输入表达式:"); 20 scanf("%s",str); 21 len=strlen(str); 22 str[len]='#'; 23 str[len+1]='\0'; 24 E(); 25 printf("正确语句!\n"); 26 strcpy(str,""); 27 index=0; 28 } 29 return 0; 30 } 31 void E() 32 { 33 T(); 34 X(); 35 } 36 void X() 37 { 38 if(str[index]=='+') 39 { 40 index++; 41 T(); 42 X(); 43 } 44 } 45 void T() 46 { 47 F(); 48 Y(); 49 } 50 void Y() 51 { 52 if(str[index]=='*') 53 { 54 index++; 55 F(); 56 Y(); 57 } 58 } 59 void F() 60 { 61 if(str[index]=='i') 62 { 63 index++; 64 } 65 else if (str[index]=='(') 66 { 67 index++; 68 E(); 69 if(str[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 }