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

正文內(nèi)容

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

2025-01-17 02:37本頁面
  

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