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

正文內(nèi)容

編譯原理課程設(shè)計-wenkub

2023-06-18 03:07:10 本頁面
 

【正文】 char opera[10]。 strcpy(fourCom[q].arg2,num2)。 //生成四元式 2. void emit(char *res,char *num1,char *op,char *num2) 該函數(shù)的功能是生成一個三地址語句送到四元式表中。 //Factor 因子 char *newTemp()。 //條件語句 void xunhuan()。 //語句塊 void staString(int *nChain)。 流程框圖 圖 I 主函數(shù)示意圖 是否為 main? 調(diào)用 scanner 是否為(? 調(diào)用 scanner 是否為)? 調(diào)用 scanner 調(diào)用語句塊分析函數(shù) staBlock 出錯處理 否 否 否 是否為 { ? 調(diào)用 scanner 調(diào)用語句串分析函數(shù) staString 調(diào)用 scanner 是否為 } ? 出錯處理 否 否 圖 II 遞歸下降分析程序示意圖 圖 III 語句塊分析示意圖 調(diào)用語句分析函數(shù) sta 回溯,調(diào)用 backpatch 是否為 。 詳細(xì)算法設(shè)計 在前三次試驗的基礎(chǔ)上改進。 ( 1) 單詞符號及種別表 單詞符號 種別編碼 單詞值 main 1 int 2 float 3 double 4 char 5 if 6 else 7 do 8 while 9 l(l|d)* 10 內(nèi)部字符串 ( +||ε ) d*(.dd* | ε )( e ( +||ε ) dd*|ε ) 20 二進制數(shù)值表示 = 21 + 22 23 * 24 / 25 ( 26 ) 27 { 28 } 29 , 30 。 ( 3)語法分析器 要求用預(yù)測分析法、遞歸下降分析法、算符優(yōu)先分析法、 SLR 分析法(幾種方法任選),實現(xiàn)對表達(dá)式、各種說明語句、控制語句進行語法分析。 ( 2)設(shè)計詞法分析器 設(shè)計各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計種別碼。 棗 莊 學(xué) 院 計算機科學(xué)系課程設(shè)計任務(wù)書 題目: 一個簡單編譯器的設(shè)計與分析 學(xué) 號: 姓 名 : 專 業(yè) : 計算機科學(xué)與技術(shù) 課 程: 程序設(shè)計語言 編譯原理 指導(dǎo)教師 : 王 艷 秋 職稱: 講 師 完成時間: 2021 年 12 月 2021 年 01 月 棗莊學(xué)院計算機科學(xué)系制 2021 年 12 月 20 日 課程 設(shè)計 任務(wù)書及成 績評定 課程 設(shè)計的任務(wù)和具體要求 一 任務(wù): ( 1)設(shè)計符號表 確定符號表的組織方式,一般應(yīng)包括名字欄和信息欄,其中名字欄作為關(guān)鍵字。將詞法分析器設(shè)計成供語法分析器調(diào)用的子程序。 ( 4)中間代碼與目標(biāo)代碼生成部分進行原理性分析 ,給出可行性報告。 31 32 = 33 34 = 35 == 36 != 37 ( 2)語法結(jié)構(gòu)定義 程序 ::= main()語句塊 語句塊 ::= ‘{‘語句串 ’}’ //程序用括號括起來 語句串 ::=語句 {。詞法分析程序 ? 語法分析程序 ? 語義分析程序 ?編譯器。 ? 調(diào)用 scanner 調(diào)用語句分析函數(shù) sta 否 出錯處理 圖 IV 語句串分析示意圖 函數(shù)相關(guān)說明 1. 所有函數(shù)一覽 void scanner()。 //語句串 void sta(int *nChain)。 //循環(huán)語句 char* E()。 //自動生成臨時變量 void backpatch(int p,int t)。 void emit(char *res,char *num1,char *op,char *num2) { strcpy(fourCom[q].result,res)。 q++。 //運算符 char arg2[10]。 p=(char *)malloc(10)。 p[0]=39。 int merge(int p1,int p2) //合并 p1 和 p2 { char circle,nResult。 //strcpy(fourCom[circle].result,p1)。 void backpatch(int p,int t) { int w,circle=p。 circle=w。 //num 操作數(shù) if(syn==10) //字符串 { strcpy(res,token)。 emit(res,num,=,)。 int nChainTemp。 strcpy(num1,E())。 break。 break。 break。 } } scanner()。 //nfc=nextq+1。 //if 中表達(dá)式為假 emit(0,goto)。nChainTemp)。 int nChainTemp。 staBlock(amp。 strcpy(num1,E())。 break。 break。 break。 } } scanner()。 nnb=nextq。 emit(0,goto)?;剀嚭螅绦蝻@示運行結(jié)果。課設(shè)的要求呢?要加上語義分析,而且要輸出四元式。 3 天時間,終于可以寫出語義程序了。程序語句有 3 種:賦值語句,條件語句,循環(huán)語句。特別是其中鏈 nChain 的概念,一直看不懂。 然后就是課設(shè)的第 2 個里程碑。 迎來了課設(shè)的第 3 個里程碑。而且由于老師給的語法中沒有布爾表達(dá)式,所以很多 merge 的工作也可以省略了,嘿嘿。一門高級語言其實學(xué)起來是很容易的,而在校期間,這些計算機基礎(chǔ)課程一定要學(xué)好!才能為將來打好基礎(chǔ)。 //單個字符 int syn,p,m,n,i。 //是否帶正負(fù)號 (0 不帶, 1 負(fù)號,2 正號) int isError。 //是否是指數(shù) int index。 int repeat。 char *rwtab[9]={main,int,float,double,char,if,else,do,while}。 char arg2[10]。 void staBlock(int *nChain)。 //賦值語句 void tiaojian(int *nChain)。 //Term 項 char* F()。 //合并 p1 和 p2 void emit(char *res,char *num1,char *op,char *num2)。 index=0。 do{ ch=getchar()。)。 lrparser()。 printf((%5s %5s %5s \t%5s )\n,fourCom[i].arg1,fourCom[i].opera,fourCom[i].arg2,fourCom[i].result)。 if(syn==1) //main { scanner()。nChain)。 } //語句塊 ::= 39。 void staBlock(int *nChain) //語句塊 { if(syn==28) //{ { scanner()。 //讀下一個 else printf(缺少 }號 \n)。 void staString(int *nChain) //語句串 { sta(nChain)。 sta(nChain)。 } else if(syn==6) //if { tiaojian(nChain)。 //條件 表達(dá)式 關(guān)系運算符 表達(dá)式 if(syn==6) //if { scanner()。 if((syn=37)amp。 case 33: strcpy(op,=)。 case 35: strcpy(op,=)。 case 37: strcpy(op,!=)。 strcpy(num2,E())。 ntc=nextq。 //第一個 0 已回填 backpatch(ntc,nextq)。 //語句塊 *nChain=merge(nChainTemp,nfc)。 //記住 if 語句位置, emit之后 nextq 就變了 //emit(0,if,num1,goto)。 //語句塊 if(syn==9) //while { scanner()。amp。 break。 break。 break。 strcat(num1,op)。 backpatch(nnb,nnc)。 } if(syn==27) //) scanner()。 if(syn==21) //= { scanner()。 } } } char* E() //Expression 表達(dá)式 { char *res,*num1,*op,*num2。 num2=(char *)malloc(10)。 scanner()。 strcpy(num1,res)。 num1=(char *)malloc(10)。 while((syn==24)||(syn==25)) //* / { if(syn==24) strcpy(o
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1