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

正文內(nèi)容

編譯原理課程設(shè)計(jì)-- pl0語言的擴(kuò)充-預(yù)覽頁

2025-07-06 12:16 上一頁面

下一頁面
 

【正文】 ++ 四. 結(jié)構(gòu)設(shè)計(jì)說明 1. PL/0編譯程序的結(jié)構(gòu)圖 1 2. PL/0編譯程序的過程或函數(shù)的功能表 過程或函數(shù)名 簡要功能說明 pl0 主程序 error 出錯(cuò)處理,打印出錯(cuò)位置和錯(cuò)誤編碼 getsym 詞法分析,讀取一個(gè)單詞 getch 漏掉空格,讀取一個(gè)字符 gen 生成目標(biāo)代碼,并送入目標(biāo) 程序區(qū) test 測(cè)試當(dāng)前單詞符號(hào)是否合法 block 分程序分析處理過程 enter 登錄名字表 position(函數(shù) ) 查找標(biāo)識(shí)符在名字表中的位置 constdeclaration 常量定義處理 vardeclaration 變量說明處理 listode 列出目標(biāo)代碼清單 statement 語句處理 expression 表達(dá)式處理 term 項(xiàng)處理 factor 因子處理 condition 條件處理 interpret 對(duì)目標(biāo)代碼的解釋執(zhí)行程序 base(函數(shù) ) 通過 靜態(tài)鏈求出數(shù)據(jù)區(qū)的基地址 表 41 PL/0 編譯程序的過程或函數(shù)的功能表 3. PL/0編譯程序的總體流程圖 PL/0 源程序 詞法分析程序 語法語義分析程序 代碼生成 目標(biāo)代碼 表格管理程序 出錯(cuò)管理程序 圖 41 PL/0 編譯程序的結(jié)構(gòu)圖 2 啟 動(dòng)置 初 值調(diào) 用 G E T S Y M 取 單 詞調(diào) 用 B L O C K 過 程當(dāng) 前 單 詞是 否 為 源 程 序 結(jié) 束 符39。 ( 3)增加一維數(shù)組類型(可增加指令)。 二. 課程設(shè)計(jì)要求 基本內(nèi)容 : ( 1)擴(kuò)充賦值運(yùn)算: *= 和 /= ( 2) 擴(kuò)充語句( Pascal的 FOR語句) : ① FOR 變量 :=表達(dá)式 TO 表達(dá)式 DO 語句 ② FOR 變量 :=表達(dá)式 DOWNTO 表達(dá)式 DO 語句 其中,語句①的循環(huán)變量的步長為 2,語句②的循環(huán)變量的步長為 2。達(dá)到進(jìn)一步了解程序編譯過程的基本原理和基本實(shí)現(xiàn)方法的目的。 ( 2)擴(kuò)充函數(shù):① 有返回值和返回語句;② 有參數(shù)函數(shù)。 ( 4)增加一維數(shù)組類型(可增 加指令)。 SYMBOL 擴(kuò)展為 48個(gè)值 。]=plus。 ssym[39。/39。]=lparen。 ssym[39。,39。]=period。 去掉 ,改為 ssym[39。!39。]=lepa。//一維數(shù)組的右括號(hào) ] /*設(shè)置保留字名字 ,按照字母順序 ,便于折半查找 */ strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 /*設(shè)置保留字符號(hào) */ wsym[0]=beginsym。 wsym[4]=elsesym。 wsym[8]=oddsym。 wsym[12]=stepsym。 wsym[16]=whilesym。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。 strcpy(amp。) //讀到加號(hào) { getchdo。 := += = *= /= ++ ++ 變量 表達(dá)式 表達(dá)式 ++a 或者 a a++或者 a 圖 51 擴(kuò)充賦值運(yùn)算: += = *= /= ++ 和 7 getchdo。 getchdo。) //讀到減號(hào) { getchdo。 getchdo。 getchdo。) { getchdo。 getchdo。) 8 { getchdo。 getchdo。 } else { if(table[i].kind!=variableamp。 } else { getsymdo。 expressiondo(nxtlev,ptx,lev)。 } getsymdo。 flag=2。 flag=4。 flag=6。 10 } if(i!=0) { if(flag==1) //:= { memcpy(nxtlev,fsys,sizeof(bool)* symnum)。 gendo(lod,levtable[i].level,table[i].adr)。flag==3)//= { memcpy(nxtlev,fsys,sizeof(bool)* symnum)。//執(zhí)行減法 gendo(opr,levtable[i].level,1)。//先取值到棧頂 gendo(lit,levtable[i].level,1)。 gendo(opr,levtable[i].level,2)。//先取值到棧頂 gendo(lit,levtable[i].level,1)。 gendo(opr,levtable[i].level,3)。 expressiondo(nxtlev,ptx,lev)。amp。 expressiondo(nxtlev,ptx,lev)。//賦值語句需將存入數(shù)組后棧頂為偏移地址出棧 } else //變量 { gendo(sto,levtable[i].level,table[i].adr)。 } else { if(table[i].kind!=variableamp。 } else //++后跟變量,處理生成中間代碼 { if(table[i].kind==variable) { gendo(lod,levtable[i].level,table[i].adr)。// 出棧取值到內(nèi)存 getsymdo。 nxtlev[ripa]=true。 //判斷下標(biāo)合法性 if(sym!=ripa) { error(26)。 gendo(sar,levtable[i].level,table[i].adr)。//缺少 [ } } } } } } else if(sym==dminus)//變量 { getsymdo。amp。// 先取值到棧頂 gendo(lit,0,1)。 } else if(table[i].kind==array)//后跟數(shù)組變量 { getsymdo。 expressiondo(nxtlev,ptx,lev)。//缺少 ] } else { gendo(gar,levtable[i].level,table[i].adr)。 gendo(del,0,0)。 strcpy(KWORD[10],for)。 strcpy(KWORD[ 7],downto)。 if(i==0) error(11)。 if(sym!=bees) error(13)。 // downtosym expressiondo(nxtlev,ptx,lev)。 //保存循環(huán)開始點(diǎn) memcpy(nxtlev,fsys,sizeof(bool)*symnum)。 //將循環(huán)變量取出放在棧頂 gendo(opr,0,2)。 //回填循環(huán)結(jié)束點(diǎn)的地址 } else error(29)。]=lepa。 //一維數(shù)組的右括號(hào) ] 2)增加指令: strcpy(amp。 strcpy(amp。 strcpy(amp。 enum fct{ lit, opr, lod, sto, cal, inte, jmp, jpc, gar, sar, shd, del, jud, tra, }。i=tx。 fprintf(fas,lev=%d addr=%d size=%d\n,table[i].level,table[i].adr,table[i].size)。 break。 case t。 case t。 break。 scanf(%d,amp。 case s[t]=。然 后依次輸出數(shù)組元素。有些在平時(shí)課程中并沒有掌握的內(nèi)容在這次課程設(shè)計(jì)中都是先通過看課本學(xué)懂了,然后再在課程設(shè)計(jì)中加深印象,實(shí)現(xiàn)算法的應(yīng)用和擴(kuò)展。例如設(shè)置保留字名字 ,按照字母順序,因?yàn)槌绦虿檎視r(shí)用到了折半查找法。 在一個(gè)星期的課程設(shè)計(jì)中,我較為 全面系統(tǒng)的理解了編譯原理程序構(gòu)造的原理和基本實(shí)現(xiàn)方法。印象比較深刻的是一維數(shù)組的擴(kuò)展,擴(kuò)展此功能時(shí),我先設(shè)計(jì)方案,明確需要修改的地方。從開始時(shí)滿富盛激情到最后汗水背后的復(fù)雜心情,點(diǎn)點(diǎn)滴滴無不令我回味無長。 【參考文獻(xiàn)】 [1] 張素琴,呂映芝,蔣維杜,戴桂蘭編著 . 編譯原理(第 2版) . 北京:清華大學(xué)出版社, 2021. [2] 道客巴巴 編譯原理 pl0課程設(shè)計(jì) 課程設(shè)計(jì)
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1