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

正文內(nèi)容

編譯原理課程設(shè)計(jì)--對(duì)pl0進(jìn)行擴(kuò)充和修改-資料下載頁(yè)

2025-05-11 19:03本頁(yè)面

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

  

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