首页 > 其他 > 详细

0106递归下降语意分析

时间:2016-01-06 17:59:09      阅读:221      评论:0      收藏:0      [点我收藏+]
#include<stdio.h>
#include<string.h>
int i,j=1;
char N[100];

void A();
void A1();
void B();
void B1();
void C();


void A()
{
B();
A1();
}
void B()
{
C();
B1();
}
void A1()
{
if(N[i]==+||N[i]==-)
{
i++;
B();
A1();
}
else if(N[i]==#||N[i]==))
{
i++;
}
}
void B1()
{
if(N[i]==*||N[i]==/)
{
i++;
C();
B1();
}
else if(N[i]==#||N[i]==))
{
i++;
}

}
void C()
{
int d;
if((N[i]<=z&&N[i]>=a)||(N[i]<=Z&&N[i]>=A))
{
if((N[i++]<=z&&N[i++]>=a)||(N[i++]<=Z&&N[i++]>=A))
i++;
else 
{
printf("\n分析失败!\n");
j=0;
}
}
if(N[i]<=9&&N[i]>=0)
{
if(N[i++]<=9&&N[i++]>=0)
i++;
else 
{
printf("\n分析失败!\n");
j=0;
}
}
else if(N[i]==()
{
A();
if(N[i]==))
{
i++;
}
else
{ 
printf("\n分析失败!\n");
exit (0);
}
}
else
{ 
printf("\n分析失败!\n");
exit (0);
}
}
int main()
{
int len,d;
start:printf("请输入表达式:\n");
scanf("%s",N);
len=strlen(N);
N[len]=#;
N[len+1]=\0;
E();
if(J==1)
{
printf("是否为正确的表达式\n");
}
printf("是否重试?重试输入1:");
scanf("%d",&d);
if(d=1)
goto start;
return 0;

 

0106递归下降语意分析

原文:http://www.cnblogs.com/whitestar/p/5106300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!