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

正文內(nèi)容

編譯原理課程設(shè)計(jì)設(shè)計(jì)任務(wù)書-閱讀頁(yè)

2024-11-10 21:26本頁(yè)面
  

【正文】 sesym= IDENT。num= 0。do{num= 10 * num + ch39。k= k+1。}while(isdigit(ch))。} else if(ch == 39。){ getch()。=39。getch()。} else if(ch == 39。){ getch()。=39。getch()。} else// end of extra stuff { sym= ssym[ch]。} }// 漏掉空格,讀取一個(gè)字符void PL0::getch(){ if(cc == ll){if(feof(fin)){if(sym!=PERIOD)error(25)。return。fgets(line,lineLength,fin)。ll=strlen(line)。} ch= line[cc]。}// 生成目標(biāo)代碼,并送入目標(biāo)程序區(qū)void PL0::gen(fct x,int y,int z){ if(cx cxmax){coutreturn。code[cx].l= y。cx= cx+1。if((sym)==()){error(n)。for(it=()。it++)(*it)。} }//test end// 分程序分析處理過程void PL0::block(int lev,int tx,symset fsys){ if(sourceEnd)return。// data allocation index int tx0。// initial code indexdx= 3。// 表指針table[tx].= cx。if(levlevmax)error(32)。do{constdeclaration(tx,dx,lev)。constdeclaration(tx,dx,lev)。elseerror(5)。if(sym == VARSYM)// 處理變量聲明 { getsym()。while(sym == COMMA){getsym()。}if(sym ==SEMICOLON)getsym()。}while(sym==IDENT)。if(sym ==IDENT){enter(PROCEDURE,tx,dx,lev)。} elseerror(4)。elseerror(5)。(SEMICOLON)。if(sym == SEMICOLON){getsym()。for(int i= IDENT。test(tmp,fsys,6)。}symset tmp=statbegsys。test(tmp,declbegsys,7)。code[table[tx0].].a= cx。// start adr of code table[tx0].=dx。gen(INT,0,dx)。for(int i=SEMICOLON。statement(tmp,tx,lev)。// return symset s2。listcode(cx0)。tx,int amp。strcpy(table[tx].name,id)。switch(k){ case CONSTANT:if(numamax){error(31)。}table[tx].=num。case VARIABLE:table[tx].=lev。dx++。case PROCEDURE:table[tx].=lev。case ARRAY:table[tx]. = lev。} }//enter end// 查找標(biāo)示符在名字表中的位置int PL0::position(alfa id,int tx)//find identifier id in table { int i。i= tx。return i。tx,intamp。if(sym=EQLamp。sym{if(sym ==BECOMES)error(1)。if(sym == NUMBER){enter(CONSTANT,tx,dx,lev)。}elseerror(2)。} elseerror(4)。tx,intamp。getsym()。}//vardeclaration end// 數(shù)組說(shuō)明處理void PL0::arraydeclaration(intamp。dx,int lev){int upscript=0,downscript=0。if(sym == NUMBER || sym == CONSTSYM){if(num == 0){upscript = num。}elseerror(32)。elseerror(32)。getsym()。else { enter(ARRAY,tx,dx,downscript+1)。} // 列出目標(biāo)代碼清單void PL0::listcode(int cx0)//list code generated for this block { int i。icout// 語(yǔ)句部分處理void PL0::statement(symset fsys,int tx,int lev){ if(sourceEnd)return。if(sym ==IDENT){i= position(id,tx)。else if(table[i].kind!=VARIABLE){error(12)。}getsym()。elseerror(13)。if(sym!= SEMICOLON)error(10)。} else if(sym == READSYM){ getsym()。elsedo{getsym()。elsei=0。else{gen(OPR,0,16)。}getsym()。if(sym!= RPAREN){error(33)。}elsegetsym()。if(sym==LPAREN){do{getsym()。for(int t=RPAREN。expression(tmp,tx,lev)。}while(sym==COMMA)。elsegetsym()。} else if(sym ==CALLSYM){ getsym()。else {i= position(id,tx)。else if(table[i].kind = PROCEDURE)gen(CAL,levtable[i].,table[i].)。getsym()。symset tmp=fsys。i((symbol)i)。if(sym == THENSYM)getsym()。cx1= cx。(ELSESYM)。getsym()。if(sym == ELSESYM){getsym()。gen(JMP,0,0)。statement(fsys,tx,lev)。} } else if(sym ==BEGINSYM){ getsym()。for(int i=SEMICOLON。statement(tmp,tx,lev)。(SEMICOLON)。if(sym ==SEMICOLON||sym ==ENDSYM)getsym()。getsym()。tmp=fsys。i((symbol)i)。if(sym==ENDSYM)break。} if(sym ==ENDSYM)getsym()。} else if(sym ==WHILESYM){ cx1= cx。symset tmp=fsys。condition(tmp,tx,lev)。// 記下當(dāng)前代碼分配位置,這是while的do中的語(yǔ)句的開始位置gen(JPC,0,0)。elseerror(18)。gen(JMP,0,cx1)。} else if(sym == REPEATSYM){symset temp1, temp2。cx1= cx。statement(temp1,tx,lev)。(SEMICOLON)。elseerror(34)。}if(sym == UNTILSYM){getsym()。gen(JPC,0,cx1)。} symset setT。}//statement end// 表達(dá)式處理void PL0::expression(symset fsys,int tx,int lev){ symbol addop。for(int t=PLUS。if(sym=PLUSamp。symaddop= sym。term(tmp,tx,lev)。} elseterm(tmp,tx,lev)。amp。getsym()。if(addop ==PLUS)gen(OPR,0,2)。} }// expression end// 項(xiàng)處理void PL0::term(symset fsys,int tx,int lev){ if(sourceEnd)return。symset tmp=fsys。t((symbol)t)。while(sym=TIMES amp。 symmulop= sym。factor(tmp,tx,lev)。elsegen(OPR,0,5)。test(facbegsys,fsys,24)。if(i == 0)error(11)。break。break。break。}else if(sym ==NUMBER){if(numamax){error(31)。}gen(LIT,0,num)。}else if(sym ==LPAREN){getsym()。(RPAREN)。if(sym == RPAREN)getsym()。}test(fsys,facbegsys,23)。symset tmp=fsys。if(sym == ODDSYM){getsym()。gen(OPR,0,6)。if((sym)==())error(20)。getsym()。switch(relop){case EQL: gen(OPR,0,8)。case NEQ: gen(OPR,0,9)。case LSS: gen(OPR,0,10)。case GEQ: gen(OPR,0,11)。case GTR: gen(OPR,0,12)。case LEQ: gen(OPR,0,13)。}} } }//condition end// 對(duì)目標(biāo)代碼的解釋執(zhí)行程序void PL0::interpret(){ int err1=()。s[t]= 。case OPR:switch()//operator{ case 0:// return t= b1。b= s[t+2]。case 1: s[t]=s[t]。case 2: t= t1。break。s[t]= s[t]s[t+1]。case 4: t= t1。break。s[t]= s[t] / s[t+1]。case 6: if(s[t]%2)s[t]=1。break。if(s[t]==s[t+1])s[t]=1。break。if(s[t]==s[t+1])s[t]=0。break。if(s[t]s[t]=1。break。if(s[t]=s[t+1])s[t]= 1。break。if(s[t]s[t+1])s[t]= 1。break。if(s[t]s[t]= 1。break。break。break。s[t]= s[base(,b,s)+]。case STO:s[base(,b,s)+]= s[t]。break。s[t+2]= b。b= t+1。break。break。break。t= t1。}//switch end}while(p!=0)。b1= b。l= l1。}// 保存代碼void PL0::SaveCode(){ if(fout)for(int i=0。} : include ”“ void main(){ PL0 cp(”“,”)。(PERIOD)。(BEGINSYM),(CALLSYM),(IFSYM),(WHILESYM)。// 詞法分析,分析一個(gè)詞(0,0,fsys)。// 保存代碼()。六、心得體會(huì)在編譯程序?qū)崿F(xiàn)的過程中反復(fù)使用了遞歸調(diào)用的思想,且也使用了模塊化處理問題的思想,使用模塊化的思想關(guān)鍵是在抽象階段要抽象出對(duì)應(yīng)的模塊,且模塊的層次必須是清晰的。由于此程序的實(shí)現(xiàn)相對(duì)比較復(fù)雜,且不方便調(diào)試,改進(jìn)時(shí)可以把此程序的詞法分析,語(yǔ)法分析和執(zhí)行原代碼作為單獨(dú)的測(cè)試程序來(lái)測(cè)試,這樣也方便大家來(lái)調(diào)試。同樣在編程中必須注意代碼的規(guī)范,多寫一些對(duì)應(yīng)的注釋是很必要的,要時(shí)刻想這代碼并不是給你自己看的,而是必須要給別人看,因此我覺得代碼的規(guī)范是相當(dāng)重要的。通過該課程設(shè)計(jì),收獲頗多。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來(lái)以為很深?yuàn)W的書本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。三、通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把學(xué)過的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過自己設(shè)計(jì)的程序表示出來(lái),加深了對(duì)理論知識(shí)的理解。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì),在程序調(diào)試時(shí),注意指針,將不必要的命令去除。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開發(fā)能力的目的。lllll 實(shí)現(xiàn)方法:編程語(yǔ)言、編程方法 系統(tǒng)總圖,各部分的實(shí)現(xiàn)原理、方法、中間結(jié)果、最后輸出 掃描器:各單詞的狀態(tài)轉(zhuǎn)換圖、轉(zhuǎn)換表 分析器:分析表 代碼設(shè)計(jì)說(shuō)明:程序結(jié)構(gòu)圖,文件和函數(shù)的設(shè)計(jì)說(shuō)明,關(guān)鍵數(shù)據(jù)結(jié)構(gòu)按文件列出主要程序代碼, 添加必要
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1