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 }
遞歸下降文法分析程式設計