




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、立項(xiàng)報(bào)告PAGE 外事管理系統(tǒng)立項(xiàng)報(bào)告項(xiàng)目組成學(xué)號(hào)姓名角色分工組內(nèi)評(píng)分GS132A453溫慧項(xiàng)目經(jīng)理產(chǎn)品選題,規(guī)劃并執(zhí)筆GS132A465李夢漪系統(tǒng)分析師產(chǎn)品管理與設(shè)計(jì)并執(zhí)筆GS132A456蔣寧寧需求工程師產(chǎn)品需求分析GS132AE17戴垚軟件工程師產(chǎn)品原型設(shè)計(jì)GS132AC57蔡萬鴻軟件工程師產(chǎn)品原型設(shè)計(jì)立項(xiàng)報(bào)告項(xiàng)目目標(biāo)外事管理系統(tǒng)的項(xiàng)目目標(biāo)可以歸納為:管理目標(biāo) (1) 實(shí)現(xiàn)國際事業(yè)部在外事相關(guān)方面工作的規(guī)范化管理; (2) 實(shí)現(xiàn)外事相關(guān)信息的采集、匯總、共享及統(tǒng)計(jì)分析功能。 業(yè)務(wù)目標(biāo) (1) 實(shí)現(xiàn)外事信息的匯總,輔助領(lǐng)導(dǎo)總覽業(yè)務(wù)情況全貌; (2) 實(shí)現(xiàn)外事各處室之間的數(shù)據(jù)共享,支持處室間
2、協(xié)同工作; (3) 實(shí)現(xiàn)外事相關(guān)業(yè)務(wù)流程和資料的信息化和自動(dòng)化; (4) 實(shí)現(xiàn)外事內(nèi)部業(yè)務(wù)的督辦,加強(qiáng)對于日常工作的管理監(jiān)督; (5) 增強(qiáng)對綜合基礎(chǔ)方面工作的支持管理,包括機(jī)構(gòu)建設(shè)管理、基礎(chǔ)信息管理、宣傳和培訓(xùn)工作管理等。 產(chǎn)品概述 通過外事管理系統(tǒng),實(shí)現(xiàn)外事辦公業(yè)務(wù)流程自動(dòng)化與領(lǐng)導(dǎo)輔助辦公;海外項(xiàng)目、外事聯(lián)絡(luò)、區(qū)域?qū)ν馐聞?wù)、對外合作交流等專項(xiàng)業(yè)務(wù)管理;外事信息的采集、匯總和統(tǒng)計(jì)分析,實(shí)現(xiàn)外事信息資料信息化;外事信息數(shù)據(jù)共享,支持處室間協(xié)同工作;業(yè)務(wù)管理精細(xì)化、信息共享統(tǒng)一化。產(chǎn)品主要功能如下: (1) 領(lǐng)導(dǎo)辦公:面向領(lǐng)導(dǎo)的可定制的信息總覽工具,為領(lǐng)導(dǎo)提供業(yè)務(wù)動(dòng)態(tài)的顯示及流程和業(yè)務(wù)數(shù)據(jù)的動(dòng)態(tài)
3、統(tǒng)計(jì)分析;(2) 督察督辦:任務(wù)的督察督辦與分工協(xié)作;(3) 內(nèi)部培訓(xùn):培訓(xùn)事宜的通知、配置資料共享、培訓(xùn)總結(jié)等;(4) 日程安排:提供日常安排與提醒;(5) 業(yè)務(wù)呈報(bào):包括內(nèi)部業(yè)務(wù)填報(bào),申請字號(hào),送領(lǐng)導(dǎo)、部門領(lǐng)導(dǎo)審核,辦結(jié)等。2) 區(qū)域?qū)ν馐聞?wù)(1)海外項(xiàng)目:海外項(xiàng)目的報(bào)批、備案,海外項(xiàng)目人員的協(xié)調(diào)管理,海外項(xiàng)目信息收集、上報(bào)。(2)駐外機(jī)構(gòu):境外機(jī)構(gòu)報(bào)批和協(xié)調(diào)管理,與駐外辦事處的業(yè)務(wù)指導(dǎo);(3)海外信息:收集和研究區(qū)域國家的政、經(jīng)、法等資料,收集、整理、跟蹤和報(bào)告區(qū)域合作信息。3) 外事聯(lián)絡(luò)事務(wù)(1) 外事聯(lián)絡(luò):建立和協(xié)調(diào)公司與國外公司的關(guān)系;(2) 領(lǐng)導(dǎo)外事安排:組織、協(xié)調(diào)、安排領(lǐng)導(dǎo)出席
4、的外事活動(dòng);(3) 外事接待:國外重要團(tuán)組的來訪及接待,包括:報(bào)批、接待計(jì)劃,交通及住宿、對外聯(lián)絡(luò)、翻譯、機(jī)場迎送;(4) 外事翻譯:主要文件資料、涉外活動(dòng)的翻譯工作,及譯文資料的備案管理。4) 出國管理事務(wù)(1) 出國管理:出國項(xiàng)目審核與立項(xiàng),出國團(tuán)組計(jì)劃,出國手續(xù)辦理,護(hù)照管理等;(2) 出國信息:出國匯總信息收集、上報(bào)。5) 對外合作與交流事務(wù)(1) 對外形象與宣傳:公司對外口徑、宣傳材料(包括:年報(bào)、綜合介紹、影視片等)的編寫、制作、備案; (2) 對臺(tái)事務(wù):申報(bào)、審批、管理和實(shí)施與臺(tái)灣各類經(jīng)濟(jì)技術(shù)合作與交流項(xiàng)目,審批和辦理對臺(tái)人員往來訪問及其他對臺(tái)事務(wù);(3) 國際合作與交流:組織、
5、協(xié)調(diào)、實(shí)施與國外開展雙、多邊合作項(xiàng)目和國際援款項(xiàng)目、雙多邊能源對話、國際會(huì)議和展覽等;科技人才引進(jìn)管理;(4) 涉外培訓(xùn)與人員交流:組織、實(shí)施涉外員交流、培訓(xùn)項(xiàng)目。發(fā)展現(xiàn)狀與競爭分析可行性分析實(shí)現(xiàn)方法可行性項(xiàng)目管理采用微軟解決方案架構(gòu)(MSF)和微軟運(yùn)行管理架構(gòu)(MOF) MSF及MOF項(xiàng)目管理方法基于MSF的項(xiàng)目管理門戶,保證項(xiàng)目全程的任務(wù)分配、進(jìn)度控制和文檔管理等項(xiàng)目管理門戶采用MSF的項(xiàng)目管理方法與MOF的系統(tǒng)運(yùn)維方法,已成功應(yīng)用于多個(gè)辦公管理系統(tǒng),為系統(tǒng)的順利實(shí)現(xiàn)與平穩(wěn)運(yùn)行提供了可靠的實(shí)踐保障。技術(shù)方案可行性外事管理系統(tǒng)依據(jù)已成功實(shí)施成熟模式實(shí)例進(jìn)行方案設(shè)計(jì),提供了技術(shù)可行性保證。系統(tǒng)
6、實(shí)現(xiàn)前提條件加強(qiáng)隊(duì)伍建設(shè),實(shí)現(xiàn)分析設(shè)計(jì)、開發(fā)、實(shí)施、運(yùn)維的專業(yè)化分工,提供對外的凝聚力;完善、規(guī)范項(xiàng)目管理過程,健全管理體制,實(shí)現(xiàn)過程關(guān)鍵點(diǎn)控制;加強(qiáng)軟件開發(fā)規(guī)范化管理,提升自主研發(fā)能力。產(chǎn)品定位從系統(tǒng)業(yè)務(wù)人員的職務(wù)職能角度分析,系統(tǒng)用戶對象氛圍外事局領(lǐng)導(dǎo)、外事局審核崗、外事局業(yè)務(wù)專業(yè)崗、外事審核崗、外事專員崗5類角色,對應(yīng)行為、操作的業(yè)務(wù)數(shù)據(jù)等內(nèi)容如下:角色行為數(shù)據(jù)外事局領(lǐng)導(dǎo)崗R1-01審核各處上報(bào)材料R1-02簽發(fā)外事局公文R1-03了解業(yè)務(wù)統(tǒng)計(jì)信息上報(bào)材料、審核意見外事公文、簽發(fā)意見各類外事統(tǒng)計(jì)報(bào)表外事局業(yè)務(wù)審核崗R2-01 審核業(yè)務(wù)專員的上報(bào)材料R2-02 了解業(yè)務(wù)辦理情況R2-03
7、了解業(yè)務(wù)統(tǒng)計(jì)信息上報(bào)材料、審核意見預(yù)算撥付情況出國統(tǒng)計(jì)報(bào)表財(cái)務(wù)統(tǒng)計(jì)報(bào)表外事活動(dòng)統(tǒng)計(jì)報(bào)表展宣統(tǒng)計(jì)報(bào)表外事局業(yè)務(wù)專員崗R3-01 審核上報(bào)資料R3-02辦理各種外事業(yè)務(wù)、手續(xù)R3-03 征求相關(guān)部門意見R3-04 起草外事公文R3-05 匯總涉外業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)上報(bào)材料、審核意見各外事業(yè)務(wù)資料、手續(xù)表單等相關(guān)部門意見外事辦公文、集團(tuán)公司公文各類統(tǒng)計(jì)報(bào)表、匯總材料、動(dòng)態(tài)信息外事審核崗R4-01 審核各類上報(bào)資料R4-02 簽發(fā)上報(bào)公文上報(bào)材料、本審核意見簽發(fā)意見,本單位正式行文外事專員崗R5-01 上報(bào)各類外事申請R5-02 統(tǒng)計(jì)匯總各類外事數(shù)據(jù)R5-03 辦理各類外事業(yè)務(wù)出國立項(xiàng)、備案申報(bào)等護(hù)照辦理匯
8、總、海外項(xiàng)目匯總等出國培訓(xùn)、出國財(cái)務(wù)等關(guān)鍵技術(shù)、難點(diǎn)與解決方法需求變化問題主要問題描述:外事管理系統(tǒng)用戶對象涉及廣泛,隨著業(yè)務(wù)的不斷發(fā)展對系統(tǒng)的需求也在不斷發(fā)生變化,這使得外事管理系統(tǒng)也需要不斷地進(jìn)行調(diào)整才能滿足業(yè)務(wù)需求。建議解決方案:在系統(tǒng)設(shè)計(jì)和開發(fā)時(shí)要充分考慮系統(tǒng)的可擴(kuò)展性,當(dāng)由于業(yè)務(wù)變化或組織機(jī)構(gòu)變化造成需求發(fā)生變化時(shí)可以可能通過少量的開發(fā)基于通過一些配置的更改來滿足新的需求,同時(shí)需要業(yè)務(wù)人員的全程參與,及時(shí)與實(shí)施人員進(jìn)行業(yè)務(wù)、功能上的溝通。數(shù)據(jù)架構(gòu)概要設(shè)計(jì)1) 數(shù)據(jù)間關(guān)聯(lián):業(yè)務(wù)數(shù)據(jù)間以海外項(xiàng)目和國家為關(guān)鍵信息,出國、安全風(fēng)險(xiǎn)評(píng)估、地區(qū)動(dòng)態(tài)、涉外地區(qū)事務(wù)、涉外機(jī)構(gòu)等業(yè)務(wù)信息通過項(xiàng)目和國家
9、進(jìn)行關(guān)聯(lián)。數(shù)據(jù)構(gòu)架-數(shù)據(jù)間關(guān)聯(lián)圖2) 業(yè)務(wù)與數(shù)據(jù)的關(guān)系:數(shù)據(jù)構(gòu)架-業(yè)務(wù)與數(shù)據(jù)關(guān)系圖進(jìn)度估算第一階段:啟動(dòng)2013年11月確定工期成本成立項(xiàng)目組。2.第二階段:需求分析階段2013年11月-2014年3月,明確用戶業(yè)務(wù)需求,編寫軟件需求說明書 。3.第三階段:系統(tǒng)設(shè)計(jì)階段2014年4月-2014年6月形成概要設(shè)說明書和詳細(xì)設(shè)計(jì)說明書。4.第四階段:開發(fā)測試階段2014年7月-2015年2月,完成編碼、測試,提交系統(tǒng)版本、單元測試用例報(bào)告5.第五階段:集成優(yōu)化與試運(yùn)行2015年3月-2015年7月,試運(yùn)行準(zhǔn)備工作結(jié)束進(jìn)入試運(yùn)行階段,編寫系統(tǒng)試運(yùn)行報(bào)告以及用戶試運(yùn)行反饋。6.第六階段:驗(yàn)收與市場推廣
10、2015年8月,試運(yùn)行結(jié)束后,產(chǎn)品組提出最終驗(yàn)收申請,提交所有交付物, 并進(jìn)行產(chǎn)品驗(yàn)收和市場推廣。投資預(yù)算項(xiàng)目投資包括工程費(fèi)用、其它費(fèi)用和預(yù)備費(fèi)用。其中,1、工程費(fèi)用下分:硬件費(fèi)用、軟件費(fèi)用、產(chǎn)品人力投資估算、內(nèi)部支持費(fèi)用。1) 硬件費(fèi)用:包括服務(wù)器、UPS和網(wǎng)絡(luò)端口設(shè)備費(fèi)用的估算。2) 軟件費(fèi)用:包括應(yīng)用軟件、所需數(shù)據(jù)庫和需額外購買的系統(tǒng)軟件費(fèi)用的估算。軟件報(bào)價(jià)包括軟件許可證購置費(fèi)用(含三年免費(fèi)升級(jí)服務(wù)和技術(shù)支持)。3) 產(chǎn)品人力投資估算:本次評(píng)估計(jì)算期為1年零10個(gè)月,平均投入員人,累計(jì)總工作量110人月,按公司人月成本2萬元/人月,約220萬元人力成本投入。4)材料和辦公費(fèi)用:約2萬元。
11、2、其它費(fèi)用會(huì)議費(fèi)、可行性研究及評(píng)審費(fèi)和其它費(fèi)用。可行性研究及評(píng)審費(fèi)是指在建設(shè)項(xiàng)目前期工作中,編制、評(píng)估項(xiàng)目可行性研究報(bào)告的費(fèi)用,分檔計(jì)費(fèi)見下表:3、預(yù)備費(fèi)用:即不可預(yù)見費(fèi)用,按投資總額的3%計(jì)算。表:總投資估算結(jié)果項(xiàng)目名稱投資(萬元)所占比例總投資257.5100%工程費(fèi)用24394.37%硬件投資155.83%軟件投資72.72%產(chǎn)品人力投資估算22085.44%材料和辦公費(fèi)用20.78%其它費(fèi)用72.72%可行性研究及評(píng)審費(fèi)20.78%會(huì)議費(fèi)51.94%預(yù)備費(fèi)7.52.91%市場計(jì)劃與利潤分析附錄資料:不需要的可以自行刪除C語言編譯器的設(shè)計(jì)與實(shí)現(xiàn) 我們設(shè)計(jì)的編譯程序涉及到編譯五個(gè)階段中的
12、三個(gè),即詞法分析器、語法分析器和中間代碼生成器。編譯程序的輸出結(jié)果包括詞法分析后的二元式序列、變量名表、狀態(tài)棧分析過程顯示及四元式序列程序,整個(gè)編譯程序分為三部分:(1) 詞法分析部分(2) 語法分析處理及四元式生成部分 (3) 輸出顯示部分一詞法分析器設(shè)計(jì) 由于我們規(guī)定的程序語句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯(cuò)誤的檢查,而將編譯程序的重點(diǎn)放在中間代碼生成階段。詞法分析器的功能是輸入源程序,輸出單詞符號(hào)。我們規(guī)定輸出的單詞符號(hào)格式為如下的二元式: (單詞種別,單詞自身的值)#define ACC -2#define syl_if 0#define syl_else 1#defi
13、ne syl_while 2#define syl_begin 3#define syl_end 4#define a 5#define semicolon 6#define e 7#define jinghao 8#define s 9#define L 10#define tempsy 11#define EA 12#define EO 13#define plus 14#define times 15#define becomes 16#define op_and 17#define op_or 18#define op_not 19#define rop 20#define lpare
14、nt 21#define rparent 22#define ident 23#define intconst 24函數(shù)說明 讀取函數(shù) readline( )、readch( )詞法分析包含從源文件讀取字符的操作,但頻繁的讀文件操作會(huì)影響程序執(zhí)行效率,故實(shí)際上是從源程序文件” source.dat ”中讀取一行到輸入緩沖區(qū),而詞法分析過程中每次讀取一個(gè)字符時(shí)則是通過執(zhí)行 readch( )從輸入緩沖區(qū)獲得的;若緩沖區(qū)已被讀空,則再執(zhí)行readline( )從 source.dat 中讀取下一行至輸入緩沖區(qū)。掃描函數(shù) scan( ) 掃描函數(shù) scan( )的功能是濾除多余空格并對主要單詞進(jìn)行分
15、析處理,將分析得到的二元式存入二元式結(jié)果緩沖區(qū)。變量處理 find( )變量處理中首先把以字母開頭的字母數(shù)字串存到 spelling 數(shù)組中,然后進(jìn)行識(shí)別。識(shí)別過程是先讓它與保留關(guān)鍵字表中的所有關(guān)鍵字進(jìn)行匹配,若獲得成功則說明它為保留關(guān)鍵字,即將其內(nèi)碼值寫入二元式結(jié)果緩沖區(qū);否則說明其為變量,這時(shí)讓它與變量名表中的變量進(jìn)行匹配( 變量匹配函數(shù) find( ) ),如果成功,則說明該變量已存在并在二元式結(jié)果緩沖區(qū)中標(biāo)記為此變量( 值填為該變量在變量名表中的位置),否則將該變量登記到變量名表中,再將這個(gè)新變量存入二元式緩存數(shù)組中。數(shù)字識(shí)別 number( ) 數(shù)字識(shí)別將識(shí)別出的數(shù)字填入二元式結(jié)果緩
16、存數(shù)組。顯示函數(shù) 顯示函數(shù)的功能在屏幕上輸出詞法分析的結(jié)果( 即二元式序列程序),同時(shí)給出二元式個(gè)數(shù)及源程序行數(shù)統(tǒng)計(jì)。二語法分析器設(shè)計(jì) 語法分析器的核心是三張 SLR 分析表以及針對這三張 SLR 分析表進(jìn)行語義加工的語義動(dòng)作。編譯程序中語法分析處理及四元式生成部分主要是以二元式作為輸入,并通過 SLR 分析表對語法分析處理過程進(jìn)行控制,使四元式翻譯的工作有條不紊的進(jìn)行,同時(shí)識(shí)別語法分析中的語法錯(cuò)誤。在處理 if 和 while 語句時(shí),需要進(jìn)行真值或假值的拉鏈和返填工作,以便轉(zhuǎn)移目標(biāo)的正確填入。1. 控制語句的 SLR 分析表1 設(shè)計(jì)過程如下: 將擴(kuò)展文法GS S1)S if e S els
17、e S2)S while e S3)S L 4)S a;5)L S6)L SL用_CLOSURE方法構(gòu)造LR(0)項(xiàng)目規(guī)范簇為:I0: S SS if e S else SS while e S S L S a ;I1: S SI2: S ife S else SI3: S while e SI4: S L L S L SL S if e S else SS while e S S L S a ; I5: S a; I6: S if e S else S S if e S else SS while e S S L S a ; I7: S while e S S if e S else SS
18、while e S S L S a ; I8: S L I9: L S L SL L SL L S S if e S else SS while e S S L S a ; I10: S a ; I11: S if e S else SI12: S while e S I13: S L I14: S SL I15: S if e S else S S if e S else SS while e S S L S a ; I16: S if e S else S 構(gòu)造文法G中非終結(jié)符的FOLLOW集如下:FOLLOW(S) = # S if e S else S得FOLLOW(S) = else
19、 S L 得FOLLOW(L) = 3) S S 得FOLLOW(S) = else , # L S 因?yàn)镕IRST(S) = ,所以FOLLOW(S) = else , #, 在()項(xiàng)目規(guī)范簇中,只有9有“移進(jìn)歸約”沖突,L SL SL因?yàn)镕OLLOW(L) FIRST(L) = 所以可以用方法解決以上沖突,最后我們得到的分析表如下:ACTIONGOTO ifElsewhilea;e#SL0S2S3S4S511ACC2S63S74S2S3S4S5985S106S2S3S4S5117S2S3S4S5128S139S2S3S4R5S591410R4R4R4111512R2R2R213R3R3R3
20、14R615S2S3S4S51616R1R1R1static int action2011=/* 0 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 1, -1,/* 1 */ -1, -1, -1, -1, -1, -1, -1, -1,ACC, -1, -1,/* 2 */ -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1,/* 3 */ -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1,/* 4 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 9, 8,/* 5 */ -1,
21、-1, -1, -1, -1, -1, 10, -1, -1, -1, -1,/* 6 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 11, -1,/* 7 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 12, -1,/* 8 */ -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1,/* 9 */ 2, -1, 3, 4,105, 5, -1, -1, -1, 9, 14,/* 10*/ -1,104, -1, -1,104, -1, -1, -1,104, -1, -1,/* 11*/ -1, 15, -1,
22、 -1, -1, -1, -1, -1, -1, -1, -1,/* 12*/ -1,102, -1, -1,102, -1, -1, -1,102, -1, -1,/* 13*/ -1,103, -1, -1,103, -1, -1, -1,103, -1, -1,/* 14*/ -1, -1, -1, -1,106, -1, -1, -1, -1, -1, -1,/* 15*/ 2, -1, 3, 4, -1, 5, -1, -1, -1, 16, -1,/* 16*/ -1,101, -1, -1,101, -1, -1, -1,101, -1, -1;其中,前 9 列為 action
23、值,后 2 列為 goto 值;016 表示 17 個(gè)移進(jìn)狀態(tài)( 即 Si);-1表示出錯(cuò);ACC 表示分析成功;而 100106 對應(yīng) 7 個(gè)歸約產(chǎn)生式:S SS if e S else SS while e SS L S a;L SL SL2. 算術(shù)表達(dá)式的 LR 分析表 2 設(shè)計(jì)如下:S EE E+EE E*EE (E)E i (過程略)ACTIONGOTOI+*()#E0S3S211S4S5ACC2S3S263R4R4R4R44S3S275S3S286S4S5S97R1R5R1R18R2R2R2R29R3R3R3R3static int action1107=/* 0 */ 3, -1
24、, -1, 2, -1, -1, 1,/* 1 */ -1, 4, 5, -1, -1,ACC, -1,/* 2 */ 3, -1, -1, 2, -1, -1, 6,/* 3 */ -1,104,104, -1,104,104, -1,/* 4 */ 3, -1, -1, 2, -1, -1, 7,/* 5 */ 3, -1, -1, 2, -1, -1, 8,/* 6 */ -1, 4, 5, -1, 9, -1, -1,/* 7 */ -1,101, 5, -1,101,101, -1,/* 8 */ -1,102,102, -1,102,102, -1,/* 9 */ -1,103,1
25、03, -1,103,103, -1;3.布爾表達(dá)式的 SLR 分析表3 設(shè)計(jì)如下:(過程略)S BB iB i rop iB ( B )B ! BA B &B ABO B |B OBACTIONGOTOiRop()!&|#BAO0S1S4S513781S2R1R1R1R12S33R2R2R2R24S1S4S511785S1S4S56786R4S9S10R47S1S4S514788S1S4S515789R5R5R510R7R7R711S12S9S1012R3R3R3R313S9S10ACC14R6S9S10R615R8S9S10R8static int action21611=/* 0 */
26、1, -1, 4, -1, 5, -1, -1, -1, 13, 7, 8,/* 1 */ 1, 2, -1,101, -1,101,101,101, -1, -1, -1,/* 2 */ 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 3 */ -1, -1, -1,102, -1,102,102,102, -1, -1, -1,/* 4 */ 1, -1, 4, -1, 5, -1, -1, -1, 11, 7, 8,/* 5 */ 1, -1, 4, -1, 5, -1, -1, -1, 6, 7, 8,/* 6 */ -1, -1, -1,10
27、4, -1, 9, 10,104, -1, -1, -1,/* 7 */ 1, -1, 4, -1, 5, -1, -1, -1, 14, 7, 8,/* 8 */ 1, -1, 4, -1, 5, -1, -1, -1, 15, 7, 8,/* 9 */ 105, -1,105, -1,105, -1, -1, -1, -1, -1, -1,/*10 */ 107, -1,107, -1,107, -1, -1, -1, -1, -1, -1,/*11 */ -1, -1, -1, 12, -1, 9, 10, -1, -1, -1, -1,/*12 */ -1, -1, -1,103, -
28、1,103,103,103, -1, -1, -1,/*13 */ -1, -1, -1, -1, -1, 9, 10,ACC, -1, -1, -1,/*14 */ -1, -1, -1,106, -1, 9, 10,106, -1, -1, -1,/*15 */ -1, -1, -1,108, -1, 9, 10,108, -1, -1, -1;LR 分析表控制語義加工的實(shí)現(xiàn):當(dāng)掃描 LR 分析表的當(dāng)前狀態(tài)為歸約狀態(tài)時(shí),則在調(diào)用與該狀態(tài)對應(yīng)的產(chǎn)生式進(jìn)行歸約的同時(shí),調(diào)用相應(yīng)的語義子程序進(jìn)行有關(guān)的翻譯工作。現(xiàn)在對 LR 分析器的分析棧加以擴(kuò)充,使得每個(gè)文法符號(hào)之后都跟著它的語義值。為了清晰起見
29、,我們把這個(gè)棧的每一項(xiàng)看成由三部分組成:狀態(tài) state ,文法符號(hào) syl 和語義值 val。編譯程序?qū)崿F(xiàn)算術(shù)表達(dá)式、布爾表達(dá)式及程序語句的語義加工時(shí),都是按這種狀態(tài)棧加工方式進(jìn)行的。例如:( 5 + 3 ) * 6的分析過程序號(hào)STATEValsylinput10-#( 5 + 3 ) * 6 #202-#(5 + 3 ) * 6 #3023#(5+ 3 ) * 6 #4026-5#(E+ 3 ) * 6 #50264-5-#(E+3 ) * 6 #602643-5-#(E+3 ) * 6 #702647-5-3#(E+E) * 6 #8026-8#(E) * 6 #90269-8-#(E
30、)* 6 #1001-8#E* 6 #11015-8-#E* 6 #120153-8-#E*6#130158-8-6#E*E#1401-48#E#15ACC在分析過程中,第(3)步操作后的狀態(tài)棧為 023,根據(jù)棧頂狀態(tài)“ 3”和現(xiàn)行輸入符號(hào)“ +”( input 欄字符串的第一個(gè)字符)查分析表 ACTION3,+=R4,即按第(4)個(gè)產(chǎn)生式 En 來進(jìn)行歸約;由于產(chǎn)生式右部僅含一項(xiàng),故去掉狀態(tài)棧棧頂“3”;此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第( 4)步的狀態(tài)。第( 7)步操作后也是如此,當(dāng)前狀態(tài)棧為 02
31、647,根據(jù)棧頂狀態(tài) 7 和現(xiàn)行輸入符號(hào)“ )”查分析表 ACTION7,)=R1,即按第(1)個(gè)產(chǎn)生式 EE1+E2進(jìn)行歸約;由于產(chǎn)生式右部有三項(xiàng),故去掉狀態(tài)棧棧頂?shù)?647 三項(xiàng);此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第(8)步的狀態(tài)。三中間代碼生成器設(shè)計(jì):布爾表達(dá)式 布爾表達(dá)式在程序語言中有兩個(gè)基本作用:一是用作控制語句( 如 if -else 或 while語句)的條件式;二是用于邏輯演算,計(jì)算邏輯值。布爾表達(dá)式是由布爾算符( &、| 、?。┳饔糜诓紶栕兞浚?或常數(shù))或關(guān)系表達(dá)式而形成的。關(guān)系表達(dá)式的
32、形式是 E1 rop E2,其中 rop 是關(guān)系符( 如或),E1和 E2是算術(shù)式。在這里,我們只考慮前面給定文法所產(chǎn)生的布爾表達(dá)式:BB &B | B | B | ! B | (B) | i rop i | i遵照我們的約定,布爾算符的優(yōu)先順序( 從高到低)為:!、&、|,并假定&和|都服從左結(jié)合規(guī)則。所有關(guān)系符的優(yōu)先級(jí)都是相同的,而且高于任何布爾算符,低于任何算術(shù)算符,關(guān)系算符不得結(jié)合。表達(dá)式的真、假出口的確定:考慮表達(dá)式 B1 | B2 ,若 B1為真,則立即知道 B 也為真;因此,B1的真出口也就是整個(gè) B 的真出口。若 B1?為假,則 B2必須被計(jì)值,B2的第一個(gè)四元式就是 B1的假
33、出口。當(dāng)然,B2的真、假出口也就是整個(gè) B的真、假出口。類似的考慮適用于對 B1 & B2的翻譯,我們將 B1 | B2和 B1 & B2 的翻譯用下圖表示,在自下而上的分析過程中,一個(gè)布爾式的真假出口往往不能在產(chǎn)生四元式的同時(shí)就填上。我們只好把這種未完成的四元式的地址( 編號(hào))作為 B 的語義值暫存起來,待到整個(gè)表達(dá)式的四元式產(chǎn)生完畢之后再來回填這個(gè)未填入的轉(zhuǎn)移目標(biāo)。條件語句對條件語句 if e S1 else S2 中的布爾表達(dá)式 e,其作用僅在于控制對 S1和 S2的選擇。因此,作為轉(zhuǎn)移條件的布爾式e,我們可以賦予它兩種“ 出口”:一是“ 真”出T口,出向 S1;一是“ 假”出口,出向
34、S2。于是,e的代碼F條件語句可以翻譯成如圖的一般形式。非終結(jié)符 e 具有兩項(xiàng)語義值 e _TC 和e_FC,它們分別指出了尚待回填真、S2的代碼假出口的四元式串。e 的“ 真”出口只有在往回掃描到if時(shí)才能知道,而它圖 3-2 條件語句的代碼結(jié)構(gòu) 的“ 假”出口則需到處理過 S1并且到達(dá) else 才能明確。這就是說,必須把 e_FC 的值傳下去,以便到達(dá)相應(yīng)的 else時(shí)才進(jìn)行回填。另外,當(dāng) S1語句執(zhí)行完時(shí)意味著整個(gè) if-else 語句也已執(zhí)行完畢;因此,在 S1的編碼之后應(yīng)產(chǎn)生一條無條件轉(zhuǎn)移指令。這條轉(zhuǎn)移指令將導(dǎo)致程序控制離開整個(gè) if-else 語句。但是,在完成 S2的翻譯之前,
35、這條無條件轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)是不知道的。甚至,在翻譯完 S2之后,這條轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)仍無法確定。這種情形是由于語句的嵌套性所引起的。例如下面的語句:if e1 if e2 S1 else S2 else S3 在 S1的代碼之后的那條無條件轉(zhuǎn)移指令不僅應(yīng)跨越 S2而且應(yīng)跨越 S3。這也就是說,轉(zhuǎn)移目標(biāo)的確定和語句所處的環(huán)境密切相關(guān)。條件循環(huán)語句條件循環(huán)語句 while e S 通常被翻譯成圖的代碼結(jié)構(gòu)。布爾式 e 的“ 真”出口出向 S 代碼段的第一個(gè)四元式。緊接 S 代碼段之后應(yīng)產(chǎn)生一條轉(zhuǎn)向測試 e 的無條件轉(zhuǎn)移指令。e 的“ 假”出口將導(dǎo)致程序控制離開整個(gè) while 語句。e 的“
36、假”出口目標(biāo)即使在整個(gè) while 語句翻譯完之后也未必明確。例如: if e1 while e2 S1 else S2這種情況仍是由于語句的嵌套性引起的。所以,我們只好把它作為語句的語義值 SCHAIN 暫留下來,以便在處理外層語句時(shí)再伺機(jī)回填。語法翻譯實(shí)現(xiàn)方法 將上述語法翻譯付諸實(shí)現(xiàn)過程中,我們僅保留了算術(shù)表達(dá)式和布爾表達(dá)式翻譯的文法和語義動(dòng)作;面對程序語句的翻譯,由于改造后含有較多的非終結(jié)符且語義動(dòng)作又相對簡單,故仍恢復(fù)為改造之前的程序語句文法。由于總體上構(gòu)造一個(gè) SLR 分析表來實(shí)現(xiàn)語法分析及語義加工將使得所構(gòu)造的 SLR 分析表過大,所以將其分為下面三部分處理:對算術(shù)表達(dá)式單獨(dú)處理,
37、即為算術(shù)表達(dá)式構(gòu)造一個(gè) SLR 分析表,并將賦值語句A=E 與算術(shù)表達(dá)式歸為一類處理,處理之后的賦值語句僅看作為程序語句文法中的一個(gè)終結(jié)符 a。對布爾表達(dá)式也單獨(dú)處理,并為其構(gòu)造一個(gè) SLR 分析表,經(jīng) SLR 分析表處理后的布爾表達(dá)式看作為程序語句文法中的一個(gè)終結(jié)符 e。程序語句文法此時(shí)變?yōu)椋篠 if e S else S | while e S | L | a;L SL | S此時(shí)為程序語句構(gòu)造相應(yīng)的 SLR 分析表就簡單多了。前面的程序語句文法中所添加的非終結(jié)符是為了能及時(shí)回填有關(guān)四元式轉(zhuǎn)移目標(biāo)而引入的,在取消了這些非終結(jié)符后又如何解決及時(shí)回填轉(zhuǎn)移目標(biāo)的問題呢?我們采取的解決方法是增加兩
38、個(gè)數(shù)組 labelmark 和 labeltemp 來分別記錄語句嵌套中每一層布爾表達(dá)式( 如果有的話)e 的首地址以及每一層else( 如果有的話)之前的四元式地址( 即無條件轉(zhuǎn)出此層 if 語句的四元式)。也即,對程序語句的翻譯來說:在處理完布爾表達(dá)式 e 后,回填 if 或 while 語句的真值鏈;在歸約完每一個(gè)語句 S 之后檢查符號(hào)棧,看在 S 之前的文法符號(hào)是否 if 或 while,若是則回填假值鏈( 假值入口為語句 S 所對應(yīng)的四元式序列之后;對 if 語句,此時(shí)已在該序列之后加入了一條無條件轉(zhuǎn)移的四元式);在 if 語句中,else 前面要加入一個(gè)無條件轉(zhuǎn)移的四元式轉(zhuǎn)向 if
39、 語句末尾;在 while語句尾要有一個(gè)無條件轉(zhuǎn)移四元式轉(zhuǎn)向 while 語句開頭。四數(shù)據(jù)結(jié)構(gòu)說明 編譯程序中涉及到的數(shù)據(jù)結(jié)構(gòu)說明如下:char ch=0; /*從字符緩沖區(qū)中讀取當(dāng)前字符*/int count=0; /*詞法分析結(jié)果緩沖區(qū)計(jì)數(shù)器*/static char spelling10= ; /*存放識(shí)別的字*/static char line81= ; /*一行字符緩沖區(qū)( 最多 80 個(gè)字符)*/char *pline; /*字符緩沖區(qū)指針*/static char ntab110010; /*變量名表:共100項(xiàng),每項(xiàng)長度為10*/struct ntab int tc; /*真值*/ int fc; /*假值*/ ntab2200; /*在布爾表達(dá)式 ) 中保存有關(guān)布爾變量的真、假值*/int label=0; /*指向 ntab2 的指針*/struct rewords char sp10; int sy; ; /*匹配表的結(jié)構(gòu),用來與輸入緩沖區(qū)中的單詞進(jìn)行匹配*/struct rewords
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空運(yùn)輸合同書
- 公司內(nèi)部銷售承包合同
- 土地買賣居間服務(wù)合同
- 返聘勞務(wù)合同
- 工程建設(shè)項(xiàng)目委托招標(biāo)代理合同
- 舊機(jī)動(dòng)車交易合同書
- 影視制作服務(wù)版權(quán)轉(zhuǎn)讓合同
- 山東特殊教育職業(yè)學(xué)院《口腔解剖生理學(xué)一》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西工商學(xué)院《機(jī)器人學(xué)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東勞動(dòng)職業(yè)技術(shù)學(xué)院《模具設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 固定翼無人機(jī)飛行原理課件
- 軟基處治面積四方聯(lián)測測量記錄表(清淤后)
- XXXXX醫(yī)院腎友會(huì)活動(dòng)方案
- 隧道施工重大危險(xiǎn)源辨識(shí)
- 環(huán)境監(jiān)理業(yè)務(wù)手冊(word)
- 人文關(guān)懷與優(yōu)質(zhì)護(hù)理課件
- 知識(shí)圖譜可視化-Neo4j(windows)
- 光伏電站作業(yè)危險(xiǎn)點(diǎn)分析及預(yù)控措施手冊
- 2021年深圳實(shí)驗(yàn)學(xué)校初中部七年級(jí)入學(xué)分班考試數(shù)學(xué)試卷及答案解析
- 水文流量測驗(yàn)
- 合作共贏商務(wù)合作PPT模板(基礎(chǔ)教育)
評(píng)論
0/150
提交評(píng)論