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

正文內(nèi)容

pl0源代碼(c語言版)-資料下載頁

2025-08-05 00:50本頁面
  

【正文】 ]=true。 nxtlev[minus]=true。 termdo(nxtlev,ptx,lev)。 /*處理項*/ } while(sym==plus||sym==minus) { addop=sym。 getsymdo。 memcpy(nxtlev,fsys,sizeof(bool)*symnum)。 nxtlev[plus]=true。 nxtlev[minus]=true。 termdo(nxtlev,ptx,lev)。 /*處理項*/ if(addop==plus) { gendo(opr,0,2)。 /*生成加法指令*/ } else { gendo(opr,0,3)。 /*生成減法指令*/ } } return 0。}/**項處理*/int term(bool*fsys,int *ptx,int lev){ enum symbol mulop。 /*用于保存乘除法符號*/ bool nxtlev[symnum]。 memcpy(nxtlev,fsys,sizeof(bool)*symnum) 。 nxtlev[times]=true。 nxtlev[slash]=true。 factordo(nxtlev,ptx,lev)。 /*處理因子*/ while(sym==times||sym==slash) { mulop=sym。 getsymdo。 factordo(nxtlev,ptx,lev)。 if(mulop==times) { gendo(opr,0,4)。 /*生成乘法指令*/ } else { gendo(opr,0,5)。 /*生成除法指令*/ } } return 0。}/**因子處理*/int factor(bool*fsys,int *ptx,int lev) { int i。 bool nxtlev[symnum]。 testdo(facbegsys,fsys,24)。 /*檢測因子的開始符好號*/ while(inset(sym,facbegsys)) /*循環(huán)直到不是因子開始符號*/ { if(sym==ident) /*因子為常量或者變量*/ { i=position(id,*ptx)。 /*查找名字*/ if(i==0) { error(11)。 /*標識符未聲明*/ } else { switch(table[i].kind) { case constant: /*名字為常量*/ gendo(lit,0,table[i].val)。 /*直接把常量的值入棧*/ break。 case variable: /*名字為變量*/ gendo(lod,levtable[i].level,table[i].adr)。 /*找到變量地址并將其值入棧*/ break。 case procedur: /*名字為過程*/ error(21)。 /*不能為過程*/ break。 } } getsymdo。 } else { if(sym==number) /*因子為數(shù)*/ { if(numamax) { error(31)。 num=0。 } gendo(lit,0,num)。 getsymdo。 } else { if(sym==lparen) /*因子為表達式*/ { getsymdo。 memcpy(nxtlev,fsys,sizeof(bool)*symnum)。 nxtlev[rparen]=true。 expressiondo(nxtlev,ptx,lev)。 if(sym==rparen) { getsymdo。 } else { error(22)。 /*缺少右括號*/ } } testdo(fsys,facbegsys,23)。 /*銀子后有非法符號*/ } } } return 0。}/* 條件處理*/int condition(bool* fsys,int* ptx,int lev){ enum symbol relop。 bool nxtlev[symnum]。 if(sym==oddsym) /*準備按照odd運算處理*/ { getsymdo。 expressiondo(fsys,ptx,lev)。 gendo(opr,0,6)。 /*生成odd指令*/ } else { memcpy(nxtlev,fsys,sizeof(bool)*symnum)。 nxtlev[eql]=true。 nxtlev[neq]=true。 nxtlev[lss]=true。 nxtlev[leq]=true。 nxtlev[gtr]=true。 nxtlev[geq]=true。 expressiondo(nxtlev,ptx,lev)。 if(sym!=eqlamp。amp。sym!=neqamp。amp。sym!=lssamp。amp。sym!=leqamp。amp。sym!=gtramp。amp。sym!=geq) { error(20)。 } else { relop=sym。 getsymdo。 expressiondo(fsys,ptx,lev)。 switch(relop) { case eql: gendo(opr,0,8)。 break。 case neq: gendo(opr,0,9)。 break。 case lss: gendo(opr,0,10)。 break。 case geq: gendo(opr,0,11)。 break。 case gtr: gendo(opr,0,12)。 break。 case leq: gendo(opr,0,13)。 break。 } } } return 0。} /*解釋程序*/void interpret(){ int p,b,t。 /*指令指針,指令基址,棧頂指針*/ struct instruction i。 /*存放當前指令*/ int s[stacksize]。 /*棧*/ printf(start pl0\n)。 t=0。 b=0。 p=0。 s[0]=s[1]=s[2]=0。 do{ i=code[p]。 /*讀當前指令*/ p++。 switch() { case lit: /*將a的值取到棧頂*/ s[t]=。 t++。 break。 case opr: /*數(shù)字、邏輯運算*/ switch() { case 0: t=b。 p=s[t+2]。 b=s[t+1]。 break。 case 1: s[t1]=s[t1]。 break。 case 2: t。 s[t1]=s[t1]+s[t]。 break。 case 3: t。 s[t1]=s[t1]s[t]。 break。 case 4: t。 s[t1]=s[t1]*s[t]。 break。 case 5: t。 s[t1]=s[t1]/s[t]。 break。 case 6: s[t1]=s[t1]%2。 break。 case 8: t。 s[t1]=(s[t1]==s[t])。 break。 case 9: t。 s[t1]=(s[t1]!=s[t])。 break。 case 10: t。 s[t1]=(s[t1]s[t])。 break。 case 11: t。 s[t1]=(s[t1]=s[t])。 break。 case 12: t。 s[t1]=(s[t1]s[t])。 break。 case 13: t。 s[t1]=(s[t1]=s[t])。 break。 case 14: printf(%d,s[t1])。 fprintf(fa2,%d,s[t1])。 t。 break。 case 15: printf(\n)。 fprintf(fa2,\n)。 break。 case 16: printf(?)。 fprintf(fa2,?)。 scanf(%d,amp。(s[t]))。 fprintf(fa2,%d\n,s[t])。 t++。 break。 } break。 case lod: /*取相對當前過程的數(shù)據(jù)基地址為a的內(nèi)存的值到棧頂*/ s[t]=s[base(,s,b)+]。 t++。 break。 case sto: /*棧頂?shù)闹荡娴较鄬Ξ斍斑^程的數(shù)據(jù)基地址為a的內(nèi)存*/ t。 s[base(,s,b)+]=s[t]。 break。 case cal: /*調(diào)用子程序*/ s[t]=base(,s,b)。 /*將父過程基地址入棧*/ s[t+1]=b。 /*將本過程基地址入棧,此兩項用于base函數(shù)*/ s[t+2]=p。 /*將當前指令指針入棧*/ b=t。 /*改變基地址指針值為新過程的基地址*/ p=。 /*跳轉(zhuǎn)*/ break。 case inte: /*分配內(nèi)存*/ t+=。 break。 case jmp: /*直接跳轉(zhuǎn)*/ p=。 break。 case jpc: /*
點擊復制文檔內(nèi)容
職業(yè)教育相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1