for (i=cx0;i printf(\ fprintf(fa,\ } } } int statement(bool* fsys,int* ptx,int lev) { int i,cxl,cx2; bool nxtlev[symnum]; if (sym==ident) { i=position(id,*ptx); if (i==0) { error(11); } else { if(table[i].kind !=variable) { error(12); i=0; } else { getsymdo; if(sym==becomes) { getsymdo; } else { error(13); } memcpy(nxtlev,fsys,sizeof(bool)*symnum); expressiondo(nxtlev,ptx,lev); 21 if(i!=0) { gendo(sto,lev-table[i].level,table[i].adr); } } }/*if(i==0)*/ } else { if(sym==readsym) { getsymdo; if(sym!=lparen) { error(34); } else { do{ getsymdo; if(sym==ident) { i=position(id,*ptx); } else { i=0; } if(i==0) { error(35); } else { gendo(sto,lev-table[i].level,table[i].adr) ; } gendo(opr,0,16); 22 getsymdo; }while(sym==comma); } if(sym!=rparen) { error(33); while(! inset(sym,fsys)) { getsymdo; } } else { getsymdo; } } else { if(sym==writesym) { getsymdo; if(sym==lparen) { do{ getsymdo; memcpy(nxtlev,fsys,sizeof(bool)*symnum); nxtlev[rparen]=true; nxtlev[comma]=true; expressiondo(nxtlev,ptx,lev); gendo(opr,0,14); }while(sym==comma); if(sym!=rparen) { 23 error(33); } else { getsymdo; } } gendo(opr,0,15); } else {if(sym==callsym) { getsymdo; if(sym!=ident) { error(14); } else { i=position(id,*ptx); if(i==0) { error(11); } else { if(table[i].kind==procedur) { gendo(cal,lev-table[i].level,table[i].adr); } else { error(15); } } 24 getsymdo; } } else { if (sym==ifsym) { getsymdo; memcpy(nxtlev,fsys,sizeof(bool)*symnum); nxtlev[thensym]=true; nxtlev[dosym]=true; conditiondo(nxtlev,ptx,lev); if(sym==thensym) { getsymdo; } else { error(16); } cxl=cx; gendo(jpc,0,0); statementdo(fsys,ptx,lev); code[cxl].a=cx; } else { if(sym==beginsym) { 25
标准实验报告(PL0编译程序)(6)
2020-04-14 05:15
标准实验报告(PL0编译程序)(6).doc
将本文的Word文档下载到电脑
下载失败或者文档不完整,请联系客服人员解决!