编译原理词法分析,语法分析实验报告 联系客服

发布时间 : 星期二 文章编译原理词法分析,语法分析实验报告更新完毕开始阅读

.

} 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--;

专业资料