码迷,mamicode.com
首页 > 其他好文 > 详细

1229递归下降

时间:2016-01-01 23:03:16      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<string.h>
int i,t=1;
char a[100];

void E();
void E1();
void T();
void T1();
void F();


void E()
{
T();
E1();
}
void T()
{
F();
T1();
}
void E1()
{
if(a[i]==‘+‘||a[i]==‘-‘)
{
i++;
T();
E1();
}
else if(a[i]==‘#‘||a[i]==‘)‘)
{
i++;
}
}
void T1()
{
if(a[i]==‘*‘||a[i]==‘/‘)
{
i++;
F();
T1();
}
else if(a[i]==‘#‘||a[i]==‘)‘)
{
i++;
}

}
void F()
{
int d;
if((a[i]<=‘z‘&&a[i]>=‘a‘)||(a[i]<=‘Z‘&&a[i]>=‘A‘))
{
if((a[i++]<=‘z‘&&a[i++]>=‘a‘)||(a[i++]<=‘Z‘&&a[i++]>=‘A‘))
i++;
else 
{
printf("\n分析失败!\n");
t=0;
}
}
if(a[i]<=‘9‘&&a[i]>=‘0‘)
{
if(a[i++]<=‘9‘&&a[i++]>=‘0‘)
i++;
else 
{
printf("\n分析失败!\n");
t=0;
}
}
else if(a[i]==‘(‘)
{
E();
if(a[i]==‘)‘)
{
i++;
}
else

printf("\n分析失败!\n");
exit (0);
}
}
else

printf("\n分析失败!\n");
exit (0);
}
}
int main()
{
int len,d;
start:printf("请输入表达式:\n");
scanf("%s",a);
len=strlen(a);
a[len]=‘#‘;
a[len+1]=‘\0‘;
E();
if(t==1)
{
printf("是正确的表达式\n");
}
printf("是否重试?重试输入1:");
scanf("%d",&d);
if(d=1)
goto start;
return 0;

1229递归下降

标签:

原文地址:http://www.cnblogs.com/15linzhijie/p/5093838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!