一个简单的C语言编译器(13) case 12://OK //L->L,@ log<<"语法分析:L->L,@"<<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='L'; m->line=s1->line; sos.push(m); if(!lookup(s3->word)) symbolList.insert(symbolList.end(),s3->word); else err(11,s3->line); delete s1; delete s2; delete s3; break; case 13://OK //G->G&M log<<"语法分析:G->G&M"<<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='G'; m->line=s1->line; sos.push(m); //动作 if(s2->word=="&&") m->code=s3->code+s1->code+"\tpop ax\n\tpop bx\n\tand ax,bx\n\tpush ax\n"; if(s2->word=="") m->code=s3->code+s1->code+"\tpop ax\n\tpop bx\n\tor ax,bx\n\tpush ax\n";