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

正文內(nèi)容

編譯技術(shù)課程設(shè)計(jì)報(bào)告-詞法分析、語法分析、中間代碼生成-文庫吧

2025-04-18 13:32 本頁面


【正文】 + ? ++ 9 ++ ? += 9 += ? * 10 * ? ** 11 ** ? ? 12 ? ? / 13 / ? 第 5 頁 /= 13 /= ? 14 relop MT = 14 relop ME 14 relop LT = 14 relop LE == 14 relop EQ != 14 relop UEQ ; 15 ; ? , 16 , ? ( 17 ( LB ) 17 ) RB ! 18 ! ? { 20 { ? } 20 } ? [ 21 [ ? ] 21 ] ? : 22 : ? 39。 39。 24 39。 39。 ? ( 2) 數(shù)據(jù)結(jié)構(gòu) 用 words[10]存放構(gòu)成單詞符號的字符串,并且用于判斷是否為關(guān)鍵字。 flags[500] 存放單詞符號的種別碼。 Number存放整數(shù)值, words[]存放標(biāo)識符,關(guān)鍵字或者其他符號。 t[num]按順序存放讀到的字符,為下面語義分析做準(zhǔn)備。 Status 用于判斷是否為關(guān)鍵字, 1 是, 0 不是。 ( 3) 函數(shù)說明 在 Scan ()子函數(shù)中,先全部初始化,然后讀一個(gè)字符,分析它是什么類型 :如果是字母類型,則接著往下讀,直到讀到非字母的字符,存入 words[10]中,依次對比關(guān)鍵字表中的元素,如果相同,則將 flags[]置為相應(yīng)的種別碼,如果全都掃描后沒發(fā)現(xiàn)相同的關(guān)鍵字,則為普通的標(biāo)識符 ,返回主函數(shù)輸出。 如果是數(shù)字類型,首先分析第一個(gè)符號,接著讀下一個(gè)字符 串,直到讀到一個(gè)不是數(shù)字的字符串位置,每讀一個(gè)數(shù)字字符,就將他們轉(zhuǎn)化為相應(yīng)的數(shù)字,使用輾轉(zhuǎn)相乘法,每次都讓 number 先自乘 10,然后加上這個(gè)數(shù)字,這樣就將字符串表示的數(shù)字轉(zhuǎn)化成了相應(yīng)的數(shù),返回主函數(shù)輸出。 如果是其他單詞表的符號,則將他們的 flags[]置為相應(yīng)的種別碼,并將字符存到words[] 中返回主函數(shù)輸出。 第 6 頁 ( 4) 流程圖 ( 1)分析方法說明 采用遞歸下降分析法 ( 2) 文法 E→ E+T|ET|T T→ T*F|E/F|F F→ P**F|P P→ (E)|i 改造后的文法 E→ TE’ |TE’’ E’ → +TE’ |ε E’’ → TE’’ |ε T→ FT’ |FT’’ T’ → *FT’ |ε 第 7 頁 T’’ → /FT’’ |ε F→ PF’ F’ → **F|ε P→ (E)|i ( 3)數(shù)據(jù)結(jié)構(gòu) 與 函數(shù)說明 在 main 函數(shù)調(diào)用 E()函數(shù),如果調(diào)用之后返回時(shí) ,如果 ((flags[temp]==0)amp。amp。is_right) 為真,就輸出“分析成功”,否則輸出“分析失敗”。其中 is_right 為設(shè)定的標(biāo)志,初值 為 1,如果在調(diào)用子函數(shù)的過程中如果有錯(cuò)誤,則置 is_right 為 0。 E 函數(shù) : 調(diào)用 T 函數(shù),調(diào)用 F 函數(shù) , 調(diào)用 P 函數(shù) ,返回后看是否是’ +’或’ ’,如 果是,則調(diào)用 E1 函數(shù),再調(diào)用 E2函數(shù),如果不是,進(jìn)行出錯(cuò)處理,置 is_right 為 0。 E1 函數(shù):判斷是不是” +”或者“ ” 如果是,調(diào)用 F 函數(shù),如果不是,進(jìn)行出錯(cuò) 處理,置 is_right 為 0。 代碼: void E() { coutETE39。39。endl。 T()。 E2()。 } void E1() { if(flags[temp]==9) //加號 { coutE39。+Tendl。 temp++。 T()。 } else if(flags[temp]==12)//減號 { coutE39。Tendl。 temp++。 T()。 } else is_right=0。 } void E2() { if(flags[temp]==9||flags[temp]==12)//如果是加或減 { coutE39。39。E39。E39。39。endl。 E1()。 第 8 頁 E2()。 } else if (flags[temp]!=0||flags[temp]!=17)//如果是非 或非 { coutE39。39。ε endl。 return 。 } else is_right=0。 T 函數(shù) : 調(diào)用 F 函數(shù) , 調(diào)用 P 函數(shù) ,返回后看是否是’ *’或’ /’,如果是,則調(diào)用 T1 函數(shù),再調(diào)用 T2 函數(shù),如果不是,進(jìn)行出錯(cuò)處理,置 is_right 為 0。 T1 函數(shù):判斷是不是” *”或者“ /” 如果是,調(diào)用 F 函數(shù),如果不是,進(jìn)行出錯(cuò) 處理,置 is_right 為 0。 代碼: void T() { coutTFT39。39。endl。 F()。 T2()。 } void T1() { if(flags[temp]==10) //乘號 { coutT39。*Fendl。 temp++。 F()。 } else if(flags[temp]==13) //除號 { coutT39。/Fendl。 temp++。 F()。 } else is_right=0。 } void T2() { if(flags[temp]==10||flags[temp]==13)//如果是乘或除 第 9 頁 { coutT39。39。T39。T39。39。endl。 T1()。 T2()。 } else if (flags[temp]!=0||flags[temp]!=17)//如果是非 或非) { coutT39。39。ε endl。 return 。 } else is_right=0。 } F 函數(shù):調(diào)用 P 函數(shù), F1 函數(shù)。 F1 函數(shù):判斷是不是” **” ,如果是,調(diào)用 F 函 數(shù),如果不是,進(jìn)行出錯(cuò)處理,置 is_right 為 0。 代碼: void F() { coutFPF39。endl。 P()。 F1()。 } void F1() { if(flags[temp]==11) //乘 ?方 ? { coutF39。**Fendl。 temp++。 F()。 } Elseif(flags[temp]!=0amp。amp。flags[temp]!=17amp。amp。flags[temp]!=9amp。amp。flags[temp]!=12amp。amp。f lags[temp]!=10amp。amp。flags[temp]!=13)//非 非)非 +非 非 *非 / { coutF39。ε ?endl。 is_right=0。 } } P 函數(shù) : 檢查是否標(biāo)識符,如果是,調(diào)用 P1 函數(shù),如果不是,檢查是否是數(shù)值,第 10 頁 如果是,調(diào)用 P1函數(shù),如果不是,檢查是否是’ (’,如果不是,進(jìn)行出錯(cuò)處理,置 is_right為 0。如果是,調(diào)用 E函數(shù),返回后檢查是否是’ )’ ,如果不是,進(jìn)行出錯(cuò)處理,置 is_right為 0。如果是,調(diào)用 F1 函數(shù),返回。 代碼 : void P() { if(flags[temp]==6||flags[temp]==7) //標(biāo)識符或常數(shù) { coutPiendl。 temp++。 } else if(flags[temp]==17) //( { coutP(E)endl。 temp++。 E()。 if(flags[temp]==17) //) { coutP(E)endl。 temp++。 } else is_right=0。 } else is_right =0。 } ( 1)屬性文法 E→ E’ +T =E’ .val+ E→ E’’ T =E’’ . E→ T = T→ T’ *F =T’ .val* T→ T’’ /F =T’’ .val/ T→ F = F’ → P**F F’ .val=** F’ → P F’ .val= P→ (E) =
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1