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

正文內(nèi)容

編譯原理課程設(shè)計---編譯代碼生成器設(shè)計(編輯修改稿)

2025-07-13 03:07 本頁面
 

【文章內(nèi)容簡介】 um1,E())。 if((syn=37)amp。amp。(syn=32)) {switch(syn) {case 32: strcpy(op,)。 break。 case 33: strcpy(op,=)。 break。 case 34: 20 strcpy(op,)。 break。 case 35: strcpy(op,=)。 break。 case 36: strcpy(op,==)。 break。 case 37: strcpy(op,!=)。 break。 default: printf(error)。 }} scanner()。 strcpy(num2,E())。 strcat(num1,op)。 strcat(num1,num2)。 //nfc=nextq+1。 ntc=nextq。 //記住 if 語句位置 emit(0,if,num1,goto)。 nfc=nextq。 //if 中表達式為假 emit(0,goto)。 //第一個 0 已回填 backpatch(ntc,nextq)。 //ntc 鏈接的所有四元式都回填 nextq } if(syn==27) //) scanner()。 staBlock(amp。nChainTemp)。 //語句塊 *nChain=merge(nChainTemp,nfc)。 }} //循環(huán)語句 ::=do 語句塊 while 條件 void xunhuan() {char res[10],num1[10],num2[10],op[10]。 int nChainTemp。 if(syn==8) //do {nnc=nextq。 //記住 if 語句位置, emit 之后 nextq 就變了 //emit(0,if,num1,goto)。 scanner()。 staBlock(amp。nChainTemp)。 //語句塊 if(syn==9) //while {scanner()。 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,)。 break。 case 35: strcpy(op,=)。 break。 case 36: 21 strcpy(op,==)。 break。 case 37: strcpy(op,!=)。 break。 default: printf(error)。 } } scanner()。 strcpy(num2,E())。 strcat(num1,op)。 strcat(num1,num2)。 nnb=nextq。 emit(0,if,num1,goto)。 backpatch(nnb,nnc)。 nna=nextq。 emit(0,goto)。 backpatch(nna,nextq)。 } if(syn==27) //) scanner()。 }}} void fuzhi() //賦值語句只有 1 個操作數(shù) {char res[10],num[10]。 //num 操作數(shù) if(syn==10) //字符串 {strcpy(res,token)。 //結(jié)果 scanner()。 if(syn==21) //= {scanner()。 strcpy(num,E())。 emit(res,num,=,)。 } else {printf(缺少 =號 \n)。 }}} char* E() //Expression 表達式 {char *res,*num1,*op,*num2。 res=(char *)malloc(10)。 num1=(char *)malloc(10)。 op=(char *)malloc(10)。 num2=(char *)malloc(10)。 strcpy(num1,T())。 while((syn==22)||(syn==23)) //+ {if(syn==22) //+ strcpy(op,+)。 else strcpy(op,)。 scanner()。 strcpy(num2,T())。 strcpy(res,newTemp())。 emit(res,num1,op,num2)。 strcpy(num1,res)。 } return num1。 } char* T() //Term 項 {char *res,*num1,*op,*num2。 res=(char *)malloc(10)。 22 num1=(char *)malloc(10)。 op=(char *)malloc(10)。 num2=(char *)malloc(10)。 strcpy(num1,F())。 while((syn==24)||(syn==25)) //* / {if(syn==24) strcpy(op,*)。 else strcpy(op,/)。 scanner()。 strcpy(num2,F())。 strcpy(res,newTemp())。 emit(res,num1,op,num2)。 strcpy(num1,res)。 } return num1。 } char* F() //Factor 因子 {char *res。 res=(char *)malloc(10)。 if(syn==10) //字符串 {strcpy(res,token)。 scanner()。 } else if(syn==20) //二進制數(shù) {itoa((int)sum,res,10)。 //整數(shù)轉(zhuǎn)換為字符串 scanner()。 } else if(syn==26) //( {scanner()。 res=E()。 if(syn==27) //) {scanner()。 } else isError=1。 } else isError=1。 return res。 } char *newTemp() {char *p。 char varTemp[10]。 p=(char *)malloc(10)。 kk++。 itoa(kk,varTemp,10)。 strcpy(p+1,varTemp)。 p[0]=39。T39。 return p。 } //將 p 所鏈接的每個四元式的第四個分量都回填 t void backpatch(int p,int t) {int w,circle=p。 while(circle) //circle 不為 0 的時候 {w=atoi(fourCom[circle].result)。 //四元式 circle 第四分量內(nèi)容 //strcpy(fourCom[circle].result,t)。 //把 t 填進四元式 circle 的第四分量 sprintf(fourCom[circle].result,%d,t)。 circle=w。 //w 記錄的是鏈條上下一個四元式,移動! } return。 23 } int merge(int p1,int p2) //合并 p1 和 p2 {char circle,nResult。 if(p2==0) nResult=p1。 else {nResult=circle=p2。 while(atoi(fourCom[circle].result)) //四元式第四個分 量不為 0 {circle=atoi(fourCom[circle].result)。 //strcpy(fourCom[circle].result,p1)。 sprintf(fourCom[circle].result,%s,p1)。 }//目的是用 p1 的值覆蓋 0 } return nResult。 //p2 是頭, p1 覆蓋 0,接在 p2 后邊 } void emit(char *res,char *num1,char *op,char *num2) {strcpy(fourCom[nextq].result,res)。 strcpy(fourCom[nextq].arg1,num1)。 strcpy(fourCom[nextq].opera,op)。 strcpy(fourCom[nextq].arg2,num2)。 nextq++。 } void scanner() { sum=0。 decimal=0。 m=0。 for(n=0。n8。n++) token[n]=NULL。 ch=prog[p++]。 //從 prog 中讀出一個字符到 ch 中 while(ch==39。 39。||ch==39。\n39。) //跳過空字符 ( 無效輸入 ) ch=prog[p++]。 if(((ch=39。a39。)amp。amp。(ch=39。z39。))||((ch=39。A39。)amp。amp。(ch=39。Z39。))) //ch 是字母字符 { while(((ch=39。a39。)amp。amp。(ch=39。z39。))||((ch=39。A39。)amp。amp。(ch=39。Z39。))||((ch=39。039。)amp。amp。(ch=39。939。))) { token[m++]=ch。 //ch=token ch=prog[p++]。 //讀下一個字符 } token[m++]=39。\039。 p。 //回退一格 syn=10。 //標(biāo)識符 //如果是 begin,if,then,while,do,end標(biāo)識符中的一個 for(n=0。n9。n++) if(strcmp(token,rwtab[n])==0) { syn=n+1。 break。 } } else if((ch=39。039。)amp。amp。(ch=39。939。)) { IsNum: if(isSignal==1) { //token[m++]=39。39。 } while((ch=39。039。)amp。amp。(ch=39。939。)) { sum=sum*10+ch39。039。 //ch 中數(shù)字本身是當(dāng)做字符存放的 ch=prog[p++]。 } if(ch==39。.39。) { isDecimal=1。 ch=prog[p++]。
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1