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

正文內(nèi)容

編譯原理課程設(shè)計(jì)設(shè)計(jì)任務(wù)書(shū)-資料下載頁(yè)

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

【正文】 f(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::SaveCode(){ if(fout)for(int i=0。ifprintf(fout,”%d %s %d %dn “,i,mnemonic[code[i].f],code[i].l,code[i].a)。} : include ”“ void main(){ PL0 cp(”“,”)。symset fsys。(PERIOD)。(CONSTSYM),(VARSYM),(PROCSYM)。(BEGINSYM),(CALLSYM),(IFSYM),(WHILESYM)。()。// 詞法分析,分析一個(gè)詞(0,0,fsys)。// 分程序分析處理功能()。// 保存代碼()。// 對(duì)目標(biāo)代碼的解釋執(zhí)行程序} 實(shí)驗(yàn)運(yùn)行結(jié)果:運(yùn)行的的文件見(jiàn)下圖右側(cè):實(shí)驗(yàn)中我是固定了文件名的,可以是改寫(xiě)成動(dòng)態(tài)輸入,由于在測(cè)試中我把所有的測(cè)試語(yǔ)句都放在同一個(gè)文件中了,沒(méi)有太多的必要。六、心得體會(huì)在編譯程序?qū)崿F(xiàn)的過(guò)程中反復(fù)使用了遞歸調(diào)用的思想,且也使用了模塊化處理問(wèn)題的思想,使用模塊化的思想關(guān)鍵是在抽象階段要抽象出對(duì)應(yīng)的模塊,且模塊的層次必須是清晰的。在實(shí)現(xiàn)此程序中,由于要實(shí)現(xiàn)關(guān)鍵字和符號(hào)表中字段的搜索,實(shí)現(xiàn)中就必須注意快速查找的方法,而在實(shí)現(xiàn)的過(guò)程中多次用到了二分搜索的方法,這是個(gè)比較快的搜索方法。由于此程序的實(shí)現(xiàn)相對(duì)比較復(fù)雜,且不方便調(diào)試,改進(jìn)時(shí)可以把此程序的詞法分析,語(yǔ)法分析和執(zhí)行原代碼作為單獨(dú)的測(cè)試程序來(lái)測(cè)試,這樣也方便大家來(lái)調(diào)試。通過(guò)本次的課設(shè)我知道了一個(gè)算法的設(shè)計(jì)是需要靜下心來(lái)仔細(xì)的研究的,且實(shí)現(xiàn)中必須先了解程序的整個(gè)流程,也就是說(shuō)在編程中首先必須看懂那些對(duì)應(yīng)的UML圖,只有在圖的指導(dǎo)下,編程中才不會(huì)盲目,也有一定的方向性。同樣在編程中必須注意代碼的規(guī)范,多寫(xiě)一些對(duì)應(yīng)的注釋是很必要的,要時(shí)刻想這代碼并不是給你自己看的,而是必須要給別人看,因此我覺(jué)得代碼的規(guī)范是相當(dāng)重要的。第四篇:編譯原理課程設(shè)計(jì)心得體會(huì)經(jīng)過(guò)一個(gè)星期的編譯原理課程設(shè)計(jì),本人在劉貞老師的指導(dǎo)下,順利完成該課程設(shè)計(jì)。通過(guò)該課程設(shè)計(jì),收獲頗多。一、對(duì)實(shí)驗(yàn)原理有更深的理解通過(guò)該課程設(shè)計(jì),掌握了什么是編譯程序,編譯程序工作的基本過(guò)程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過(guò)程、構(gòu)造工具及其相關(guān)的技術(shù)對(duì)課本上的知識(shí)有了更深的理解,課本上的知識(shí)師機(jī)械的,表面的。通過(guò)把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來(lái)以為很深?yuàn)W的書(shū)本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。二、對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解通過(guò)把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解。三、通過(guò)該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過(guò)的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過(guò)自己設(shè)計(jì)的程序表示出來(lái),加深了對(duì)理論知識(shí)的理解。以前對(duì)與計(jì)算機(jī)操copyright作系統(tǒng)的認(rèn)識(shí)是模糊的,概念上的,現(xiàn)在通過(guò)自己動(dòng)手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識(shí)了操作系統(tǒng)是如何處理命令的,如何協(xié)調(diào)計(jì)算機(jī)內(nèi)部各個(gè)部件運(yùn)行,對(duì)計(jì)算機(jī)編譯原理的認(rèn)識(shí)更加深刻。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì),在程序調(diào)試時(shí),注意指針,將不必要的命令去除。在這次課程設(shè)計(jì)中,我就是按照實(shí)驗(yàn)指導(dǎo)的思想來(lái)完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開(kāi)發(fā)能力的目的。第五篇:編譯原理課程設(shè)計(jì)報(bào)告(格式)編譯原理課程設(shè)計(jì)報(bào)告課題名稱(chēng):提交文檔學(xué)生姓名:提交文檔學(xué)生學(xué)號(hào):同組 成 員 名 單:無(wú)指導(dǎo) 教 師 姓 名:指導(dǎo)教師評(píng)閱成績(jī):指導(dǎo)教師評(píng)閱意見(jiàn):提交報(bào)告時(shí)間:年月日構(gòu)造的編譯器的組成部分,能實(shí)現(xiàn)的功能。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)按文件列出主要程序代碼, 添加必要的注釋。lll標(biāo)準(zhǔn)測(cè)試程序的分析結(jié)果 修改后的測(cè)試程序分析結(jié)果(正確和錯(cuò)誤)詞法分析和語(yǔ)法分析的結(jié)果輸出(P79,P182)ll 收獲 不足
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1