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

正文內(nèi)容

編譯原理課程設(shè)計--對pl0進行擴充和修改-資料下載頁

2025-05-11 19:03本頁面

【導讀】編譯程序采用一趟掃描方式,已語法語義分析程序為核心,詞法分。時候,就調(diào)用代碼生成程序。此外用表格管理程序建立變量,常量和過。析遇到的錯誤給出在源程序中出錯的位置和錯誤性質(zhì)。本課程設(shè)計通過對PL/0進行修改和添加功能完成設(shè)計,部分的修改擴充,完成基本內(nèi)容和選做內(nèi)容。擴充了賦值運算+=、-=,運。算++、--,以及擴充語句repeat<語句序列>dowhile<條件>。個變量應(yīng)分配的存儲區(qū)及在該區(qū)的具體位置。即靜態(tài)的存儲區(qū)和動態(tài)的存儲區(qū)。型暫時不需要在符號表里面處理。能會不同運行時刻分配給不同的數(shù)據(jù)對象。ID存放用戶所定義的標識符的值。量聲明時調(diào)用常量聲明函數(shù)等。常見的有逆波蘭式,三元式,四元式和樹形表示。序與說明該變量或過程的分程序之間的層次差。a的含義對不同的指令有。這里我們需要用到的有關(guān)目標指令有:LITLODSTOCAL. gendo;//將棧頂?shù)膬?nèi)容送入變量中。變化相應(yīng)的數(shù)字。以便在詞法分析時能夠識別。

  

【正文】 k。 } 情況二:如 ++a, — a 運算符在前面: if(sym==ppl) { getsymdo。 if(sym==ident) { i=position(id,*ptx)。 if(i==0) { error(11)。 }//參考書上面的例子,即 I 為標識符在符號表的位置 else if(table[i].kind==variable) { gendo(lod,levtable[i].level,table[i].adr)。把變量放入棧頂 gendo(lit,0,1)。將常 量 1 取到運行棧頂 gendo(opr,0,2)。將棧頂和次棧頂?shù)膬?nèi)容作算術(shù)加運算結(jié)果存放在次棧頂 gendo(sto,levtable[i].level,table[i].adr)。將棧頂?shù)膬?nèi)容送入變量中 getsymdo。 } } } else { if(sym==mmi) { getsymdo。 if(sym==ident) { i=position(id,*ptx)。 if(i==0) { error(11)。 }//參考書上面的例子,即 I 為標識符在符號表的位置 else if(table[i].kind==variable) { gendo(lod,levtable[i].level,table[i].adr)。 把變量放入棧頂 gendo(lit,0,1)。 將常量 1 取到運行棧頂 gendo(opr,0,3)。 將棧頂和次棧頂?shù)膬?nèi)容作算術(shù)減運算結(jié)果存放在次棧頂 gendo(sto,levtable[i].level,table[i].adr)。 將棧頂?shù)膬?nèi)容送入變量中 getsymdo。 } } } 五、測試用例 測試時,完成一個功能就先測試,保證后面的程序不會因前面的不通過而影響到后面的。由于把全部的例子寫在一個 PL0 文件中,提示程序太長所以就寫了兩個例子,這里就只測試 +=, =賦值運算, ++, 運算以及 repeat dowhile 語句: 六、開發(fā)過程和完成情況 開發(fā)過程 : 這次 編譯原理課程設(shè)計是在昨晚實驗的基礎(chǔ)上完成的總體來說難度不是很。之前在做實驗時已對基本的關(guān)鍵字進行了添加,這次課程設(shè)計主要是對一些功能進行擴充和修改。在做 +=和 =運算時關(guān)鍵是理解變量在符號表的位置,以及如何進行把變量放到棧頂和把棧頂?shù)膬?nèi)容送入變量單元中。在 gendo 功能上似乎遇 到了問題,即 3 個參數(shù)的功能碼,層差和位移量。關(guān)鍵在理解后面兩個參數(shù) levtable[i].level 和 table[i]. i=position(id,*ptx)中 i 的功能。需要 說明的是在做 =運算時結(jié)果總是為負數(shù),經(jīng)過慢慢思考其運算的過程,最終也解決了。其實在這一步一步的過程就逐漸理解 PL0 的過程。到了 repeat dowhile 的過程,參照了原來程序就帶有的功能。即 while do,難度也不是很大!在做 ++, 運算時,開始時候在 statement 函數(shù)添加了處理語句。對于 a++能編譯通過 ,而 ++a就不行,后面在網(wǎng)上參考了例子,原來還有一種情況就是 ++當作因子處理的情況。前面只是當作語句處理。之后就能處理形如 b:=++a 的語句。解決了這些問題后,后面打算添加如 for to do 的語句,但是在處理 jmp和 jpc 遇到了很多問題暫時也沒有實現(xiàn)! 完成情況 完成內(nèi)容:擴充賦值運算 +=, =和 repeat 語句序列 dowhile條件 , 以及自增 ++自減 — 運算。 For 條件 to條件 do語句序列 最后因為多次調(diào)試沒有通過,也就沒有完成這一功能。 七、課程設(shè)計總結(jié) 總體來 說,這次課程設(shè)計學到了很多東西 。理解了一個編譯器是如何編譯一個程序的,雖然這個程序的功能不是很多,但卻足夠我們?nèi)ダ斫?。開發(fā)過程已在上面所描述,其中還有另外的一大收獲就是運用了 PL0 處理程序的思想運用到了可視化編程的表達式處理過程。形如處理 sin, arctan這樣的關(guān)鍵字,處理優(yōu)先級等等。
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1