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

正文內容

編譯原理課程設計--pl0語言的擴充-資料下載頁

2025-01-13 17:41本頁面
  

【正文】 ...// 此處省略部分未修改過的代碼}173.一維數(shù)組1)設置一維數(shù)組的左右括號:ssym[39。[39。]=lepa。 //一維數(shù)組的左括號[ssym[39。]39。]=ripa。 //一維數(shù)組的右括號]2)增加指令:strcpy(amp。(mnemonic[gar][0]),gar)。 strcpy(amp。(mnemonic[sar][0]),sar)。strcpy(amp。(mnemonic[shd][0]),shd)。strcpy(amp。(mnemonic[del][0]),del)。strcpy(amp。(mnemonic[jud][0]),jud)。strcpy(amp。(mnemonic[tra][0]),tra)。enum fct{lit, opr, lod, sto, cal, inte, jmp, jpc, gar, sar, shd, del, jud, tra,}。由于指令有原來的 8 條拓展到了 14 條,故進行如下修改define fctnum 14增加的指令意義如下:gar:根據(jù)棧頂?shù)钠频刂窂臄?shù)組中取值到新的棧頂sar:根據(jù)次棧頂?shù)钠频刂钒褩m數(shù)闹荡嫒霐?shù)組shd:將棧頂?shù)闹迪乱频酱螚m?,棧頂出棧,即次棧頂成為棧頂del:出棧頂jud:判斷數(shù)組下標合法性tra:將數(shù)組的下標范圍入棧,gendo(tra,0,數(shù)組下標最大值)。3)增加標識符類型屬性:enum object{ constant, variable, procedur, array, //數(shù)組}。 4)在 block 函數(shù)中添加如下代碼:for(i=tx0+1。i=tx。i++) { switch(table[i].kind) { case constant: /*常量名字*/ ...//此處省略部分未修改過的代碼 case variable: /*變量名字*/ ...//此處省略部分未修改過的代碼 case procedur: /*過程名字*/ ...//此處省略部分未修改過的代碼18case printf(%d vararray %s ,i,table[i].name)。printf(lev=%d addr=%d size=%d\n,table[i].level,table[i].adr,table[i].size)。fprintf(fas,%d vararray %s,i,table[i].name)。 fprintf(fas,lev=%d addr=%d size=%d\n,table[i].level,table[i].adr,table[i].size)。}}}5)在 enter()函數(shù)添加如下代碼:switch(k){case constant: /*常量名字 */...//此處省略部分未修改過的代碼case variable: /*變量名字 */...//此處省略部分未修改過的代碼case procedur: /*過程名字*/...//此處省略部分未修改過的代碼case array: /*數(shù)組名字*/table[(*ptx)].level=lev。table[(*ptx)].adr=(*pdx)arraysize。table[(*ptx)].size=arraysize。break。}6)在 Vardeclaration()函數(shù)中添加數(shù)組的變量聲明,代碼如下:int vardeclaration(int * ptx,int lev,int * pdx){ ...//此處省略部分未修改過的代碼case gar: //根據(jù)棧頂?shù)钠频刂窂臄?shù)組中取值到新的棧頂s[t]=s[base(,s,b)++s[t1]]。 //偏移地址為上一層過程的基址+當前指令的層次+棧頂?shù)钠频刂穞++。break。case t。s[base(,s,b)++s[t1]]=s[t]。//t。break。case t。s[t1]=s[t]。19break。case t。break。case t。if(s[t1]0||s[t1]=s[t]) {error(28)。printf(\n 運行問題出錯,程序退出!請輸入任意數(shù)字退出:)。scanf(%d,amp。p)。exit(1)。}break。case s[t]=。t++。break。...// 此處省略部分未修改過的代碼}6. 調試測試1.+= = *= /= ++ 的測試20 圖 61 測試文件 圖 62 += = *= /= ++ 的測試結果 121圖 62 += = *= /= ++ 的測試結果 2 語句的測試圖 64 FOR 語句的 測試文件 圖 65 FOR 語句的測試結果22圖 66 數(shù)組的測試文件 圖 66 數(shù)組的測試結果 1圖 66 數(shù)組的測試結果 2234.綜合調試綜合測試是定語一個 1 維數(shù)組,數(shù)組每個元素的值等于它的位置。然后依次輸出數(shù)組元素。再次,對數(shù)組元素分別進行+= = *= /= ++ 運算,用 FOR 語句輸出結果。最后用FOR 語句對其進行求和,再次輸出結果。圖 67 綜合的測試文件 24圖 68 綜合結果的代碼25 圖 68 綜合結果的中間代碼及其運算 結果7.課程設計總結本次課程設計的過程中我主要根據(jù)課本中的實現(xiàn)思想及算法以及源程序的方法編寫和修改程序,體現(xiàn)以課本知識的應用為主,在學習了 PL/0 語言以及詞法分析等知識的基礎上,以能夠更加熟練的應用所學知識,并能結合一些著名算法來實現(xiàn)對一些實際問題的應用,例如,else 語句的實驗等,從而更為深刻理編譯原理的內涵,熟悉它們各自的應用場合及方法。有些在平時課程中并沒有掌握的內容在這次課程設計中都是先通過看課本學懂了,然后再在課程設計中加深印象,實現(xiàn)算法的應用和擴展。程序設計設計語言采用 C,程序運行平臺為 Windows XP,編譯器為 Microsoft Visual C++。通過本次實驗,熟悉了 PL/0 的詞法分析。設計前感覺很簡單,但當自己動手去做后才26發(fā)現(xiàn)挺多要注意的東西。例如設置保留字名字,按照字母順序,因為程序查找時用到了折半查找法。通過這次課程設計的練習,認識到知識的遷移運用,理論應用實際和相互間的密切聯(lián)系,感受到理論知識的重要,在今后的學習中一定會更加努力,認真。體會到自己知識有所缺乏,和個人能力的有限,只有通過同學、老師間的密切配合才能完成一項不錯的工作。從中也體會到了學習中的樂趣,可以自由的創(chuàng)作自己喜歡的東西并自己調試。在一個星期的課程設計中,我較為全面系統(tǒng)的理解了編譯原理程序構造的原理和基本實現(xiàn)方法。自己對修改的方案比較滿意,在擴充功能上去實現(xiàn)自己希望 PL0 能具備的功能。在條件選擇和循環(huán)的語句擴展上比較有心得,增加了 FOR 語句。實現(xiàn)了++以及++等擴展功能。印象比較深刻的是一維數(shù)組的擴展,擴展此功能時,我先設計方案,明確需要修改的地方。然而雖然思路明確,但擴展時卻出現(xiàn)了很多意想不到的問題,結果花費了大量的時間調試,再加上找參考書,咨詢同學,還是順利完成了這項擴展功能。這次的課程設計可以說比較順利,但是過程也有一定的曲折。在此期間我們也失落過,也曾一度熱情高漲。從開始時滿富盛激情到最后汗水背后的復雜心情,點點滴滴無不令我回味無長。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能提高自己的實際動手能力和獨立思考的能力。在設計的過程中難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。此次課程設計,學到了很多課內學不到的東西,比如獨立思考解決問題,出現(xiàn)差錯的隨機應變,和與人合作共同提高,都受益非淺,今后的制作應該更輕松,自己也都能扛的起并高質量的完成項目?!緟⒖嘉墨I】[1] 張素琴,呂映芝,蔣維杜,戴桂蘭編著. 編譯原理(第 2 版). 北京:清華大學出版社, 2022.[2] 道客巴巴 編譯原理 pl0 課程設計課程設計
點擊復制文檔內容
規(guī)章制度相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1