您的位置:首页 > 其它

12.16_实验四 递归下降语法分析程序设计

2015-12-30 17:36 288 查看
#include<stdio.h>
char curr;
char LL1[1000];
int N=0;

void scaner();

int digital(){ //panduanshifouweishuzi

if(curr >= '0' && curr <= '9')
{
return 1;
}
else {
return 0;
}

}

int english(){
if(curr >= 'a' && curr<='z' || curr >= 'A' && curr <= 'Z')
{
return 1;
}
else
return 0;

}
int yuansuanf(){
if(curr=='+'||curr=='-'||curr=='*'||curr=='/')
{
return 1;
}

else{
return 0;
}

}
int end(){
if(curr!='#'){
return 1;
}
else
return 0;
}

int check(){

if(digital()==1){
scaner();
if(end()==1){
if(yuansuanf()==1){

return 1;
}
else if(yuansuanf()==0){
return 0;

}
}
else if(end()==0){
return 1;
}

}

return 0;

}

void checking(){
int number;
qq: scaner();
if(digital()==1){
while(curr!='#'){
number=check();
if(number==1){
goto qq;
}
else if(number==0){

break;
}
}
}

if(number==1){

printf("没有错误\n");
}
else
printf("%c\n错误\n",curr);

}

void main()
{ char ch;
int i=0;
printf("请输入需要分析的语法:(以#结束)\n");
do{
scanf("%c",&ch);
LL1[i] = ch;
i++;
}while(ch != '#');
scaner();
checking();

}

void scaner(){ //用于读取源函数的下一个字符

N++;
if(LL1
== ' '){
N++;
}else
{
curr = LL1
;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: