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

正文內(nèi)容

編譯原理課程設(shè)計---pl0編輯器擴(kuò)充(已修改)

2025-01-29 02:37 本頁面
 

【正文】 編譯原理課程設(shè)計 題 目 __ _PL0編輯器擴(kuò)充__ __學(xué) 院 計算機(jī)學(xué)院 專 業(yè) 軟件工程 年級班別 10級4班 學(xué) 號 3110006379 學(xué)生姓名 陳泳鑫 指導(dǎo)教師 楊勁濤 答辯程序設(shè)計報告撰寫平時總成績2013 年 1 月 4 日一. 課程設(shè)計目的與要求 課程設(shè)計目的:在分析理解一個教學(xué)型編譯程序(如PL/0)的基礎(chǔ)上,對其詞法分析程序、語法分析程序和語義處理程序進(jìn)行部分修改擴(kuò)充。達(dá)到進(jìn)一步了解程序編譯過程的基本原理和基本實現(xiàn)方法的目的。課程設(shè)計要求:基本內(nèi)容(成績范圍:“中”、“及格”或“不及格”)(1)擴(kuò)充賦值運(yùn)算:*= 和 /=擴(kuò)充語句(Pascal的FOR語句):①FOR 變量:=表達(dá)式 TO 表達(dá)式 DO 語句②FOR 變量:=表達(dá)式 DOWNTO 表達(dá)式 DO 語句 其中,語句①的循環(huán)變量的步長為2,語句②的循環(huán)變量的步長為2。(3)增加運(yùn)算:++ 和 。選做內(nèi)容(成績評定范圍擴(kuò)大到:“優(yōu)”和“良”)(1)增加類型:① 字符類型; ② 實數(shù)類型。(2)擴(kuò)充函數(shù):① 有返回值和返回語句;② 有參數(shù)函數(shù)。(3)增加一維數(shù)組類型(可增加指令)。(4)其他典型語言設(shè)施。二、結(jié)構(gòu)設(shè)計方案 結(jié)構(gòu)設(shè)計說明: PL/0的編譯程序以語法分析程序為核心,詞法分析程序和代碼生成程序都作為一個獨(dú)立的過程,當(dāng)語法分析需要讀單詞時就用詞法分析程序,而當(dāng)語法分析正確需生成相應(yīng)的目標(biāo)代碼時,則調(diào)用代碼生成程序。此外,用表格管理程序建立變量,常量和過程標(biāo)識符的說明與引用之間的信息聯(lián)系。用出錯處理程序?qū)υ~法和語法分析遇到的錯誤給出在源程序中出錯的位置和錯誤性質(zhì)。 各功能模塊圖示:3. 各功能模塊作用表:1PL0主程序2Error出錯處理,打印出錯位置和錯誤編碼 3GetCh漏掉空格,讀取一個字符 4GetSym詞法分析,讀取一個單詞 5Gen生成目標(biāo)代碼,并送入目標(biāo)程序區(qū) 6TEST測試當(dāng)前單詞符號是否合法 7ENTER登錄名字表 8POSITION查找標(biāo)識符在名字表中的位置 9ConstDeclaration常量定義處理10VarDeclaration變量說明處理11ListCode列出目標(biāo)代碼清單12FACTOR因子處理13TERM項處理14EXPRESSION表達(dá)式處理15CONDITION條件處理16STATEMENT語句部分處理17Block分程序分析處理過程18BASE通過靜態(tài)鏈求出數(shù)據(jù)區(qū)的基地址19Interpret對目標(biāo)代碼的解釋執(zhí)行程序3. 符號名字表結(jié)構(gòu):struct tablestruct{ char name[al]。 /*名字*/ enum object kind。 /*類型:const,var,array or procedure*/ int val。 /*數(shù)值,僅const使用*/ int level。 /*所處層,僅const不使用*/ int adr。 /*地址,僅const不使用*/ int size。 /*需要分配的數(shù)據(jù)區(qū)空間,僅procedure使用*/}。4. 保留關(guān)鍵字枚舉結(jié)構(gòu):enum symbol{ nul, ident, number, plus, minus, times, slash, oddsym, eql, neq, lss, leq, gtr, geq, lparen, rparen, ma, semicolon, period, bees, beginsym, endsym, ifsym, thensym, whilesym, writesym, readsym, dosym, callsym, constsym, varsym, procsym, elsesym, forsym, tosym, downtosym, returnsym, pluseql, minuseql, plusplus, minusminus, }。:enum object{ constant, /*常量*/ variable, /*變量*/ procedur, /*過程*/}。6. 運(yùn)行時存儲組織和管理對于源程序的每一個過程(包括主程序),在被調(diào)用時,首先在數(shù)據(jù)段中開辟三個空間,存放靜態(tài)鏈SL、動態(tài)鏈DL和返回地址RA。靜態(tài)鏈記錄了定義該過程的直接外過程(或主程序)運(yùn)行時最新數(shù)據(jù)段的基地址。動態(tài)鏈記錄調(diào)用該過程前正在運(yùn)行的過程的數(shù)據(jù)段基址。返回地址記錄了調(diào)用該過程時程序運(yùn)行的斷點(diǎn)位置。對于主程序來說,SL、DL和RA的值均置為0。靜態(tài)鏈的功能是在一個子過程要引用它的直接或間接父過程(這里的父過程是按定義過程時的嵌套情況來定的,而不是按執(zhí)行時的調(diào)用順序定的)的變量時,可以通過靜態(tài)鏈,跳過個數(shù)為層差的數(shù)據(jù)段,找到包含要引用的變量所在的數(shù)據(jù)段基址,然后通過偏移地址訪問它?! ≡谶^程返回時,解釋程序通過返回地址恢復(fù)指令指針的值到調(diào)用前的地址,通過當(dāng)前段基址恢復(fù)數(shù)據(jù)段分配指針,通過動態(tài)鏈恢復(fù)局部段基址指針。實現(xiàn)子過程的返回。對于主程序來說,解釋程序會遇到返回地址為0的情況,
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1