您的位置:首页 > 编程语言 > C语言/C++

表达式语法分析——递归子程序法

2017-04-26 13:21 323 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言