一个简单的C语言编译器(9) l1=new Label; l2=new Label; m->code=l1->text+":\n"+s3->code+"\tpop ax\n\tcmp ax,1\n\tjne "+l2->text+"\n"+s5->code+"\tjmp "+l1->text+"\n"+l2->text+":\n"; delete l1; delete l2; log<<"语法分析:S->w(G)S"<<endl; } delete s1; delete s2; delete s3; delete s4; delete s5; break; case 5://OK //S->i(G)SeS ss.pop(); ss.pop(); ss.pop(); ss.pop(); ss.pop(); ss.pop(); ss.pop(); s7=sos.top(); sos.pop(); s6=sos.top(); sos.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); //动作 l1=new Label; l2=new Label; if(s1->word=="if"){ m->code=s3->code+"\tpop ax\n\tcmp ax,1\n\tjnz "+l1->text+"\n"+s5->code+"\tjmp "+l2->text+"\n"+l1->text+":\n"+s7->code+l2->text+":\n";