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

正文內(nèi)容

編譯原理課程設(shè)計(jì)簡介(文件)

2024-11-14 22:22 上一頁面

下一頁面
 

【正文】 cter read}kk= al。// 出錯(cuò)處理,打印出錯(cuò)位置和出錯(cuò)代碼 void PL0::error(int n){ char s[10]。//error count }//error end // 詞法分析,讀取一個(gè)單詞void PL0::getsym(){ if(sourceEnd)return。||ch==9)getch()。k= k+1。if(k = kk)kk = k。}while(kk k)。// 判斷是否是關(guān)鍵字(二分搜索)do{ k=(i+j)/ 2。elsesym= IDENT。do{num= 10 * num + ch39。}while(isdigit(ch))。){ getch()。getch()。){ getch()。getch()。} }// 漏掉空格,讀取一個(gè)字符void PL0::getch(){ if(cc == ll){if(feof(fin)){if(sym!=PERIOD)error(25)。fgets(line,lineLength,fin)。} ch= line[cc]。code[cx].l= y。if((sym)==()){error(n)。it++)(*it)。// data allocation index int tx0。// 表指針table[tx].= cx。do{constdeclaration(tx,dx,lev)。elseerror(5)。while(sym == COMMA){getsym()。}while(sym==IDENT)。} elseerror(4)。(SEMICOLON)。for(int i= IDENT。}symset tmp=statbegsys。code[table[tx0].].a= cx。gen(INT,0,dx)。statement(tmp,tx,lev)。listcode(cx0)。strcpy(table[tx].name,id)。}table[tx].=num。dx++。case ARRAY:table[tx]. = lev。i= tx。tx,intamp。sym{if(sym ==BECOMES)error(1)。}elseerror(2)。tx,intamp。}//vardeclaration end// 數(shù)組說明處理void PL0::arraydeclaration(intamp。if(sym == NUMBER || sym == CONSTSYM){if(num == 0){upscript = num。elseerror(32)。else { enter(ARRAY,tx,dx,downscript+1)。icout// 語句部分處理void PL0::statement(symset fsys,int tx,int lev){ if(sourceEnd)return。else if(table[i].kind!=VARIABLE){error(12)。elseerror(13)。} else if(sym == READSYM){ getsym()。elsei=0。}getsym()。}elsegetsym()。for(int t=RPAREN。}while(sym==COMMA)。} else if(sym ==CALLSYM){ getsym()。else if(table[i].kind = PROCEDURE)gen(CAL,levtable[i].,table[i].)。symset tmp=fsys。if(sym == THENSYM)getsym()。(ELSESYM)。if(sym == ELSESYM){getsym()。statement(fsys,tx,lev)。for(int i=SEMICOLON。(SEMICOLON)。getsym()。i((symbol)i)。} if(sym ==ENDSYM)getsym()。symset tmp=fsys。// 記下當(dāng)前代碼分配位置,這是while的do中的語句的開始位置gen(JPC,0,0)。gen(JMP,0,cx1)。cx1= cx。(SEMICOLON)。}if(sym == UNTILSYM){getsym()。} symset setT。for(int t=PLUS。symaddop= sym。} elseterm(tmp,tx,lev)。getsym()。} }// expression end// 項(xiàng)處理void PL0::term(symset fsys,int tx,int lev){ if(sourceEnd)return。t((symbol)t)。 symmulop= sym。elsegen(OPR,0,5)。if(i == 0)error(11)。break。}else if(sym ==NUMBER){if(numamax){error(31)。}else if(sym ==LPAREN){getsym()。if(sym == RPAREN)getsym()。symset tmp=fsys。gen(OPR,0,6)。getsym()。case NEQ: gen(OPR,0,9)。case GEQ: gen(OPR,0,11)。case LEQ: gen(OPR,0,13)。s[t]= 。b= s[t+2]。case 2: t= t1。s[t]= s[t]s[t+1]。break。case 6: if(s[t]%2)s[t]=1。if(s[t]==s[t+1])s[t]=1。if(s[t]==s[t+1])s[t]=0。if(s[t]s[t]=1。if(s[t]=s[t+1])s[t]= 1。if(s[t]s[t+1])s[t]= 1。if(s[t]s[t]= 1。break。s[t]= s[base(,b,s)+]。break。b= t+1。break。t= t1。b1= b。}// 保存代碼void PL0::Save。l= l1。}//switch end}while(p!=0)。break。break。s[t+2]= b。case STO:s[base(,b,s)+]= s[t]。break。break。break。break。break。break。break。break。s[t]= s[t] / s[t+1]。case 4: t= t1。break。case 1: s[t]=s[t]。case OPR:switch()//operator{ case 0:// return t= b1。}} } }//condition end// 對目標(biāo)代碼的解釋執(zhí)行程序void PL0::interpret(){ int err1=()。case GTR: gen(OPR,0,12)。case LSS: gen(OPR,0,10)。switch(relop){case EQL: gen(OPR,0,8)。if((sym)==())error(20)。if(sym == ODDSYM){getsym()。}test(fsys,facbegsys,23)。(RPAREN)。}gen(LIT,0,num)。break。break。test(facbegsys,fsys,24)。factor(tmp,tx,lev)。while(sym=TIMES amp。symset tmp=fsys。if(addop ==PLUS)gen(OPR,0,2)。amp。term(tmp,tx,lev)。if(sym=PLUSamp。}//statement end// 表達(dá)式處理void PL0::expression(symset fsys,int tx,int lev){ symbol addop。gen(JPC,0,cx1)。elseerror(34)。statement(temp1,tx,lev)。} else if(sym == REPEATSYM){symset temp1, temp2。elseerror(18)。condition(tmp,tx,lev)。} else if(sym ==WHILESYM){ cx1= cx。if(sym==ENDSYM)break。tmp=fsys。if(sym ==SEMICOLON||sym ==ENDSYM)getsym()。statement(tmp,tx,lev)。} } else if(sym ==BEGINSYM){ getsym()。gen(JMP,0,0)。getsym()。cx1= cx。i((symbol)i)。getsym()。else {i= position(id,tx)。elsegetsym()。expression(tmp,tx,lev)。if(sym==LPAREN){do{getsym()。if(sym!= RPAREN){error(33)。else{gen(OPR,0,16)。elsedo{getsym()。if(sym!= SEMICOLON)error(10)。}getsym()。if(sym ==IDENT){i= position(id,tx)。} // 列出目標(biāo)代碼清單void PL0::listcode(int cx0)//list code generated for this block { int i。getsym()。}elseerror(32)。dx,int lev){int upscript=0,downscript=0。getsym()。} elseerror(4)。if(sym == NUMBER){enter(CONSTANT,tx,dx,lev)。if(sym=EQLamp。return i。} }//enter end// 查找標(biāo)示符在名字表中的位置int PL0::position(alfa id,int tx)//find identifier id in table { int i。case PROCEDURE:table[tx].=lev。case VARIABLE:table[tx].=lev。switch(k){ case CONSTANT:if(numamax){error(31)。tx,int amp。// return symset s2。for(int i=SEMICOLON。// start adr of code table[tx0].=dx。test(tmp,declbegsys,7)。test(tmp,fsys,6)。if(sym == SEMICOLON){getsym()。elseerror(5)。if(sym ==IDENT){enter(PROCEDURE,tx,dx,lev)。}if(sym ==SEMICOLON)getsym()。if(sym == VARSYM)// 處理變量聲明 { getsym()。constdeclaration(tx,dx,lev)。if(levlevmax)error(32)。// initial code indexdx= 3。} }//test end// 分程序分析處理過程void PL0::block(int lev,int tx,symset fsys){ if(sourceEnd)return。for(it=()。cx= cx+1。}// 生成目標(biāo)代碼,并送入目標(biāo)程序區(qū)void PL0::gen(fct x,int y,int z){ if(cx cxmax){coutreturn。ll=strlen(line)。return。} else// end of extra stuff { sym= ssym[ch]。=39。} else if(ch == 39。=39。} else if(ch == 39。k= k+1。num= 0。if(strcmp(id,word[k])=0)i= k+1。i= 1。 39。if(sourceEnd)return。memset(a,0,al+1)。while(ch ==39。(s+errStr[n])。// code line =fopen(source,”r“)。// 行緩沖區(qū)長度ch= 39。// 初始化項(xiàng)開始符號集合err= 0。strcpy(mnemonic[JPC],” jpc “)。strcpy(mnemonic[STO],” sto “)。]= SEMICOLON。39。// 初始化保留字表中每一個(gè)保// 初始化一些符號對應(yīng)的symbolssym[39。]= COMMA。=39。ssym[39。]= SLASH。*39。類型表ssym[39。memset(line,0,sizeof(line))。wsym[16]= WRITESYM。wsym[12]= THENSYM。wsym[8]= ODDSYM。wsym[4]= DOSYM。strcpy(word[16],”write“)。strcpy(word[12],”then“)。strcpy(word[8],”odd“)。strcpy(word[4],”do“)。// PL0構(gòu)造函數(shù)PL0::PL0(
點(diǎn)擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1