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

正文內(nèi)容

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

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

下一頁面
 

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