编译原理实验2-递归下降分析法(二)

2014-11-24 00:56:26 · 作者: · 浏览: 10
ract();
syn=20;}
break;
case'>':
token[0]=ch;
getcha();
if(ch=='=') {syn=24;token[1]=ch;}
else
{retract();
syn=23;}
break;
case'=': syn=25;token[0]=ch;break;
case':':
token[0]=ch;
getcha();
if(ch=='=') {syn=18;token[1]=ch;}
else
{retract();
syn=17;}
break;
case';': syn=26;token[0]=ch;break;
case'(': syn=27;token[0]=ch;break;
case')': syn=28;token[0]=ch;break;
case'#': syn=0;token[0]=ch;break;
default: syn=-1;break;
}
}
int main()
{
p=0;
printf("please input string: \n");
char c;
while(1)
{c=getchar();
if(c=='\n') break;
prog[p++]=c;
}
p=0;
scanner();
if(syn==1)
{Irparse();}//begin
else
{printf("语法分析出错! 请检查begin关键字\n");return 0;}
if(syn==6)//end
{
scanner();
if(syn==0)
{
printf("success!\n");
}
else
{printf("语法分析出错! 请检查是否缺少'#'\n");}
}
else{printf("语法分析出错! 请检查是否缺少'end'\n");}
return 0;
}