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

正文內(nèi)容

編譯課設(shè)報告--pl0編譯器的中間代碼生成_(參考版)

2025-02-08 09:14本頁面
  

【正文】 在這次實驗中,也只是用高級語言編寫了PL/0 簡單語言的編譯器,在完成實驗的過程中,我對編譯原理有了 進一步的了解,更提高了動手編程能力,是一次經(jīng)驗和知識的積累。 但是,我深知編譯原理的博大精深。 總之 ,這次課程設(shè)計加深了我對編譯過程的理解,不管是整體還是細節(jié)都有了更深入的體會,有些章節(jié)學(xué)的比較淺的,在這次課設(shè)中也強化了知識,如活動記錄、符號表等。因此我們做的小編譯器一定要給出出錯位置和出錯原因,這樣,編程過程中就可以節(jié)省很多時間。對于功能的實現(xiàn)過程,我們認真閱讀了課本教材的第二章,才明確了 PL/0 編譯器的實現(xiàn)的具體步驟和設(shè)計算法。就這樣,在老師的帶領(lǐng)和悉心教導(dǎo)下,我們漸漸找到了學(xué)習(xí)編譯原理的規(guī)律,也找到了學(xué)習(xí)方法,通過自己一點一點的摸索中一路走了過來,順利地完成了這門課的理論學(xué)習(xí)環(huán)節(jié)。讓我們值得慶幸的是,王老師講課的方式讓我們比較感興趣,在思路上不會莫名其妙的走神,感覺一學(xué)期下來,確實是每節(jié)課都聽得挺認真的,因此還算是比較順利的學(xué)習(xí)完了編譯這門難課。 學(xué)習(xí)編譯技術(shù)課程的體會和對本門課程的評價 上編譯原理這門課前就聽說這是一門比較難懂難學(xué)的課,老師課上也強調(diào)過一定要認真聽講,不然自己回去看書是很難看明白的。首先對編譯有了進一步的深刻理解,通過對遞歸下降法應(yīng)用,讓我對數(shù)據(jù)結(jié)構(gòu)的設(shè)計思想有了很深的認識,同時我們對詞法分析、語法分析的原理和過程都有了進一步的鞏固,使用 JAVA 平臺開發(fā)也讓我們的編程水平也起到了鍛煉的作用,鞏固了平時所學(xué)的知識,真正做到了學(xué)以致用。但是之后我們會盡量完善該編譯器的這些功能。其中,我們使用了 JAVA 語言的控件設(shè)計系統(tǒng)界面,將生成的中間代碼、符號表和錯誤分析部分很好的顯示在系統(tǒng)主界面上,讓用戶使用起來更方便。在仔細研究過給出的關(guān)于 PL0 編譯器的 PPT 以及一些參考代碼后,終于有了大致的了解。 本次實驗的特點:本次課設(shè)中最難的部分莫過于生成代碼及執(zhí)行代碼,由于采用語法制導(dǎo)翻譯,要將代碼生成函數(shù)加到語法分析程序中的正確位置,以及符號表的填充,還有層次等數(shù)值的改變,對目標機運行機制的理解,都是課設(shè)里的極大難點,如果指令生成錯誤,造成內(nèi)存分 配不當?shù)儒e誤,程序執(zhí)行就會失敗。同時,課程設(shè)計過程中對語法分析時,需要很好的數(shù)據(jù)結(jié)構(gòu)的設(shè)計,也讓我們認識到了數(shù)據(jù)結(jié)構(gòu)的重要性。通過寫課程設(shè)計報告也讓我們從軟件的層面認識到了軟件設(shè)計結(jié)構(gòu)的重要性,只有結(jié)構(gòu)明確、思路清晰,充分考慮系統(tǒng)的需求,做好詳細設(shè)計的工作,軟件做起來才會比較順手,不然會有些無從下手的感覺。 圖 52 錯誤程序測試結(jié)果 結(jié)論和展望 結(jié)論 本次課設(shè)我們做的是 PL/0 語言編譯器的中間代碼生成部分,對于做一個完整的編譯器來說,這也算得上是比較重要的一部分已經(jīng)完成了,接下來給出目標代碼即可。 read(n) end。 while m=n do begin call pr。 if n=2 then pf:=true。 read(n。 pf:=true end end。 i:=i+22345 end。 call mod。 while im do begin x:=m。 begin f:=true。 procedure mod。 var x,y,m,n,pf。 輸入如程序 52 所示。 if pf = false then write(0) end. 程序 51 測試用例 1 輸出 結(jié)果 如圖 51 所示。 m:=m+2 end。 m:=3。 while n=2 do begin write(2)。 begin pf:=false。 if f=true then begin write(m)。 if x=0 then f:=false。 y:=i。 i:=3。 x:=xx/y*y。 var i,f。 var x,y,m,n,pf。 輸入如程序 51 所示。 5 測試方法和測試結(jié)果 測試用例 1 測試目的: 通過 文件(本身詞法語法是正確的)來進行檢測,在沒有詞法語法的前提下 是否能夠 正確的分析 PL/0 程序,并且生成正確的中間代碼,符號表的內(nèi)容是否正確。打開文件選擇要編譯的 pl 文件,然后點擊分析就可以執(zhí)行整個程序,若源程序沒有錯誤,則會在中間代碼和符號表下面的框中內(nèi)分別輸出四元式和符號表,錯誤分析里將會顯示錯誤信息為 0 的字樣。 // 第三個參數(shù):操作數(shù) 2 String result = 。// 第一個參數(shù):操作碼 String arg1 = 。 int t。 String[] err={ 缺少左括號 ,非法字符:賦值符號 := ,等號后的字符為非法字符 ,缺少等號 ,聲明過程中遇到的字符不是標識符
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1