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

正文內(nèi)容

編譯原理課程設(shè)計(jì)---編譯代碼生成器設(shè)計(jì)-文庫吧

2024-12-29 17:27 本頁面


【正文】 tor因子char *newTemp()。 //自動生成臨時(shí)變量void backpatch(int p,int t)。 //回填int merge(int p1,int p2)。 //合并p1和p2void emit(char *res,char *num1,char *op,char *num2)。 //生成四元式void emit(char *res,char *num1,char *op,char *num2) 該函數(shù)的功能是生成一個(gè)三地址語句送到四式表中 char *newTemp()該函數(shù)的功能是會動一個(gè)新的臨時(shí)變量,臨時(shí)變量名產(chǎn)生的 順序是T1,T2,T3,….int merge(int p1,int p2)該函數(shù)的功能是將以P1,P2為鏈?zhǔn)椎膬蓷l鏈合并成一條鏈,返回時(shí)的函數(shù)值作為合并后的鏈?zhǔn)?。void backpatch(int p,int t)該函數(shù)的功能是把P所鏈接的每個(gè)四元式的第四區(qū)段(result段)都回 填t。void fuzhi()該函數(shù)的功能是對賦值語句進(jìn)行分析。void tiaojian(int *nChain)該函數(shù)的功能是對條件語句進(jìn)行分析。void xunhuan()該函數(shù)的功能是對循環(huán)語句進(jìn)行分析。(4) 結(jié)果演示 圖一 簡單語句生成四元式 圖二 if語句的四元式生成 圖三 循環(huán)語句四元式生成(5)匯編生成if(strcmp(fourCom[i].opera,=)==0) {printf(Move AX,%1s\n,fourCom[i].arg1)。 printf(Move %5s,Ax\n,fourCom[i].result)。}if(strcmp(fourCom[i].opera,+)==0) { printf(Mov AX,%1s\n,fourCom[i].arg1)。 printf(ADD Ax,%1s\n,fourCom[i].arg2)。printf(Mov %1s,Ax\n,fourCom[i].result)。}if(strcmp(fourCom[i].opera,)==0) {printf(Mov AX,%1s\n,fourCom[i].arg1)。 printf(SUB Ax,%1s\n,fourCom[i].arg2)。 printf(Mov %1s,Ax\n,fourCom[i].result)。}if(strcmp(fourCom[i].opera,*)==0) {printf(Mov AL,%1s\n,fourCom[i].arg1)。 printf(MUL %1s\n,fourCom[i].arg2)。 printf(Mov %1s,Ax\n,fourCom[i].result)。}if(strcmp(fourCom[i].opera,/)==0) { printf(Mov AX,%1s\n,fourCom[i].arg1)。 printf(DIv %1s\n,fourCom[i].arg2)。 printf(Mov %1s,AL\n,fourCom[i].result)。}if(strcmp(fourCom[i].opera,goto)==0) { printf(jmp L%1s\n,i)。 }結(jié)果演示五、課程設(shè)計(jì)的體會與總結(jié) 經(jīng)過一個(gè)星期的編譯原理課程設(shè)計(jì),本人在陳宏建老師的指導(dǎo)下,順利完成該課程設(shè) 計(jì)。通過該課程設(shè)計(jì),收獲頗多。 詞法分析的基本任務(wù)是從字符串表示的源程序中識別出具有獨(dú)立意義的單詞符號,其基本思想是根據(jù)掃描到單詞符號的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號。通過本試驗(yàn)的完成,更加加深了對詞法分析原理的理解。 通過本次試驗(yàn),了解了語法分析的運(yùn)行過程,主程序大致流程為:“置初值”224。調(diào)用scaner函數(shù)讀下一個(gè)單詞符號224。調(diào)用IrParse224。結(jié)束。遞歸下降分析的大致流程為:“先判斷是否為begin”224。不是則“出錯(cuò)處理”,若是則“調(diào)用scaner函數(shù)”224。調(diào)用語句串分析函數(shù)224?!芭袛嗍欠駷閑nd”224。不是則“出錯(cuò)處理”,若是則調(diào)用scaner函數(shù)224。“判斷syn=0amp。amp。kk=0是否成立”成立則說明分析成功打印出來。不成立則“出錯(cuò)處理”。   一、對實(shí)驗(yàn)原理有更深的理解  通過該課程設(shè)計(jì),掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構(gòu)造工具及其相關(guān)的技術(shù)對課本上的知識有了更深的理解,課本上的知識師機(jī)械的,表面的。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來以為很深?yuàn)W的書本知識變的更為簡單,對實(shí)驗(yàn)原理有更深的理解?! 《?、對該理論在實(shí)踐中的應(yīng)用有深刻的理解  通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對該理論在實(shí)踐中的應(yīng)用有深刻的理解。  三、激發(fā)了學(xué)習(xí)的積極性  通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識變得生動有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過的計(jì)算機(jī)編譯原理的知識強(qiáng)化,能夠把課堂上學(xué)的知識通過自己設(shè)計(jì)的程序表示出來,加深了對理論知識的理解。以前對與計(jì)算機(jī)操    在這次課程設(shè)計(jì)中,我就是按照實(shí)驗(yàn)指導(dǎo)的思想來完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動手能力和程序開發(fā)能力的目的?!?附錄程序清單includeincludeincludefstreamincludeiostreamusing namespace std。define MAX 100char inputstream[50]。 //存儲輸入句子int temp1=0。 //數(shù)組下標(biāo)int right1。 //判斷輸出信息int m2=0,sum2=0。//sum用于計(jì)算運(yùn)算符的個(gè)數(shù) //m用于標(biāo)記輸入表達(dá)式中字符的個(gè)數(shù) char JG=39。A39。char str[MAX]。//用于存輸入表達(dá)式int tokene=0。//左括號的標(biāo)志char prog1[80],token1[8],ch1。int syn1,p1,m1,n1,sum1。char *rwtab1[6]={begin,if,then,while,do,end}。int r1 。char prog[80]。 //存放所有輸入字符 char token[8]。 //存放詞組 char ch。 //單個(gè)字符 int syn,p,m,n,i。 //syn:種別編碼 double sum。 int count。 int isSignal。 //是否帶正負(fù)號(0不帶,1負(fù)號,2正號)int isError。int isDecimal。 //是否是小數(shù) double decimal。 //小數(shù) int isExp。 //是否是指數(shù) int index。 //指數(shù)冪 int isNegative。 //是否帶負(fù)號 double temp。 int temp2。int repeat。 //是否連續(xù)出現(xiàn)+,int nextq。int kk。 //臨時(shí)變量的標(biāo)號int ntc,nfc,nnc,nnb,nna。char *rwtab[9]={main,int,float,double,char,if,else,do,while}。 struct{ char result[10]。 //字符串(字符數(shù)組) char arg1[10]。 char opera[10]。 char arg2[10]。}fourCom[20]。 //結(jié)構(gòu)體數(shù)組cifafenxi()。yufafenxi()。zhongjiandaima()。scaner1()。void e()。void e1()。void t()。void t1()。void f()。void lrparser()。 void staBlock(int *nChain)。 //語句塊void staString(int *nChain)。 //語句串void sta(int *nChain)。 //語句void fuzhi()。 //賦值語句void tiaojian(int *nChain)。 //條件語句void xunhuan()。 //循環(huán)語句char* E()。 //Expresiion表達(dá)式char* T()。 //Term項(xiàng)char* F()。 //Factor因子char *newTemp()。 //自動生成臨時(shí)變量void backpatch(int p,int t)。 //回填int merge(int p1,int p2)。 //合并p1和p2void emit(char *res,char *num1,char *op,char *num2)。 //生成四元式void scanner()。 //掃描void lrparser(){int nChain。 nfc=ntc=1。 nextq=1。 if(syn==1) //main {scanner()。 if(syn==26) //( {scanner()。 if(syn==27) //) {scanner()。 staBlock(amp。nChain)。 } else printf(缺少右括號\n)。 } else printf(缺少左括號\n)。} else printf(缺少main\n)。}//語句塊 ::= 39。{39。語句串39。}39。void staBlock(int *nChain) //語句塊{if(syn==28) //{{scanner()。staString(nChain)。//backpatch(*nChain,nextq)。if(syn==29) //} scanner()。 //讀下一個(gè) else printf(缺少}號\n)。 } else printf(缺少{號\n)。}//語句串::=語句{。語句}。void staString(int *nChain) //語句串{sta(nChain)。backpatch(*nChain,nextq)。while(syn==31) //。{scanner()。sta(nChain)。 } //backpatch(*nChain,nextq1)。}void sta(int *nChain) //語句{if(syn==10) {fuzhi()。 //*nChain=0。 } else if(syn==6) //if {tiaojian(nChain)。 } else if(syn==8) //do xunhuan()。}//條件語句if(條件)語句塊void tiaojian(int *nChain){char res[10],num1[10],num2[10],op[10]。 int nChainTemp。 //條件表達(dá)式關(guān)系運(yùn)算符表達(dá)式 if(syn==6) //if {scanner()。 //strcpy(num1,E())。 if(syn==26) //( {scanner()。 strcpy(num1,E())。 if((syn=37)amp。amp。(syn=32)) {switch(syn) {case 32: strcpy(op,)。 break。 case 33: strcpy(op,=)。 break。 case 34: strcpy(op,)。 bre
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1