IF-ELSE条件语句的翻译程序设计(LL(1)法、输出三地址表示) 2 下载本文

武汉理工大学《编译原理》课程设计说明书

{ td[t]='-1'; err(f); } }

//测法分析程序 void lexical()

{ //\是其一条特殊的例子 int i,j,d; char ch; j=d=0; for(i=0;var[i]!='#';i++) { ch=var[i]; if(ch=='i'&&var[i+1]=='f') { cout<<\关键字]\ queue[j++]='f';i+=1; }//{判断\关键字} else if(ch=='t') { ch=var[i+1]; if(ch=='h') { ch=var[i+2]; if(ch=='e') { ch=var[i+3]; if(ch=='n') { ch=var[i+4]; } } } cout<<\关键字]\ queue[j++]='t';i+=3; }//{判断\关键字} else if(ch=='e') { ch=var[i+5]; if(ch=='l') { ch=var[i+6];

26

武汉理工大学《编译原理》课程设计说明书

if(ch=='s') { ch=var[i+7]; if(ch=='e') { ch=var[i+8]; } } } cout<<\关键字]\ queue[j++]='e';i+=3; }//{判断\关键字} else if(index(ch,VT)<=0) { if(ch!='{'&&ch!='}'&&ch!='('&&ch!=')') { cout<0) { cout<

//主函数

int main() //主程序 { int i=0; char S='K'; sp=front=0; stack[0]='#'; sp++; stack[1]='K'; cout<<\

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\

27

武汉理工大学《编译原理》课程设计说明书

cout<<\ | IF-ELSE条件语句的翻译程序设计(LL(1)法、输出三地址表示) |\ cout<<\ | made by Jebb Xu|\ cout<<\

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ cout<\\n(4)S->iQE\\n(5)E->TG\\n(6)G->+TG\\n\\\n(9)T->FR\\n(10)R->*FR\\n(11)R->/FR\\n(12)R->ε\\n(13)F->(E)\\n\ <<\ cout<<\请输语句(如:'if{m>n}theni=i+3elseb=b/2#'):\ do { cin>>var[i]; i++; if(var[i]==' ')i--; }while(var[i-1]!='#'); var[i]='\\0'; cout<<\词法分析:\ lexical();//词法分析程序 cout<<\语法分析:\ syntax();//语法分析程序 cout<<\所用产生式序列:\ for(i=0;td[i]!='-1';i++)cout<=0&&arr[i][j]<=9) cout<<\ else cout<

εε

28