发布时间 : 星期二 文章编译原理词法分析,语法分析实验报告更新完毕开始阅读
.
} return; } term() { factor();
while((syn==15)||(syn==16))
{ scaner(); /*读下一个单词符号*/ factor(); /*调用函数factor(); */ } return; } factor()
{ if((syn==10)||(syn==11)) scaner(); else if(syn==27)
{ scaner(); /*读下一个单词符号*/ expression(); /*调用函数statement();*/ if(syn==28)
scaner(); /*读下一个单词符号*/ else { printf(\ kk=1; } }
专业资料
.
else { printf(\ kk=1; } return; } scaner() { sum=0;
for(m=0;m<8;m++)token[m++]=NULL; m=0;
ch=prog[p++];
while(ch==' ')ch=prog[p++];
if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A')))
{ while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9')))
{token[m++]=ch; ch=prog[p++]; } p--; syn=10;
token[m++]='\\0'; for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0)
专业资料
.
{ syn=n+1; break; } }
else if((ch>='0')&&(ch<='9')) { while((ch>='0')&&(ch<='9')) { sum=sum*10+ch-'0'; ch=prog[p++]; } p--; syn=11; }
else switch(ch) { case '<':m=0; ch=prog[p++]; if(ch=='>') { syn=21; }
else if(ch=='=') { syn=22; } else
专业资料
.
{ syn=20; p--; } break; case '>':m=0; ch=prog[p++]; if(ch=='=') { syn=24; } else { syn=23; p--; } break; case ':':m=0; ch=prog[p++]; if(ch=='=') { syn=18; } else { syn=17; p--;
专业资料