一个简单的C语言编译器(8) ss.pop(); ss.pop(); s3=sos.top(); sos.pop(); s2=sos.top(); sos.pop(); s1=sos.top(); sos.pop(); m=new Symbol; m->group='S'; m->line=s1->line; sos.push(m); //动作 m->code=s2->code; delete s1; delete s2; delete s3; break; case 4://OK //S->i(G)S ss.pop(); ss.pop(); ss.pop(); ss.pop(); ss.pop(); s5=sos.top(); sos.pop(); s4=sos.top(); sos.pop(); s3=sos.top(); sos.pop(); s2=sos.top(); sos.pop(); s1=sos.top(); sos.pop(); m=new Symbol; m->group='S'; m->line=s1->line; sos.push(m); //动作 if(s1->word=="if"){ l1=new Label; m->code=s3->code+"\tpop ax\n\tcmp ax,1\n\tjne "+l1->text+"\n"+s5->code+l1->text+":\n"; delete l1; log<<"语法分析:S->i(G)S"<<endl; } if(s1->word=="while"){