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

正文內(nèi)容

1總體設(shè)計(jì)(編輯修改稿)

2025-04-08 11:23 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 83。45 12 源代碼 45 源代碼 45 源代碼 46 源代碼 47 源代碼 49 源代碼 50 源代碼 54 源代碼 69 源代碼 74 源代碼 75 源代碼 76 13 問(wèn)題及解決方法 85 14 心得體會(huì) 85 15 參考資料 86 編譯原理綜合設(shè)計(jì)報(bào)告 1 1.總體設(shè)計(jì) 一個(gè)完善的 Basic 語(yǔ)言解釋引擎是協(xié)調(diào)整個(gè)程序的運(yùn)行的樞紐,主要任務(wù)是實(shí)現(xiàn)對(duì)源代碼的分析執(zhí)行,如何把源代碼中離散的單詞給轉(zhuǎn)化成解釋引擎可以識(shí)別的字符呢?首先看一個(gè)例子: 例 示例代碼 1 a = 1 2 b = a + 2 3 if a b then 4 print “ab” 5 else 6 print “a=b” 7 end if 上述例 中,按照標(biāo)準(zhǔn)的 Basic 語(yǔ)法,應(yīng)該輸出“ a=b”。而執(zhí)行順序是這樣的: 第 1 行 第 2 行 第 3 行 第 6 行 第 7 行 圖 11 執(zhí)行順序圖 對(duì)于每一行代碼來(lái)講,分為 2 類(lèi): ? 賦值表達(dá)式 ? 普通語(yǔ)句 例如,第 2 行為賦值表達(dá)式;第 7 行為普通語(yǔ)句。 對(duì)于賦值表達(dá)式來(lái)講,一定是 變量名 = 表達(dá)式 這種形勢(shì)的,而對(duì)于 普通語(yǔ)句來(lái)講,則一定是關(guān)鍵字開(kāi)頭的。例如“ if a b then”,就是以關(guān)鍵字“ if”開(kāi)頭的。所以上述源程序可以用下表描述: 行號(hào) 語(yǔ)句 類(lèi)型 Head 1 a = 1 賦值表達(dá)式 2 b = a + 2 賦值表達(dá)式 3 if a b then 普通語(yǔ)句 If 4 print “ab” 普通語(yǔ)句 Print 5 Else 普通語(yǔ)句 Else 6 print “a=b” 普通語(yǔ)句 Print 7 end if 普通語(yǔ)句 End if 表 11 語(yǔ)句類(lèi)型表 編譯原理綜合設(shè)計(jì)報(bào)告 2 在編程的過(guò)程 中,首先識(shí)別這一行代碼屬于哪一類(lèi),然后調(diào)用相應(yīng)的子函數(shù)分別處理各種情況。 對(duì)于賦值語(yǔ)句來(lái)講,首先我們要建立一個(gè)變量表來(lái)保存所有的變量。這個(gè)變量表要實(shí)現(xiàn)兩個(gè)功能: 1. 通過(guò)變量名獲取變量的值。 2. 通過(guò)變量名能更改變量的值。 例如,在第一行, a = 1,也就是給 a這個(gè)變量賦值;而在第二行, b = a + 2,就需要先讀出 a的值,再計(jì)算出 a + 2 的值,再賦值給 b。 Basic 是一種順序執(zhí)行的語(yǔ)言。無(wú)論代碼多長(zhǎng),都是從第一行開(kāi)始順序執(zhí)行的,每執(zhí)行完一行以后,就會(huì)自動(dòng)跳轉(zhuǎn)到下一行,除非代碼中有強(qiáng)制的流程控制語(yǔ)句。例 中的第三行, ab不成立,所以就會(huì)跳轉(zhuǎn)到第 6 行,而非第 4 行。我們給源代碼標(biāo)記上指針,如下表所示: 行號(hào) 語(yǔ)句 類(lèi)型 Head 跳轉(zhuǎn)行 1 a = 1 賦值表達(dá)式 2 2 b = a + 2 賦值表達(dá)式 3 3 if a b then 普通語(yǔ)句 If 6 4 print “ab” 普通語(yǔ)句 Print 5 5 Else 普通語(yǔ)句 Else 7 6 print “a=b” 普通語(yǔ)句 Print 7 7 end if 普通語(yǔ)句 End if 結(jié)束 表 12 語(yǔ)句跳轉(zhuǎn)表 由 此可見(jiàn),程序在第 3 行的時(shí)候,可以選擇性地跳到第 4行或第 6行,至于究竟怎么跳,取決于 if 后面跟的條件。 簡(jiǎn)單歸納例 中的跳轉(zhuǎn)規(guī)則,那么就是: 1. Head 為空,則跳下一行。 2. Head 為 Print,則跳下一行。 3. Head 為 If,則先看條件,條件真則跳下一行,假則跳 else 的下一行。 4. Head 為 Else,則跳 End If 5. Head 為 End if,則結(jié)束。 上述規(guī)則僅僅針對(duì)例 來(lái)講的,稍微復(fù)雜一點(diǎn)的情況,例如嵌套結(jié)構(gòu),其他普通語(yǔ)句,其他流程控制語(yǔ)句的介入,為了能正確所有的語(yǔ)句,我們把處理規(guī)則簡(jiǎn)單歸納如下: 編譯原理綜合設(shè)計(jì)報(bào)告 3 1. 對(duì) 于賦值表達(dá)式來(lái)講,采用逆波蘭式的辦法進(jìn)行處理; 2. 對(duì)于普通語(yǔ)句的處理辦法,則是采用有窮自動(dòng)機(jī) (DFA)的思想把句子拆成單詞,然后再對(duì)每個(gè)單詞的含義進(jìn)行理解。 3. 對(duì)于流程的控制,采用圖作為存儲(chǔ)代碼的數(shù)據(jù)結(jié)構(gòu),每行代碼抽象為圖中的一個(gè)結(jié)點(diǎn),每個(gè)跳轉(zhuǎn)都是圖中結(jié)點(diǎn)之間的關(guān)系。 編譯原理綜合設(shè)計(jì)報(bào)告 4 2.主模塊設(shè)計(jì) 設(shè)計(jì)思想 主模塊負(fù)責(zé)控制整個(gè)程序運(yùn)作的流程。通過(guò)對(duì)類(lèi)的基類(lèi)的調(diào)用來(lái)實(shí)現(xiàn)協(xié)調(diào)全局。在調(diào)入程序源代碼以后,采用 On error resume next 語(yǔ)句來(lái)忽略錯(cuò)誤對(duì)象的觸發(fā),然后在執(zhí)行結(jié)束后捕捉歷史錯(cuò)誤,從而輸出錯(cuò)誤 內(nèi)容。這樣做的目的是防止程序運(yùn)行中因異常的觸發(fā)導(dǎo)致整個(gè)程序崩潰。 主程序流程圖 圖 21 主程序流程圖 開(kāi)始打開(kāi)或直接輸入源程序初始化 cls Co de 模塊調(diào)用 cls Co de 執(zhí)行程序錯(cuò)誤棧內(nèi)為空 ?結(jié)束顯示錯(cuò)誤信息YN編譯原理綜合設(shè)計(jì)報(bào)告 5 主程序類(lèi)圖 編譯原理綜合設(shè)計(jì)報(bào)告 6 編譯原理綜合設(shè)計(jì)報(bào)告 7 程序框架說(shuō)明 f r m M a in Fo r m f r m A b o u t Fo r m M o d u le 1 M o d u l e + f M a in Fo r m+ g lo b a lC Vc ls S e n C l a s s M o d u le c ls L in e C l a s s M o d u le f r m R e s u l t Fo r m c ls C o d e C l a s s M o d u le * L i n e sc ls V a r C l a s s M o d u le c ls S t a c k C l a s s M o d u le c ls E x p P l u s C l a s s M o d u le c e s f s k o p s k e x pf r m V a r s Fo r m 圖 23 程序框架 程序采用面向?qū)ο蟮木幊趟枷?,采用?lèi)模塊來(lái)把整個(gè)程序拆分成很多個(gè)小模塊,并用 clsCode模塊把所有的模塊都貫穿起來(lái)。 主要分為標(biāo)準(zhǔn)模塊、類(lèi)模塊和窗體。 表 21 程序模塊構(gòu)成圖 類(lèi)型 文件名 說(shuō)明 標(biāo)準(zhǔn)模塊 Module1 用來(lái)保存一些系統(tǒng)必須的靜態(tài)方法以及全局變量、常量。 類(lèi)模塊 clsVar 變 量表,實(shí)現(xiàn)單詞到數(shù)字的映射關(guān)系。 類(lèi)模塊 clsStack 一個(gè)類(lèi),用于實(shí)現(xiàn)一個(gè)棧的功能。 類(lèi)模塊 clsSen 用于實(shí)現(xiàn)句子的 DFA 分析,把句子拆分成單詞。 類(lèi)模塊 clsExpPlus 用來(lái)計(jì)算邏輯表達(dá)式和算術(shù)表達(dá)式(依賴(lài)于 clsStack、 clsSen、clsVar 類(lèi))。 類(lèi)模塊 clsLine 結(jié)點(diǎn)類(lèi),用于記錄某一行源代碼的特征(依賴(lài)于 clsSen 類(lèi))。 類(lèi)模塊 clsCode 主控制類(lèi),是整個(gè)解釋程序的入口。依賴(lài)于所有其他類(lèi)。 窗體 frmMain 主窗體,也是源代碼編輯的界面。 窗 體 frmAbout 關(guān)于窗口。 窗體 frmResult 執(zhí)行結(jié)果窗口。 窗體 frmVars 調(diào)試窗口、變量表窗口。 編譯原理綜合設(shè)計(jì)報(bào)告 8 對(duì)象瀏覽器 編譯原理綜合設(shè)計(jì)報(bào)告 9 /邏輯表達(dá)式設(shè)計(jì) Cla ss _ Initi a li z e ()+ log ic ( in s : S tr ing )+ exp ( in s : S tr ing ) log ic _ it ( in s : S tr ing ) Ca lcu late () my Va r ( in n a me : S tr ing ) : Do u b le+ is Ke y ( in s : S tr ing ) : Bo o lea n Op e r ( ) : S tr ing sf : c ls Va r sko p
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1