#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib> //exit(0)函数头文件
using namespace std;
char str[100];
int num = 0;
int cur = 0;
void E();
void F();
void G();
void T();
void S();
void S(){
if(str[cur] == '*'){
printf("%d S-->*FS\n",num++);
cur++;
F();
S();
}else
printf("%d S-->&\n",num++);
}
void G(){
if(str[cur] == '+'){
printf("%d G-->+TG\n",num++);
cur++;
T();
G();
}else
printf("%d G-->&\n",num++);
}
void F(){
if(str[cur] == 'i'){
printf("%d F-->i\n",num++);
cur++;
}else if(str[cur] == '('){
printf("%d F-->(E)\n",num++);
cur++;
E();
if(str[cur] == ')'){
cur++;
}else{
printf("error\n");
exit(0);
}
}else{
printf("error\n");
exit(0);
}
}
void T(){
printf("%d T-->FS\n",num++);
F();
S();
}
void E(){
printf("%d E-->TG\n",num++);
T();
G();
}
int main(){
scanf("%s",str);
E();
if(str[cur]!='#')
printf("error\n");
else
printf("accept\n");
return 0;
}
表达式语法分析——递归子程序法
最新推荐文章于 2022-04-15 11:08:46 发布