一个简单的C语言编译器(14) delete s1; delete s2; delete s3; break; case 14://OK //G->M log<<"语法分析:G->M"<<endl; ss.pop(); s1=sos.top(); sos.pop(); m=new Symbol; m->group='G'; m->line=s1->line; sos.push(m); //动作 m->code=s1->code; delete s1; break; case 15: //M->E>E log<<"语法分析:M->E>E"<<endl; ss.pop(); ss.pop(); ss.pop(); s3=sos.top(); sos.pop(); s2=sos.top(); sos.pop(); s1=sos.top(); sos.pop(); m=new Symbol; m->group='M'; m->line=s1->line; sos.push(m); //动作 l1=new Label; l2=new Label; m->code=s3->code+s1->code+"\tpop ax\n\tpop bx\n\tcmp ax,bx\n"; if(s2->word==">") m->code+="\tjg "+l1->text+"\n"; if(s2->word=="<") m->code+="\tjl "+l1->text+"\n"; if(s2->word=="==") m->code+="\tje "+l1->text+"\n"; if(s2->word=="!=")