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

正文內(nèi)容

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

2025-01-19 17:27本頁面
  

【正文】 。z39。amp。a39。Z39。amp。A39。z39。amp。a39。) //跳過空字符(無效輸入) ch=prog[p++]。||ch==39。 //從prog中讀出一個(gè)字符到ch中 while(ch==39。n++) token[n]=NULL。 for(n=0。 decimal=0。nextq++。strcpy(fourCom[nextq].opera,op)。 //p2是頭,p1覆蓋0,接在p2后邊}void emit(char *res,char *num1,char *op,char *num2){strcpy(fourCom[nextq].result,res)。 sprintf(fourCom[circle].result,%s,p1)。 while(atoi(fourCom[circle].result)) //四元式第四個(gè)分量不為0 {circle=atoi(fourCom[circle].result)。 if(p2==0) nResult=p1。 //w記錄的是鏈條上下一個(gè)四元式,移動(dòng)! } return。 //把t填進(jìn)四元式circle的第四分量 sprintf(fourCom[circle].result,%d,t)。 while(circle) //circle不為0的時(shí)候 {w=atoi(fourCom[circle].result)。 return p。 p[0]=39。 itoa(kk,varTemp,10)。 p=(char *)malloc(10)。}char *newTemp(){char *p。 } else isError=1。 if(syn==27) //) {scanner()。 } else if(syn==26) //( {scanner()。 } else if(syn==20) //二進(jìn)制數(shù) {itoa((int)sum,res,10)。if(syn==10) //字符串{strcpy(res,token)。}char* F() //Factor因子{char *res。 strcpy(num1,res)。 strcpy(res,newTemp())。 scanner()。while((syn==24)||(syn==25)) //* / {if(syn==24) strcpy(op,*)。num2=(char *)malloc(10)。num1=(char *)malloc(10)。}char* T() //Term項(xiàng){char *res,*num1,*op,*num2。 strcpy(num1,res)。 strcpy(res,newTemp())。 scanner()。 while((syn==22)||(syn==23)) //+ {if(syn==22) //+ strcpy(op,+)。 num2=(char *)malloc(10)。 num1=(char *)malloc(10)。 }}}char* E() //Expression表達(dá)式{char *res,*num1,*op,*num2。 emit(res,num,=,)。 if(syn==21) //= {scanner()。 //num操作數(shù) if(syn==10) //字符串 {strcpy(res,token)。 } if(syn==27) //) scanner()。 emit(0,goto)。 backpatch(nnb,nnc)。 nnb=nextq。 strcat(num1,op)。 } } scanner()。 break。 break。 break。 break。 break。 break。amp。 strcpy(num1,E())。 //語句塊 if(syn==9) //while {scanner()。 staBlock(amp。 //記住if語句位置,emit之后nextq就變了 //emit(0,if,num1,goto)。 int nChainTemp。 //語句塊 *nChain=merge(nChainTemp,nfc)。 staBlock(amp。 //第一個(gè)0已回填 backpatch(ntc,nextq)。 nfc=nextq。 ntc=nextq。 strcat(num1,num2)。 strcpy(num2,E())。 default: printf(error)。 case 37: strcpy(op,!=)。 case 36: strcpy(op,==)。 case 35: strcpy(op,=)。 case 34: strcpy(op,)。 case 33: strcpy(op,=)。(syn=32)) {switch(syn) {case 32: strcpy(op,)。 if((syn=37)amp。 if(syn==26) //( {scanner()。 //條件表達(dá)式關(guān)系運(yùn)算符表達(dá)式 if(syn==6) //if {scanner()。}//條件語句if(條件)語句塊void tiaojian(int *nChain){char res[10],num1[10],num2[10],op[10]。 } else if(syn==6) //if {tiaojian(nChain)。}void sta(int *nChain) //語句{if(syn==10) {fuzhi()。sta(nChain)。while(syn==31) //。void staString(int *nChain) //語句串{sta(nChain)。}//語句串::=語句{。 //讀下一個(gè) else printf(缺少}號(hào)\n)。//backpatch(*nChain,nextq)。void staBlock(int *nChain) //語句塊{if(syn==28) //{{scanner()。語句串39。}//語句塊 ::= 39。 } else printf(缺少左括號(hào)\n)。nChain)。 if(syn==27) //) {scanner()。 if(syn==1) //main {scanner()。 nfc=ntc=1。 //生成四元式void scanner()。 //回填int merge(int p1,int p2)。 //Factor因子char *newTemp()。 //Expresiion表達(dá)式char* T()。 //條件語句void xunhuan()。 //語句void fuzhi()。 //語句塊void staString(int *nChain)。void lrparser()。void t1()。void e1()。scaner1()。yufafenxi()。}fourCom[20]。 char opera[10]。 struct{ char result[10]。 //臨時(shí)變量的標(biāo)號(hào)int ntc,nfc,nnc,nnb,nna。 //是否連續(xù)出現(xiàn)+,int nextq。 int temp2。 //指數(shù)冪 int isNegative。 //小數(shù) int isExp。int isDecimal。 int isSignal。 //syn:種別編碼 double sum。 //存放詞組 char ch。char prog[80]。char *rwtab1[6]={begin,if,then,while,do,end}。//左括號(hào)的標(biāo)志char prog1[80],token1[8],ch1。char str[MAX]。//sum用于計(jì)算運(yùn)算符的個(gè)數(shù) //m用于標(biāo)記輸入表達(dá)式中字符的個(gè)數(shù) char JG=39。 //數(shù)組下標(biāo)int right1。define MAX 100char inputstream[50]。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開發(fā)能力的目的。把學(xué)過的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過自己設(shè)計(jì)的程序表示出來,加深了對(duì)理論知識(shí)的理解?! ∪⒓ぐl(fā)了學(xué)習(xí)的積極性  通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來以為很深?yuàn)W的書本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。不成立則“出錯(cuò)處理”。amp。不是則“出錯(cuò)處理”,若是則調(diào)用scaner函數(shù)224。調(diào)用語句串分析函數(shù)224。遞歸下降分析的大致流程為:“先判斷是否為begin”224。調(diào)用IrParse224。 通過本次試驗(yàn),了解了語法分析的運(yùn)行過程,主程序大致流程為:“置初值”224。 詞法分析的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào),其基本思想是根據(jù)掃描到單詞符號(hào)的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號(hào)。 }結(jié)果演示五、課程設(shè)計(jì)的體會(huì)與總結(jié) 經(jīng)過一個(gè)星期的編譯原理課程設(shè)計(jì),本人在陳宏建老師的指導(dǎo)下,順利完成該課程設(shè) 計(jì)。 printf(Mov %1s,AL\n,fourCom[i].result)。}if(strcmp(fourCom[i].opera,/)==0) { printf(Mov AX,%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(ADD Ax,%1s\n,fourCom[i].arg2)。 printf(Move %5s,Ax\n,fourCom[i].result)。void xunhuan()該函數(shù)的功能是對(duì)循環(huán)語句進(jìn)行分析。void fuzhi()該函數(shù)的功能是對(duì)賦值語句進(jìn)行分析。 //生成四元式void emit(char *res,char *num1,char *op,char *num2) 該函數(shù)的功能是生成一個(gè)三地址語句送到四式表中 char *newTemp()該函數(shù)的功能是會(huì)動(dòng)一個(gè)新的臨時(shí)變量,臨時(shí)變量名產(chǎn)生的 順序是T1,T2,T3,….int merge(int p1,int p2)該函數(shù)的功能是將以P1,P2為鏈?zhǔn)椎膬蓷l鏈合并成一條鏈,返回時(shí)的函數(shù)值作為合并后的鏈?zhǔn)住?//回填int merge(int p1,int p2)。 //Factor因子char *newTemp()。 //Expresiion表達(dá)式char* T()。 //條件語句void xunhuan()。 //語句void fuzhi()。 //語句塊void staString(int *nChain)。 //掃描void lrparser()。單詞符號(hào)及種別表單詞符號(hào)種別編碼單詞值main1 int 2 float3 double4 char5 if 6 else 7 do8
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1