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

正文內(nèi)容

編譯原理課程設(shè)計---pl0編輯器擴充-資料下載頁

2025-06-07 03:07本頁面
  

【正文】 do(lod,levtable[i].level,table[i].adr)。 gendo(lit,0,1)。 gendo(opr,0,2)。 //棧頂值加 getsymdo。 } /********************************************************************************/ /************如果因子是表達式的時候 ,則有可能是包含 ++a或者 a,如 b:=++a或 b:=a ********/ else if(sym==plusplus) { getsymdo。 if(sym==ident) { getsymdo。 i=position(id,*ptx)。 if(i==0) { error(11)。 } else { if(table[i].kind==variable) //變量 { //先加后再用 a gendo(lod,levtable[i].level,table[i].adr)。//先取值到棧頂 gendo(lit,0,1)。//將值為入棧 gendo(opr,0,2)。//加法,即 +1,棧頂加次棧頂 gendo(sto,levtable[i].level,table[i].adr)。//出棧取值到內(nèi)存 gendo(lod,levtable[i].level,table[i].adr)。 //取值到棧頂 } } } } else if(sym==minusminus) { getsymdo。 if(sym==ident) { getsymdo。 i=position(id,*ptx)。 if(i==0) { error(11)。 } else { if(table[i].kind==variable) //變量 { //先減后再用 a gendo(lod,levtable[i].level,table[i].adr)。//先取值到棧頂 gendo(lit,0,1)。 //將值為入棧 gendo(opr,0,3)。 //減法,即 1,棧頂減次棧頂 gendo(sto,levtable[i].level,table[i].adr)。//出棧取值到內(nèi)存 gendo(lod,levtable[i].level,table[i].adr)。 //取值到棧頂 } } } testdo(fsys,facbegsys,23)。 /*因子后有非法符號 */ } 四 . 程序測試 1. 擴充賦值運算: *= 和 /= 測試文件 “ test1” : 運行結(jié)果: 結(jié)果分析: a = 5 , b = 48 , a*=3 結(jié)果為 15 正確, b/=6 結(jié)果為 8 正確, 擴充成功! 2. 擴充語句( Pascal 的 FOR 語句) : 測試文件“ test2” : 運行結(jié)果: 結(jié)果分析: For i=1 to 4 do “write(i)” 結(jié)果 i= 1, 3, For i=5 downto 1 do write(i) 結(jié)果 i= 5, 3, 1 結(jié)果正確, For 循環(huán)功能擴充成功! 3. 增加運算: ++ 和 。 測試文件“ test3” : 運行結(jié)果: 結(jié)果分析: a=5 , b:=6, a結(jié)果為 4, b++結(jié)果為 7,結(jié)果正確 ++ , 功能符號測試通過! 五 . 實驗總結(jié) 本次課程設(shè)計主要是在讀懂課本附帶的 PL/0 編譯器程序 C語言版本 后進行擴展 和修改相關(guān)程序 功能 。 通過課程設(shè)計,我對編譯器的 工作原理和實現(xiàn)機制 有了實際的了解和認識,進一步培養(yǎng)的編譯技術(shù)的設(shè)計思想,仔細閱讀 PL/0 的編譯程序 C 語言版本代碼 ,對詞法分析 ,句法分析在編程技巧和實際意義 有了深刻的理解 ,從枯燥的 理論學(xué)習(xí)到現(xiàn)在 實際 應(yīng)用過程 對于我自身知識面的提升是巨大的。語法分析、句法分析在編譯原理中處于核心的地位,如何正確有效的對它們分析提取決定了編譯后期工作方向,當(dāng)然中間代碼的如何有效的生成在編譯中也是個不小的難題,特別是其中堆棧的運用,當(dāng)然在理論上對于它們的理解程度大小也是決定設(shè)計調(diào)試 難度的高低。 擴展 += = 符號相對比較簡單,只需要在語句分析模塊接著賦值符 號的判斷添加就可以,對于 for 循環(huán)也是類似,只需要在語句分析模塊添加對于 for 關(guān)鍵字的判斷,當(dāng)然要注意后繼符號 to 還是 downto 的判斷以決定步長遞增還是遞減。完成了基本功能擴展,我嘗試了 ++ 符號的添加,這兩個符號添加比較復(fù)雜,大體講有兩個用途情況,一個就是用在用戶標(biāo)識符,另一個就是在因子上也可能用到該功能,需要添加因子的功能判斷,具體來講這兩個符號又有兩種實現(xiàn)形式,分別是后置符號和前置符號,后置符號類似前面的 += = 直接添加判斷即可,前置符號則除了要添加 ++ 的開始因子符號集外,還得在語 句分析模塊添加功能處理! 總的來說,經(jīng)歷了數(shù)次的調(diào)試,功能擴展算是完成了,這次課程設(shè)計使我受益匪淺,除了更深了解了編譯技術(shù),還培養(yǎng)了發(fā)現(xiàn)問題、分析問題、解決問題的能力! 附錄: 1. 源語言: PL/0 語言 2. 目標(biāo)語言:類 PCODE 3. 實現(xiàn)工具: C++Builder 4. 運行平臺: win7
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1