freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理課程設(shè)計(jì)簡(jiǎn)介-資料下載頁(yè)

2024-11-14 22:22本頁(yè)面
  

【正文】 RAY,tx,dx,downscript+1)。getsym()。} // 列出目標(biāo)代碼清單void PL0::listcode(int cx0)//list code generated for this block { int i。if(listswitch)for(i= cx0。icout// 語(yǔ)句部分處理void PL0::statement(symset fsys,int tx,int lev){ if(sourceEnd)return。int i,cx1,cx2。if(sym ==IDENT){i= position(id,tx)。if(i == 0)error(11)。else if(table[i].kind!=VARIABLE){error(12)。i= 0。}getsym()。if(sym ==BECOMES)getsym()。elseerror(13)。expression(fsys,tx,lev)。if(sym!= SEMICOLON)error(10)。if(i!= 0)gen(STO,levtable[i].,table[i].)。} else if(sym == READSYM){ getsym()。if(sym!=LPAREN)error(34)。elsedo{getsym()。if(sym==IDENT)i=position(id,tx)。elsei=0。if(i==0)error(35)。else{gen(OPR,0,16)。gen(STO,levtable[i].,table[i].)。}getsym()。}while(sym == COMMA)。if(sym!= RPAREN){error(33)。while((sym)!=())getsym()。}elsegetsym()。} else if(sym == WRITESYM){ getsym()。if(sym==LPAREN){do{getsym()。symset tmp=fsys。for(int t=RPAREN。t((symbol)t)。expression(tmp,tx,lev)。gen(OPR,0,14)。}while(sym==COMMA)。if(sym!=RPAREN)error(33)。elsegetsym()。} gen(OPR,0,15)。} else if(sym ==CALLSYM){ getsym()。if(sym!=IDENT)error(14)。else {i= position(id,tx)。if(i == 0)error(11)。else if(table[i].kind = PROCEDURE)gen(CAL,levtable[i].,table[i].)。elseerror(15)。getsym()。} } else if(sym ==IFSYM){ getsym()。symset tmp=fsys。for(int i = THENSYM。i((symbol)i)。condition(tmp,tx,lev)。if(sym == THENSYM)getsym()。elseerror(16)。cx1= cx。gen(JPC,0,0)。(ELSESYM)。statement(tmp,tx,lev)。getsym()。code[cx1].a= cx。if(sym == ELSESYM){getsym()。cx2=cx。gen(JMP,0,0)。code[cx1].a=cx。statement(fsys,tx,lev)。code[cx2].a=cx。} } else if(sym ==BEGINSYM){ getsym()。symset tmp=fsys。for(int i=SEMICOLON。i((symbol)i)。statement(tmp,tx,lev)。tmp=statbegsys。(SEMICOLON)。while((sym)!=()){if(sourceEnd)return。if(sym ==SEMICOLON||sym ==ENDSYM)getsym()。else if(sym=PERIOD){error(26)。getsym()。}elseerror(10)。tmp=fsys。for(i=SEMICOLON。i((symbol)i)。if(sourceEnd)return。if(sym==ENDSYM)break。statement(tmp,tx,lev)。} if(sym ==ENDSYM)getsym()。else if(!sourceEnd)error(17)。} else if(sym ==WHILESYM){ cx1= cx。// 記下當(dāng)前代碼分配位置,這是while循環(huán)的開(kāi)始位置getsym()。symset tmp=fsys。(DOSYM)。condition(tmp,tx,lev)。cx2= cx。// 記下當(dāng)前代碼分配位置,這是while的do中的語(yǔ)句的開(kāi)始位置gen(JPC,0,0)。if(sym ==DOSYM)getsym()。elseerror(18)。statement(fsys,tx,lev)。gen(JMP,0,cx1)。code[cx2].a= cx。} else if(sym == REPEATSYM){symset temp1, temp2。temp1= fsys,(SEMICOLON),(UNTILSYM)。cx1= cx。getsym()。statement(temp1,tx,lev)。temp2 = statbegsys。(SEMICOLON)。while((sym)!= ()){if(sym == SEMICOLON)getsym()。elseerror(34)。statement(temp1,tx,lev)。}if(sym == UNTILSYM){getsym()。condition(fsys,tx,lev)。gen(JPC,0,cx1)。}elseerror(34)。} symset setT。test(fsys,setT,19)。}//statement end// 表達(dá)式處理void PL0::expression(symset fsys,int tx,int lev){ symbol addop。symset tmp=fsys。for(int t=PLUS。t((symbol)t)。if(sym=PLUSamp。amp。symaddop= sym。getsym()。term(tmp,tx,lev)。if(addop ==MINUS)gen(OPR,0,1)。} elseterm(tmp,tx,lev)。while(sym =PLUSamp。amp。symaddop= sym。getsym()。term(tmp,tx,lev)。if(addop ==PLUS)gen(OPR,0,2)。elsegen(OPR,0,3)。} }// expression end// 項(xiàng)處理void PL0::term(symset fsys,int tx,int lev){ if(sourceEnd)return。symbol mulop。symset tmp=fsys。for(int t=TIMES。t((symbol)t)。factor(tmp,tx,lev)。while(sym=TIMES amp。amp。 symmulop= sym。getsym()。factor(tmp,tx,lev)。if(mulop ==TIMES)gen(OPR,0,4)。elsegen(OPR,0,5)。} }// term end// 因子處理void PL0:: factor(symset fsys,int tx,int lev){ int i。test(facbegsys,fsys,24)。while((sym)!=()){if(sym ==IDENT){i= position(id,tx)。if(i == 0)error(11)。elseswitch(table[i].kind){case CONSTANT:gen(LIT,0,table[i].)。break。case VARIABLE:gen(LOD,levtable[i].,table[i].)。break。case PROCEDURE:error(21)。break。}getsym()。}else if(sym ==NUMBER){if(numamax){error(31)。num= 0。}gen(LIT,0,num)。getsym()。}else if(sym ==LPAREN){getsym()。symset tmp=fsys。(RPAREN)。expression(tmp,tx,lev)。if(sym == RPAREN)getsym()。elseerror(22)。}test(fsys,facbegsys,23)。} }//factor end// 條件處理void PL0::condition(symset fsys,int tx,int lev){ symbol relop。symset tmp=fsys。(EQL),(NEQ),(LSS),(LEQ),(GTR),(GEQ)。if(sym == ODDSYM){getsym()。expression(fsys,tx,lev)。gen(OPR,0,6)。} else {expression(tmp,tx,lev)。if((sym)==())error(20)。else{relop= sym。getsym()。expression(fsys,tx,lev)。switch(relop){case EQL: gen(OPR,0,8)。break。case NEQ: gen(OPR,0,9)。break。case LSS: gen(OPR,0,10)。break。case GEQ: gen(OPR,0,11)。break。case GTR: gen(OPR,0,12)。break。case LEQ: gen(OPR,0,13)。break。}} } }//condition end// 對(duì)目標(biāo)代碼的解釋執(zhí)行程序void PL0::interpret(){ int err1=()。if(err10){coutcoutt= t+1。s[t]= 。break。case OPR:switch()//operator{ case 0:// return t= b1。p= s[t+3]。b= s[t+2]。break。case 1: s[t]=s[t]。break。case 2: t= t1。s[t]= s[t]+s[t+1]。break。case 3: t= t1。s[t]= s[t]s[t+1]。break。case 4: t= t1。s[t]= s[t]*s[t+1]。break。case 5: t= t1。s[t]= s[t] / s[t+1]。break。case 6: if(s[t]%2)s[t]=1。elses[t]=0。break。case 8: t= t1。if(s[t]==s[t+1])s[t]=1。elses[t]=0。break。case 9: t= t1。if(s[t]==s[t+1])s[t]=0。elses[t]=1。break。case 10: t= t1。if(s[t]s[t]=1。elses[t]=0。break。case 11: t= t1。if(s[t]=s[t+1])s[t]= 1。elses[t]=0。break。case 12: t= t1。if(s[t]s[t+1])s[t]= 1。elses[t]=0。break。case 13: t= t1。if(s[t]s[t]= 1。elses[t]=0。break。case 14: couts[t]。break。}。break。case LOD:t= t+1。s[t]= s[base(,b,s)+]。break。case STO:s[base(,b,s)+]= s[t]。t= t1。break。case CAL:// generate new block marks[t+1]= base(,b,s)。s[t+2]= b。s[t+3]= p。b= t+1。p=。break。case INT:t= t+。break。case JMP:p= 。break。case JPC:if(s[t] == 0)p= 。t= t1。break。}//switch end}while(p!=0)。cout// 通過(guò)靜態(tài)鏈求出數(shù)據(jù)區(qū)的基地址int PL0::base(int l,int b,int s[]){ int b1。b1= b。//find base l levels down while(l0){b1= s[b1]。l= l1。} return b1。}// 保存代碼void PL0::
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1