基于TENA定義語(yǔ)言的文本編輯和可視化編譯的研究與實(shí)現(xiàn)碩士畢業(yè)論文
《基于TENA定義語(yǔ)言的文本編輯和可視化編譯的研究與實(shí)現(xiàn)碩士畢業(yè)論文》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于TENA定義語(yǔ)言的文本編輯和可視化編譯的研究與實(shí)現(xiàn)碩士畢業(yè)論文(77頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、浙江大學(xué)碩士學(xué)位論文 Abstract TENA定義語(yǔ)言的文本編輯和可視化編譯的研究與實(shí)現(xiàn) 摘要 TENA是美國(guó)開(kāi)發(fā)的試驗(yàn)與訓(xùn)練領(lǐng)域的體系結(jié)構(gòu),它為靶場(chǎng)試驗(yàn)訓(xùn)練資源的開(kāi)發(fā)、集成和互操作提供公共的體系結(jié)構(gòu)框架。由于我國(guó)的軍工試驗(yàn)和訓(xùn)練在信息化過(guò)程中面臨著越來(lái)越大的挑戰(zhàn),研發(fā)我們自己的虛擬試驗(yàn)驗(yàn)證使能體系結(jié)構(gòu)(VITA)是非常必要的?;赥DL(TENA定義語(yǔ)言)的一體化模型構(gòu)建工具軟件,是VI
2、TA框架工具的重要組成部分,能提高模型構(gòu)建效率,為模型測(cè)試驗(yàn)證提供手段,并為模型的復(fù)用提供了基礎(chǔ)。 在此背景下,本文基于TDL語(yǔ)言要素,采用Eclipse RCP開(kāi)發(fā)架構(gòu)來(lái)完成該模型構(gòu)建工具,本文主要完成了以下幾方面的工作: 1.根據(jù)客戶需求,對(duì)系統(tǒng)的功能進(jìn)行了總體設(shè)計(jì)和模塊化劃分,將系統(tǒng)分成了五個(gè)功能模塊。 2.闡述了文本編輯模塊的工作原理,確定了實(shí)現(xiàn)TDL文本編輯器的方法,通過(guò)分析TDL語(yǔ)言的文法結(jié)構(gòu),在開(kāi)源框架XText的幫助下,生成了TDL編輯器,實(shí)現(xiàn)了高亮顯示、錯(cuò)誤提示、格式美化和內(nèi)容輔助等功能。 3.通過(guò)封裝調(diào)用TDL編譯器和VC編譯器,實(shí)現(xiàn)了框架代碼的生成和框架代碼的編譯
3、功能。 4.開(kāi)發(fā)了一體化集成平臺(tái),重點(diǎn)設(shè)計(jì)和完成了項(xiàng)目生成與管理、可視化文本編輯、可視化編譯等功能,為其它功能模塊的集成奠定了基礎(chǔ)。 最后總結(jié)了上述工作的經(jīng)驗(yàn)教訓(xùn),對(duì)未來(lái)的工作進(jìn)行了規(guī)劃和展望。 關(guān)鍵詞: TDL,框架代碼,文本編輯,編譯 i 浙江大學(xué)碩士學(xué)位論文 Abstract Abstract Test and Training Enabling Architecture (TENA) is a common architecture be
4、ing developed by U.S for test and training community,which provides architectural framework for the development, integration and interoperability of range test and training resources. Research our own Virtual Testing Enabling Architecture(VITA)is necessary because the test and training of military i
5、n the information process is facing many challenges. VIMT, which is an important part of the VITA, can improve the efficiency of model building, provide means for model testing and support model reusing. Based on the TDL language, this paper complete the model building tool by the Eclipse RCP deve
6、lopment framework. This paper mainly complete the following aspects: 1. According to the needs of the client, we design the whole system and devide the system into five modules. 2. Analyse the principle of the text editor module and design the method of the TDL editor. Through the analysis of the
7、TDL language grammer structure, we generate the TDL editor with the help of the open source framework XText, realizing the following functions:Syntax Highlighting, Error Marking, Content Formatting, Content Assistance etc. 3. we realizing the functions of the generation and compilation of the frame
8、work codes(C++) by encapsulating TDL compiler and VC compiler. 4. Complete the development of the integrated platform, design and finish the project formation and management, visualization text editing, visual compiler functions, which provide a foundation for integrating the other function modules
9、. At last, we summarize the experience and prospect the future work. Key Words: TDL, Framework Codes, Text Editor, Compilation ii 浙江大學(xué)碩士學(xué)位論文 目錄 目錄 摘要 i Abstract ii 圖目錄 IV 表目錄 V 第1章 緒論 1 1.1 課題背景 1 1.2 虛擬試驗(yàn)驗(yàn)證技術(shù)
10、發(fā)展?fàn)顩r 1 1.3 本文主要工作和意義 3 1.4 論文組織結(jié)構(gòu) 4 1.5 本章小結(jié) 4 第2章 相關(guān)知識(shí)介紹 5 2.1 TDL定義語(yǔ)言 5 2.1.1 TDL關(guān)鍵字 5 2.1.2 導(dǎo)入(import) 6 2.1.3 包(package) 6 2.1.4 狀態(tài)分布對(duì)象(SDO) 6 2.1.5 消息對(duì)象(message) 7 2.1.6 本地對(duì)象(Local Class) 8 2.1.7 向量數(shù)據(jù)類型(Vector) 9 2.1.8 接口模型(Interface) 9 2.1.9 枚舉數(shù)據(jù)類型(Enumetation) 9 2.1.10 TDL的基本數(shù)據(jù)
11、類型 10 2.2 Eclipse RCP框架 10 2.2.1 Eclipse RCP概述 10 2.2.2 Eclipse RCP體系結(jié)構(gòu) 11 2.2.3 Eclipse RCP的優(yōu)點(diǎn)和應(yīng)用 12 2.3 本章小結(jié) 12 第3章 系統(tǒng)總體設(shè)計(jì) 13 3.1 總體設(shè)計(jì) 13 3.2 功能模塊劃分 14 3.2.1 文本編輯模塊 14 3.2.2 可視化建模模塊 15 3.2.3 可視化框架代碼生成與編譯模塊 15 3.2.4 對(duì)象模型測(cè)試驗(yàn)證模塊 15 3.2.5 一體化集成平臺(tái) 16 3.3 本章小結(jié) 16 第4章 TDL文本編輯模塊的研究 17 4.1
12、功能介紹 17 4.2 文本編輯模塊的工作原理 17 4.2.1 TDL的I/O操作 18 4.2.2 語(yǔ)法高亮顯示 19 4.2.3 語(yǔ)法錯(cuò)誤提示 19 4.2.4 格式美化 19 4.2.5 快捷提示和自動(dòng)補(bǔ)充 20 4.3 文本編輯器的生成方法 21 4.3.1 XText介紹 21 4.3.2 XText的工作原理 22 4.3.3 領(lǐng)域特定語(yǔ)言 22 4.3.4 TDL的語(yǔ)法定義 22 4.3.5 TDL編輯器的生成方法 26 4.4 本章小結(jié) 27 第5章 框架代碼生成與編譯模塊的設(shè)計(jì) 28 5.1 功能介紹 28 5.2 模塊概要設(shè)計(jì) 29 5.
13、2.1 TDL編譯 29 5.2.2 錯(cuò)誤定位 31 5.2.3 框架代碼編譯 32 5.3 框架代碼生成與編譯模塊的詳細(xì)設(shè)計(jì) 33 5.4 本章小結(jié) 36 第6章 一體化集成平臺(tái)的設(shè)計(jì) 37 6.1 一體化集成平臺(tái)概述 37 6.2 一體化集成平臺(tái)的設(shè)計(jì) 37 6.2.1 項(xiàng)目生成與管理功能 37 6.2.2 可視化文本編輯功能 43 6.2.3 可視化框架代碼生成與編譯功能 49 6.3 本章小結(jié) 52 第7章 系統(tǒng)的實(shí)現(xiàn) 53 7.1 文本編輯器的實(shí)現(xiàn) 53 7.2 框架代碼生成與編譯模塊的實(shí)現(xiàn) 56 7.2.1 框架代碼生成的實(shí)現(xiàn) 56 7.2.2 框架
14、代碼編譯的實(shí)現(xiàn) 58 7.3 一體化集成平臺(tái)的實(shí)現(xiàn) 59 7.4 系統(tǒng)演示 60 7.5 本章小結(jié) 66 第8章 總結(jié)與展望 67 8.1 全文總結(jié) 67 8.2 工作展望 67 參考文獻(xiàn) 69 作者簡(jiǎn)歷 71 致謝 72 III 浙江大學(xué)碩士學(xué)位論文 圖目錄 圖目錄 圖2.1 RCP的體系結(jié)構(gòu) 11 圖3.1 軟件總體框架圖 14 圖3.2 可視化建模模塊的子模塊劃分 15 圖4.1 文本編輯模塊子功能劃分 17 圖
15、4.2 Eclipse編輯器的框架結(jié)構(gòu) 18 圖4.3 TDL語(yǔ)法高亮實(shí)現(xiàn)過(guò)程 19 圖4.4 VIMT快捷提示和自動(dòng)補(bǔ)充工作流程 21 圖5.1 可視化框架代碼生成與編譯模塊的工作原理 28 圖5.2 外部程序調(diào)用流程 30 圖5.3 CDT工程文件生成流程 31 圖5.4 錯(cuò)位定位的工作流程 32 圖5.5 框架代碼生成與編譯模塊的類圖 34 圖6.1 資源管理器組織結(jié)構(gòu) 38 圖6.2 項(xiàng)目生成與管理功能類圖 40 圖6.3 TDL編輯器多頁(yè)格式設(shè)計(jì) 44 圖6.4 可視化文本編輯功能類圖 45 圖6.5 打開(kāi)操作的執(zhí)行過(guò)程 46 圖6.6 主菜單欄填充流程 4
16、8 圖6.7 可視化TDL源碼編譯類圖 50 圖6.8 可視化框架代碼編譯類圖 50 圖6.9 顯示控制臺(tái)方法的工作流程 52 圖7.1 新建的XText工程 54 圖7.2 TDL語(yǔ)法規(guī)范 55 圖7.3 生成TDL語(yǔ)言組件 55 圖7.4 TDL文本編輯效果 56 圖7.5 程序主框架界面示意圖 59 圖7.6 VITA工程向?qū)Ы缑?60 圖7.7 VIMT工作界面 61 圖7.8 VITA工程文件 61 圖7.9 示例文件OMSample.vdl 62 圖7.10 編譯文件OMSample.vdl 63 圖7.11 OMSample.vdl的編譯結(jié)果 63
17、圖7.12 設(shè)置CPP編譯參數(shù) 64 圖7.13 編譯C++工程文件 65 圖7.14 C++工程文件編譯結(jié)果 65 V 浙江大學(xué)碩士學(xué)位論文 表目錄 表目錄 表2.1 TDL關(guān)鍵字 5 表2.2 TDL的基本數(shù)據(jù)類型 10 表4.1 EBNF的操作符 23 表5.1 可視化框架代碼生成與編譯模塊的功能 28 表6.1 OpenAction類的屬性定義 45 表6.2 ApplicationActionBarAdvisor類的屬性定義 4
18、7 浙江大學(xué)碩士學(xué)位論文 第1章 緒論 第1章 緒論 1.1 課題背景 在國(guó)防工業(yè)領(lǐng)域,例如探月工程、大飛機(jī)研制和運(yùn)載火箭開(kāi)發(fā)等,由于產(chǎn)品的復(fù)雜性和新穎性,傳統(tǒng)的試驗(yàn)方法受到客觀環(huán)境限制,難以完成產(chǎn)品的綜合性試驗(yàn),因此一些重要系統(tǒng)和關(guān)鍵技術(shù)的試驗(yàn)必須采用虛擬試驗(yàn)驗(yàn)證技術(shù),虛擬試驗(yàn)驗(yàn)證技術(shù)的研究對(duì)國(guó)防工業(yè)產(chǎn)品的開(kāi)發(fā)具有重要意義。近年來(lái),虛擬試驗(yàn)技術(shù)的研究逐漸興起,研究思想與方法得到了初步認(rèn)可,虛擬驗(yàn)證技術(shù)將系統(tǒng)工程方法、復(fù)雜系統(tǒng)建模技術(shù)和計(jì)算機(jī)仿真技術(shù)結(jié)合在一起,取得了階段性技術(shù)成果和應(yīng)用成果[1]。虛擬試驗(yàn)驗(yàn)證技術(shù)可以實(shí)現(xiàn)全系統(tǒng)性能評(píng)價(jià)和驗(yàn)證,降低了技術(shù)風(fēng)險(xiǎn)、節(jié)省了開(kāi)發(fā)費(fèi)用、縮短
19、了研制周期,具有傳統(tǒng)試驗(yàn)方法無(wú)法比擬的優(yōu)勢(shì),比如:美軍為了試驗(yàn)M1主戰(zhàn)坦克的作戰(zhàn)性能,采用傳統(tǒng)試驗(yàn)驗(yàn)證方式,大約要用兩年時(shí)間才能完成所有試驗(yàn)科目,并且要花費(fèi)數(shù)千萬(wàn)美元,但是采用虛擬試驗(yàn)驗(yàn)證技術(shù)只需三個(gè)月時(shí)間即可完成,所用經(jīng)費(fèi)更是大大降低。我國(guó)虛擬試驗(yàn)驗(yàn)證技術(shù)體系核心是結(jié)合應(yīng)用需求構(gòu)建面向我國(guó)軍用產(chǎn)品的、統(tǒng)一的虛擬實(shí)驗(yàn)驗(yàn)證使能體系結(jié)構(gòu)(Virtual Testing Enabling Architecture,簡(jiǎn)稱VITA)[1]。對(duì)該技術(shù)的深入研究將使軍用產(chǎn)品的試驗(yàn)驗(yàn)證水平達(dá)到新的高度,基于TDL(TENA定義語(yǔ)言)的一體化模型構(gòu)建工具軟件是VITA框架工具的重要組成部分,該工具的研發(fā)會(huì)極大的
20、提高模型構(gòu)建效率,為模型驗(yàn)證測(cè)試提供有效手段,同時(shí)為模型復(fù)用提供基礎(chǔ)。 1.2 虛擬試驗(yàn)驗(yàn)證技術(shù)發(fā)展?fàn)顩r 目前美國(guó)對(duì)虛擬試驗(yàn)驗(yàn)證技術(shù)的研究工作開(kāi)展得較早,投入的資源很多,取得了關(guān)鍵進(jìn)展,美國(guó)國(guó)防部經(jīng)過(guò)長(zhǎng)期研究成功開(kāi)發(fā)出了試驗(yàn)與訓(xùn)練領(lǐng)域的公共體系結(jié)構(gòu)——TENA(Test and Training Enabling Architecture試驗(yàn)與訓(xùn)練使能體系結(jié)構(gòu)),它為軍方的產(chǎn)品試驗(yàn)和作戰(zhàn)訓(xùn)練制定了標(biāo)準(zhǔn)規(guī)范,具有重要意義[2][3]。 TENA可以克服客觀環(huán)境限制,根據(jù)武器產(chǎn)品測(cè)試標(biāo)準(zhǔn)和軍方訓(xùn)練要求,將分布在各訓(xùn)練場(chǎng)和靶場(chǎng)的作戰(zhàn)訓(xùn)練資源和武器測(cè)試資源結(jié)合在一起,形成一個(gè)邏輯靶場(chǎng),為真實(shí)作戰(zhàn)
21、單元和虛擬作戰(zhàn)單元提供交互,實(shí)現(xiàn)在現(xiàn)實(shí)環(huán)境中難以完成的測(cè)試和訓(xùn)練任務(wù)[4]。 TENA的目標(biāo)是促進(jìn)作戰(zhàn)訓(xùn)練資源與軍工產(chǎn)品測(cè)試資源的交互,使不同的軟件產(chǎn)品之間可以無(wú)障礙的協(xié)同工作,可以應(yīng)用于不同的系統(tǒng)環(huán)境中,可以根據(jù)特定的訓(xùn)練和測(cè)試需要結(jié)合成具有特定功能的系統(tǒng)[2][5]。 TENA的核心包括三大部分:TENA對(duì)象模型、TENA中間件和建立虛擬邏輯靶場(chǎng)的標(biāo)準(zhǔn)、規(guī)則[6]。 TENA對(duì)象模型(LROM)采用統(tǒng)一建模語(yǔ)言(UML)和TENA定義的標(biāo)準(zhǔn)語(yǔ)言——TDL語(yǔ)言,封裝邏輯靶場(chǎng)的各種接口和協(xié)議,對(duì)邏輯靶場(chǎng)事件中邏輯靶場(chǎng)各種資源之間交換的所有信息進(jìn)行編碼,實(shí)現(xiàn)靶場(chǎng)資源之間的語(yǔ)義交互。TDL語(yǔ)
22、言是靶場(chǎng)資源之間實(shí)現(xiàn)語(yǔ)義互操作的基礎(chǔ),主要元素包括狀態(tài)分布對(duì)象(SDO)、接口模型、本地對(duì)象、消息對(duì)象、向量、包等[7-9]。TENA的對(duì)象模型包含了描述靶場(chǎng)需要的各種信息,是對(duì)描述對(duì)象模型的各種特征的描述。對(duì)象模型類似于CORBA(Common Object Request Broker Architecture 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))的元模型,但又有區(qū)別,它是CORBA元模型的擴(kuò)展模型。 TENA中間件實(shí)現(xiàn)了邏輯靶場(chǎng)中各種作戰(zhàn)訓(xùn)練資源和武器測(cè)試資源之間通信和交互。它的API隱藏了對(duì)象操作的實(shí)現(xiàn)細(xì)節(jié),編寫的軟件應(yīng)用代碼,可用于不同的試驗(yàn)或訓(xùn)練靶場(chǎng),適用于不同的底層通信機(jī)制,還可與各種武
23、器系統(tǒng)及靶場(chǎng)設(shè)施進(jìn)行接口[10]。 我國(guó)軍工試驗(yàn)和訓(xùn)練在信息化過(guò)程中面臨的挑戰(zhàn)越來(lái)越大,資源的不可重用性和不可組合性等問(wèn)題造成了資源的浪費(fèi),因此國(guó)內(nèi)試驗(yàn)和訓(xùn)練界對(duì)試驗(yàn)與訓(xùn)練使能體系結(jié)構(gòu)的研究進(jìn)程逐漸加快,自主研發(fā)虛擬試驗(yàn)驗(yàn)證使能體系結(jié)構(gòu)(Virtual Testing Enabling Architecture,簡(jiǎn)稱VITA)和虛擬試驗(yàn)場(chǎng)技術(shù)(Virtual Proving Group,簡(jiǎn)稱VPG)。VPG是一個(gè)分布式、復(fù)雜的一體化虛擬試驗(yàn)系統(tǒng),它為軍工產(chǎn)品開(kāi)發(fā)的全過(guò)程提供支持,提高了產(chǎn)品的開(kāi)發(fā)效率,降低了開(kāi)發(fā)風(fēng)險(xiǎn)和生產(chǎn)成本[10]。 由于建模和仿真高層體系結(jié)構(gòu)(HLA)也使用于試驗(yàn)與訓(xùn)練
24、領(lǐng)域,基于HLA的能力借鑒TENA思想對(duì)它進(jìn)行擴(kuò)充可以滿足試驗(yàn)與訓(xùn)練互操作的要求,這也是目前我國(guó)研發(fā)虛擬試驗(yàn)驗(yàn)證使能體系結(jié)構(gòu)的一種思路[11]。目前基于虛擬試驗(yàn)驗(yàn)證技術(shù)對(duì)虛擬靶場(chǎng)這一新型靶場(chǎng)試驗(yàn)?zāi)J降睦碚摵图夹g(shù)研究工作取得了較大進(jìn)展[12-14]。 美國(guó)的研究與實(shí)踐促進(jìn)了TENA技術(shù)和相關(guān)產(chǎn)品的豐富與成熟,所取得的理論研究和實(shí)踐應(yīng)用成果對(duì)我國(guó)的虛擬試驗(yàn)驗(yàn)證使能體系結(jié)構(gòu)的研究具有借鑒作用。但是TENA已經(jīng)成為美軍靶場(chǎng)指揮官委員會(huì)(RCC)的標(biāo)準(zhǔn),它的一切核心技術(shù)都嚴(yán)格保密,并且我國(guó)開(kāi)始研究虛擬試驗(yàn)驗(yàn)證技術(shù)的時(shí)間較晚,所以自主研發(fā)VITA以及它的核心產(chǎn)品依然有很大挑戰(zhàn)性[7] [15-17]。
25、 1.3 本文主要工作和意義 本文的主要工作是開(kāi)發(fā)VITA框架的重要組成部分——基于TDL的一體化模型構(gòu)建工具軟件,能提高模型構(gòu)建效率,為模型測(cè)試驗(yàn)證提供方法,并為模型復(fù)用提供基礎(chǔ)。 為了開(kāi)發(fā)基于TDL的一體化模型構(gòu)建工具軟件,需要對(duì)TDL編譯、中間件協(xié)調(diào)代碼自動(dòng)生成等關(guān)鍵技術(shù)進(jìn)行研究,然后在此基礎(chǔ)上進(jìn)行開(kāi)發(fā),包括可視化TDL編輯與生成、可視化建模、可視化對(duì)象模型代碼自動(dòng)生成、對(duì)象模型框架測(cè)試驗(yàn)證和一體化集成平臺(tái)。本文需要完成的工作有以下三個(gè)部分: 1. 實(shí)現(xiàn)TDL文本編輯器。該工具能支持TDL文本的編輯,并且包含支持文本格式美化,支持函數(shù)和關(guān)鍵字的高亮顯示和快捷提示,支持內(nèi)容輔助等友好
26、型功能。 2. 通過(guò)封裝調(diào)用TDL編譯器和VC編譯器,實(shí)現(xiàn)框架代碼可視化生成(編譯TDL文件生成C++文件)與框架代碼可視化編譯(編譯C++文件生成對(duì)象模型組件或可執(zhí)行程序)功能。 3. 設(shè)計(jì)與實(shí)現(xiàn)一體化集成平臺(tái)。利用Eclipse RCP框架構(gòu)建一體化集成平臺(tái),主要實(shí)現(xiàn)項(xiàng)目生成與管理功能、可視化文本編輯功能和可視化TDL編譯功能,方便以后對(duì)TDL編輯模塊、可視化建模模塊、框架代碼生成與編譯模塊、對(duì)象模型框架測(cè)試驗(yàn)證模塊進(jìn)行集成,實(shí)現(xiàn)一體化模型構(gòu)建工具。 目前國(guó)內(nèi)外對(duì)虛擬試驗(yàn)驗(yàn)證技術(shù)的研究比較熱門,其中技術(shù)最為成熟的就是美國(guó)試驗(yàn)與訓(xùn)練使能體系結(jié)構(gòu)TENA,它展示了強(qiáng)大的功能。國(guó)內(nèi)也有一些
27、研究機(jī)構(gòu)進(jìn)行相關(guān)的研究,并發(fā)表了一些研究成果,但大多是理論研究成果,很少有實(shí)際產(chǎn)品。本文開(kāi)發(fā)的基于TDL的一體化模型構(gòu)建工具軟件是國(guó)內(nèi)虛擬試驗(yàn)測(cè)試使能體系結(jié)構(gòu)VITA的重要組成工具,它的實(shí)現(xiàn)也可以為我國(guó)軍工領(lǐng)域的虛擬試驗(yàn)技術(shù)的研究盡一份綿薄之力。 1.4 論文組織結(jié)構(gòu) 本文分為七章,論文結(jié)構(gòu)安排如下: 第1章緒論。闡述了課題的背景,介紹了虛擬試驗(yàn)驗(yàn)證技術(shù)的發(fā)展?fàn)顩r,主要是美國(guó)的TENA框架的相關(guān)情況,最后說(shuō)明了本文將要完成的工作內(nèi)容和研究意義。 第2章相關(guān)知識(shí)介紹。介紹了基于TDL的一體化模型構(gòu)建工具軟件開(kāi)發(fā)工作涉及的相關(guān)知識(shí)、技術(shù),包括TDL語(yǔ)言、Eclipse RCP技術(shù)。 第3
28、章系統(tǒng)總體設(shè)計(jì)。介紹了系統(tǒng)的開(kāi)發(fā)環(huán)境并根據(jù)客戶的需求,梳理了系統(tǒng)需要實(shí)現(xiàn)的功能,將系統(tǒng)功能劃分為五個(gè)功能模塊,分別進(jìn)行設(shè)計(jì)和開(kāi)發(fā)。 第4章TDL文本編輯模塊研究。分析TDL文本編輯模塊的工作原理,研究TDL語(yǔ)言的文法結(jié)構(gòu),在開(kāi)源框架XText的輔助下,生成TDL文本編輯器,包括輸入輸出、語(yǔ)法高亮、錯(cuò)誤提示、格式美化、內(nèi)容輔助等功能。 第5章框架代碼生成與編譯模塊設(shè)計(jì)。對(duì)框架代碼生成、框架代碼編譯、錯(cuò)誤提示等功能進(jìn)行了設(shè)計(jì),詳細(xì)介紹了框架代碼生成和框架代碼編譯的實(shí)現(xiàn)方法。 第6章一體化集成平臺(tái)設(shè)計(jì)。設(shè)計(jì)一體化集成平臺(tái),為主要功能模塊的集成提供基礎(chǔ),主要介紹了項(xiàng)目生成與管理、可視化文本編輯、
29、可視化編譯功能的設(shè)計(jì)。 第7章系統(tǒng)的實(shí)現(xiàn)。根據(jù)前面幾章中對(duì)系統(tǒng)各功能的研究與設(shè)計(jì),實(shí)現(xiàn)了TDL文本編輯模塊、框架代碼生成與編譯模塊以及一體化集成平臺(tái),并對(duì)系統(tǒng)的功能進(jìn)行了演示。 第8章總結(jié)與展望。對(duì)論文的研究工作進(jìn)行了總結(jié),并對(duì)后續(xù)的工作進(jìn)行了展望。 1.5 本章小結(jié) 本章闡述了論文的課題背景,接著介紹了國(guó)內(nèi)外虛擬試驗(yàn)驗(yàn)證技術(shù)的發(fā)展?fàn)顩r,主要是美國(guó)的TENA框架的相關(guān)情況,然后總體介紹了論文的研究?jī)?nèi)容和研究的意義,最后介紹了全文的結(jié)構(gòu)安排。 4 浙江大學(xué)碩士學(xué)位論文 第2章相關(guān)知識(shí)介紹 第2章 相關(guān)知識(shí)介紹 本文的工作是開(kāi)發(fā)TDL一體化模型構(gòu)建工具,因此需要對(duì)相關(guān)知識(shí)有
30、所了解,主要是模型描述語(yǔ)言TDL和客戶端開(kāi)發(fā)框架Eclipse RCP。TDL語(yǔ)言是項(xiàng)目開(kāi)發(fā)的基礎(chǔ),一體化模型構(gòu)建工具中的TDL文本編輯器的實(shí)現(xiàn)就需要研究TDL語(yǔ)言的文法結(jié)構(gòu),Eclipse RCP框架是開(kāi)發(fā)一體化模型構(gòu)建工具的開(kāi)發(fā)工具,對(duì)這些知識(shí)的了解可以為以后的設(shè)計(jì)開(kāi)發(fā)工作提供便利。 2.1 TDL定義語(yǔ)言 IDL(Interface Description Language接口描述語(yǔ)言)是基于對(duì)象管理組織(OMG)的接口定義語(yǔ)言,TDL是TENA的定義語(yǔ)言,是對(duì)IDL的擴(kuò)展以便于支持LROM(Logical Range Object Model邏輯靶場(chǎng)對(duì)象模型),它封裝了LROM的各
31、種接口和協(xié)議,是公共通信語(yǔ)言,在VITA中,TDL作為建模語(yǔ)言用來(lái)編寫對(duì)象模型描述文件,即VDL文件,再經(jīng)過(guò)TDL編譯器編譯生成VOM(VITA對(duì)象模型)組件代碼和VOM組件基本實(shí)現(xiàn)層的全部中間件協(xié)同代碼,開(kāi)發(fā)人員再在其中填寫相關(guān)業(yè)務(wù)邏輯代碼,形成各個(gè)應(yīng)用。 2.1.1 TDL關(guān)鍵字 TDL語(yǔ)言一共包括30個(gè)關(guān)鍵字,具體情況如表2.1所示: 表2.1 TDL關(guān)鍵字 import package char otect implements private void class local class out message interface vector en
32、um extends unsigned short short oneway unsigned long long boolean unsigned long long long long string float double in raises readonly inout 2.1.2 導(dǎo)入(import) Import關(guān)鍵字允許一個(gè)VDL文件(及其生成VOM庫(kù)和VOM基本實(shí)現(xiàn)庫(kù))導(dǎo)入其它VDL文件(及其生成VOM庫(kù)和VOM基本實(shí)現(xiàn)庫(kù))。一個(gè)VDL文件編譯后生成一個(gè)VOM庫(kù)和一個(gè)VOM基本實(shí)現(xiàn)庫(kù),根據(jù)VDL文件import關(guān)系確定VOM庫(kù)和VOM基本實(shí)現(xiàn)
33、庫(kù)的依賴關(guān)系。
從最終用戶角度來(lái)看,他們?yōu)閼?yīng)用程序所開(kāi)發(fā)的基本實(shí)現(xiàn)庫(kù)將依賴該實(shí)現(xiàn)庫(kù)對(duì)應(yīng)VDL文件生成的基本實(shí)現(xiàn)庫(kù)。
導(dǎo)入(import)位于VDL文件的開(kāi)始,類似C++中的#include。導(dǎo)入一個(gè)VDL文件并不像C++里的預(yù)處理文件包含,導(dǎo)入的VDL文件必須是一個(gè)完整的且符合語(yǔ)法的VOM定義。
導(dǎo)入文件的語(yǔ)法很簡(jiǎn)單:import
34、space表示,IDL中用關(guān)鍵字module表示,TDL中用關(guān)鍵字package表示。C++和IDL對(duì)名稱空間沒(méi)有強(qiáng)制要求,但TDL語(yǔ)言的所以元素必須包含一個(gè)名稱空間。 package的語(yǔ)法如下所示: package packageName { //名稱空間中的所有元素(material) }; 與其它語(yǔ)言不同,該結(jié)構(gòu)在語(yǔ)句末尾有分號(hào)“;”。 TDL也支持嵌套結(jié)構(gòu),它的完全限定名(full qualified name)寫法與IDL和C++中一樣,除了名稱空間的關(guān)鍵字不同外,都采用“::”符號(hào)表示完全限定名,例如在包Sample中包含包Test,包Test中包含結(jié)構(gòu)類型L
35、oc,則這種嵌套結(jié)構(gòu)表示為Sample::Test::Loc。 2.1.4 狀態(tài)分布對(duì)象(SDO) SDO是元模型的關(guān)鍵部分,它支持各個(gè)資源之間的分布式通信,SDO包含一些方法能夠被遠(yuǎn)程調(diào)用,而且也包含公共狀態(tài),公共狀態(tài)可以發(fā)布給所有訂閱者,SDO的定義使用“class”關(guān)鍵字,使用“extends”關(guān)鍵字繼承一個(gè)其它的SDO類,可以擁有它的所有狀態(tài)屬性和方法并且可以定義自己的屬性和方法,使用“implements”關(guān)鍵字可以實(shí)現(xiàn)一個(gè)或多個(gè)接口中的方法。 SDO類有以下特點(diǎn): 1. 它的狀態(tài)成員可以是基本類型 2. 它的成員可以是指向自己的SDO指針,也可以是指向其它SDO的指針
36、3. 它的狀態(tài)成員可以是向量,但SDO不能是向量中的成員 4. 它的狀態(tài)成員可以是枚舉類型 5. 它的狀態(tài)成員可以是本地類(local class) 6. 它的狀態(tài)成員不能是消息(message) 下面是一個(gè)SDO類的示例: class Duration { long seconds; }; SDO Duration沒(méi)有方法,只有公共狀態(tài)屬性。 2.1.5 消息對(duì)象(message) 消息也是一種復(fù)雜的數(shù)據(jù)類型,包含本地方法和消息信息。消息是介于SDO和Local Class之間的一種數(shù)據(jù)類型,消息實(shí)例能夠?qū)⑾?shù)據(jù)通過(guò)中間件發(fā)布給訂閱者。與SDO不同,SDO設(shè)計(jì)用于不斷
37、將狀態(tài)發(fā)布給訂閱者,而消息往往用于將突發(fā)信息發(fā)布給訂閱者,消息一般作為事件使用。 消息具有以下特點(diǎn): 1. 作為一種數(shù)據(jù)結(jié)構(gòu),消息中可以包含SDO指針 2. 消息的狀態(tài)成員可以是向量 3. 消息中可以包含本地類 4. 消息可以繼承其它的消息,但最多只能繼承一個(gè)其它的消息 5. 消息的成員可以是基本類型、枚舉類型 6. 消息中可以有方法(operations),它僅是本地方法 7. 消息可以嵌套包含其它信息 一個(gè)消息定義的實(shí)例如下所示: local class Point { double x; double y; double z; st
38、ring plainString(); }; message PointMessage { Point location; long MessageID; void doit(); }; 2.1.6 本地對(duì)象(Local Class) 本地對(duì)象是一個(gè)復(fù)雜數(shù)據(jù)類型,包含方法(operation)和狀態(tài)信息(數(shù)據(jù)成員)。本地類類似于C語(yǔ)言中的結(jié)構(gòu)體,不同支出在于,結(jié)構(gòu)體只能包含狀態(tài)數(shù)據(jù),而本地類可以包含方法,但本地類的方法不能進(jìn)行遠(yuǎn)程調(diào)用,而總是只能在本地(調(diào)用者進(jìn)程內(nèi))調(diào)用。 本地對(duì)象具有以下特點(diǎn): 1. 本地類可以是狀態(tài)類對(duì)象(SDO)中的一個(gè)
39、狀態(tài)成員,也可以將一個(gè)SDO指針作為本地類成員 2. 本地類的狀態(tài)成員可以是向量,也可以是向量中的成員 3. 本地類最多只能繼承一個(gè)其它的本地類 4. 本地類的成員可以是枚舉類型、基本類型 5. 本地類的成員可以是其它本地類 6. 本地類的成員可以是消息(message) 7. 本地類可以作為各種方法的參數(shù)和返回類型 8. 本地類可以包含執(zhí)行操作、方法,并且這些方法可以存取本地類中的數(shù)據(jù)成員。 2.1.7 向量數(shù)據(jù)類型(Vector) 向量是一個(gè)可以在運(yùn)行時(shí)動(dòng)態(tài)調(diào)整大小的線性表,其所有成員是同一種類型的實(shí)例。例如,一個(gè)向量可以是“l(fā)ong”類型的向量,其所有成員
40、均是long型整數(shù),也可以是本地類(local class)類型的向量,此時(shí)其所有成員均是指定本地類的實(shí)例。 1. 向量可以包含在狀態(tài)分布對(duì)象(SDO)中,向量的成員可以是指向SDO的SDO指針 2. 向量類型可以是方法中參數(shù)的類型或返回值的類型 3. 向量成員可以是基本類型或枚舉類型 4. 向量成員的類型也可以是一個(gè)向量,利用此規(guī)則可以構(gòu)造多維向量 5. 向量成員可以是本地類(local class)的實(shí)例 2.1.8 接口模型(Interface) 在TENA中,接口可以理解成一種抽象實(shí)體定義,它與C++和Java語(yǔ)言中interface的語(yǔ)義基本一樣,接口中只有方
41、法成員(函數(shù)成員)而沒(méi)有數(shù)據(jù)成員。它的主要作用是封裝操作(方法、函數(shù)),并可以由狀態(tài)對(duì)象(SDO)、本地對(duì)象或者消息去實(shí)現(xiàn)它(可以理解為繼承)。一個(gè)接口中至少包含一個(gè)方法。 接口本身可以繼承其它接口,也支持多繼承,即可以將多個(gè)接口定義為自己的父接口。 下面是一個(gè)接口的示例: interface Controllable { string initialize(in string initializationData); long start(); void stop(); }; 2.1.9 枚舉數(shù)據(jù)類型(Enumetation) 枚舉類型用于定義有名符
42、號(hào)的集合,可以提高模型的可讀性,它本質(zhì)上是一種取值范圍受限的整數(shù)類型。 枚舉類型中的元素之間用逗號(hào)隔離,不能用分號(hào),最后一個(gè)元素后面沒(méi)有符號(hào),和其它TDL元素一樣,枚舉類型在結(jié)束后有一個(gè)分號(hào)。 2.1.10 TDL的基本數(shù)據(jù)類型 基本數(shù)據(jù)類型又成為預(yù)定義或內(nèi)建數(shù)據(jù)類型,它們?cè)赥ENA建模中用于定義對(duì)象的基本屬性的類型。TDL語(yǔ)言是對(duì)IDL語(yǔ)言的擴(kuò)展,TDL保留了部分IDL的基本數(shù)據(jù)類型作為自己的基本數(shù)據(jù)類型?;緮?shù)據(jù)類型是構(gòu)建本類型系統(tǒng)的基本信息單位,廣泛用于局部類、參數(shù)列表、向量、SDO公共狀態(tài)中,表2.2是TDL的基本數(shù)據(jù)類型。 表2.2 TDL的基本數(shù)據(jù)類型 short 有符
43、號(hào)整型 二字節(jié) unsigned short 無(wú)符號(hào)整型 二字節(jié) long 有符號(hào)整型 四字節(jié) unsigned long 無(wú)符號(hào)整型 四字節(jié) long long 有符號(hào)整型 八字節(jié) unsigned long long 無(wú)符號(hào)整型 八字節(jié) float 浮點(diǎn)數(shù) 四字節(jié) double 浮點(diǎn)數(shù) 八字節(jié) boolean 布爾型:TRUE和FALSE char ASCII字符 string 字符串 octet 位組 八字節(jié) void 操作(方法)的返回值為空 2.2 Eclipse RCP框架 RCP是基于Eclip
44、se項(xiàng)目推出的一個(gè)開(kāi)發(fā)富客戶端應(yīng)用框架,為開(kāi)發(fā)人員提供了一個(gè)功能強(qiáng)大的、快速的、可擴(kuò)展的應(yīng)用平臺(tái)。 2.2.1 Eclipse RCP概述 RCP是Rich Client Platform的縮寫,指富客戶端應(yīng)用平臺(tái)。RCP為終端用戶提供了基于本地操作系統(tǒng)的豐富的圖形用戶接口(GUI)使用體驗(yàn),可以很容易地實(shí)現(xiàn)剪切、復(fù)制、拖放等操作,也能高效進(jìn)行業(yè)務(wù)邏輯處理。 在開(kāi)發(fā)過(guò)程中,由于業(yè)務(wù)邏輯、數(shù)據(jù)處理、系統(tǒng)和用戶界面的高耦合性,系統(tǒng)的重構(gòu)工作越來(lái)越困難,系統(tǒng)的分發(fā)、部署和升級(jí)也非常麻煩,客戶端的一點(diǎn)改動(dòng),需要開(kāi)發(fā)人員在客戶機(jī)上逐一發(fā)布,因此人們提出瘦客戶端(thin client)來(lái)解決這一問(wèn)
45、題。 瘦客戶端基于“請(qǐng)求/響應(yīng)”模式,應(yīng)用程序統(tǒng)一部署在服務(wù)端,維護(hù)工作也只需在服務(wù)端進(jìn)行,極大減少了維護(hù)成本,客戶端更是簡(jiǎn)單到只要一個(gè)Web瀏覽器就可以了。但是隨之新問(wèn)題出現(xiàn)了:一是無(wú)法為用戶提供豐富的圖形使用體驗(yàn),可操作性差;二是應(yīng)用程序過(guò)于依賴Web服務(wù)器的性能,在數(shù)據(jù)爆炸的今天,無(wú)法滿足用戶大量高效率的交互性需求;三是基于“請(qǐng)求/響應(yīng)”模式的瘦客戶端應(yīng)用程序需要很高的網(wǎng)絡(luò)能力來(lái)保證交互性能,難以快速響應(yīng)大量業(yè)務(wù)邏輯的處理需求[18]。 瘦客戶端應(yīng)用程序無(wú)法滿足用戶要求,RCP又成為流行的開(kāi)發(fā)模式,它針對(duì)瘦客戶端“表現(xiàn)層邏輯居于服務(wù)器端”的弊端,將服務(wù)端和表現(xiàn)邏輯完全分離,表現(xiàn)邏輯完
46、全由客戶端負(fù)責(zé)[19]。增加了新內(nèi)涵的RCP不僅可以給用戶提供豐富的圖形用戶界面,還滿足用戶的智能更新、可擴(kuò)展、跨平臺(tái)等要求。 2.2.2 Eclipse RCP體系結(jié)構(gòu) RCP應(yīng)用程序?qū)嶋H上是插件和運(yùn)行時(shí)內(nèi)核的組合,它的體系結(jié)構(gòu)如圖2.1所示。 圖2.1 RCP的體系結(jié)構(gòu) 核心平臺(tái)工作原理:運(yùn)行Eclipse,運(yùn)行插件;OSGi是標(biāo)準(zhǔn)集束框架;JFace支持文件處理、緩沖、編輯;SWT是可移植構(gòu)件工具包[19]。 一個(gè)最小的RCP應(yīng)用程序只需要java基礎(chǔ)庫(kù)類,開(kāi)發(fā)者可以根據(jù)實(shí)際需要選取相應(yīng)插件,例如不使用JFace,或者不基于OSGi,只要能達(dá)到開(kāi)發(fā)要求即可。 2.2.3
47、Eclipse RCP的優(yōu)點(diǎn)和應(yīng)用 Eclipse RCP越來(lái)越受到用戶的青睞,因?yàn)樗哂幸韵聝?yōu)點(diǎn): 1. 組件化?;贓clipse的系統(tǒng)設(shè)計(jì)由插件構(gòu)成,可以通過(guò)擴(kuò)展點(diǎn)進(jìn)行配置。 2. 便利性。對(duì)各個(gè)平臺(tái)下的產(chǎn)品包裝提供有力支持,開(kāi)發(fā)的RCP可以在嵌入式設(shè)備上運(yùn)行。 3. 可擴(kuò)展。用戶可以搭建各種規(guī)模、類型和用途的應(yīng)用程序。 4. 本地感觀和使用體驗(yàn)。無(wú)論RCP在哪種操作系統(tǒng)下運(yùn)行,都可以保持與本機(jī)一致的外觀。 5. 脫機(jī)操作。RCP在本機(jī)運(yùn)行,不需要網(wǎng)絡(luò)連接,可以充分利用本機(jī)硬件的處理能力進(jìn)行大量數(shù)據(jù)處理。 Eclipse RCP在國(guó)內(nèi)得到了廣泛應(yīng)用,比如NASA的火星探測(cè)計(jì)
48、劃、IBM Workplace開(kāi)發(fā)平臺(tái)等,國(guó)內(nèi)電信、金融、醫(yī)療領(lǐng)域也越來(lái)越多的使用Eclipse RCP來(lái)開(kāi)發(fā)系統(tǒng)[20][21]。 2.3 本章小結(jié) 本章介紹了在后續(xù)開(kāi)發(fā)中涉及到的相關(guān)知識(shí)和技術(shù)——TENA定義語(yǔ)言TDL的基本數(shù)據(jù)類型和元素以及項(xiàng)目開(kāi)發(fā)框架Eclipse RCP。 12 浙江大學(xué)碩士學(xué)位論文 第3章系統(tǒng)總體設(shè)計(jì) 第3章 系統(tǒng)總體設(shè)計(jì) 在進(jìn)行設(shè)計(jì)開(kāi)發(fā)工作之前,首先要對(duì)用戶提出的需求進(jìn)行梳理分析,確定系統(tǒng)要實(shí)現(xiàn)的功能,然后對(duì)系統(tǒng)進(jìn)行模塊化劃分,將系統(tǒng)功能分成各個(gè)功能模塊,確定各個(gè)功能模塊要實(shí)現(xiàn)的功能,分模塊進(jìn)行開(kāi)發(fā),最后再將各個(gè)功能模塊集成為一體化模型構(gòu)建工具,
49、這是項(xiàng)目的工作思路,下面描述系統(tǒng)的總體分析設(shè)計(jì)。 3.1 總體設(shè)計(jì) 基于TDL的一體化模型構(gòu)建工具(VIMT)以Eclipse核心框架為基礎(chǔ),采用Eclipse RCP技術(shù)框架,結(jié)合開(kāi)源軟件作為底層支持平臺(tái),滿足客戶文本編輯、可視化建模、多格式模型文件轉(zhuǎn)換、TDL編譯、TDL到C++框架源碼的映射、框架代碼編譯、組件的單元與集成測(cè)試、測(cè)試框架代碼自動(dòng)生成、一體化集成等需求,實(shí)現(xiàn)可視化、一體化操作,性能穩(wěn)定、操作簡(jiǎn)單、界面友好。 基于TDL的一體化模型構(gòu)建工具的軟件總體框架如圖3.1所示: 圖3.1 軟件總體框架圖 3.2 功能模塊劃分 一體化模型構(gòu)建工具可以劃分了五個(gè)功能模塊:
50、文本編輯模塊、可視化建模模塊、可視化框架代碼生成與編譯模塊、對(duì)象模型測(cè)試驗(yàn)證模塊和一體化集成平臺(tái),各模塊之間的關(guān)系如圖3.1所示。 3.2.1 文本編輯模塊 文本編輯模塊負(fù)責(zé)對(duì)TDL文件進(jìn)行編輯,包含以下五個(gè)功能:一是:文件的I/O操作,即在一體化模型構(gòu)建工具中打開(kāi)、關(guān)閉、修改、存儲(chǔ)TDL文件。二是語(yǔ)法高亮顯示,即對(duì)代碼中的關(guān)鍵字進(jìn)行辨認(rèn),用不同的顏色和字體來(lái)顯示,比如:以高亮顯示變量名,用灰色顯示注釋,這一功能增加了代碼的可讀性。三是格式美化,修正代碼的錯(cuò)誤縮進(jìn),將代碼格式化顯示,形成統(tǒng)一的代碼風(fēng)格,增加代碼的閱讀效率。四是自動(dòng)補(bǔ)充,在鍵入TDL代碼時(shí),對(duì)后續(xù)代碼自動(dòng)提示。五是錯(cuò)誤提示,
51、顯示代碼錯(cuò)誤信息。 3.2.2 可視化建模模塊 可視化建模模塊,提供圖像化建模方式,支持TDL元素可視化表示和TDL可視化生成向?qū)?,支持TDL、UML、圖形化格式的多格式模型文件以及相關(guān)的導(dǎo)入導(dǎo)出,支持TDL到UML、UML到TDL的雙向映射,也支持模型文件的布局優(yōu)化、元素顏色區(qū)分和層次化展示,圖3.2是可視化建模模塊的子模塊。 圖3.2 可視化建模模塊的子模塊劃分 3.2.3 可視化框架代碼生成與編譯模塊 框架代碼生成與編譯模塊主要有兩部分工作: 第一部分是完成TDL文件的編譯,并生成對(duì)象模型框架代碼和對(duì)象模型實(shí)現(xiàn)接口框架代碼,這一過(guò)程通過(guò)調(diào)用客戶提供的TDL編譯器來(lái)實(shí)現(xiàn),編
52、譯生成.h文件和.CPP文件,還要對(duì)生成的框架代碼進(jìn)行查看編輯,提供編譯錯(cuò)誤實(shí)時(shí)顯示和錯(cuò)誤定位功能。 第二部分是針對(duì)上一部分編譯生成的框架代碼,調(diào)用VC編譯器進(jìn)行編譯,生成對(duì)象模型框架組件(DLL)。 3.2.4 對(duì)象模型測(cè)試驗(yàn)證模塊 對(duì)象模型測(cè)試驗(yàn)證模塊,主要完成對(duì)生成的對(duì)象模型組件進(jìn)行測(cè)試驗(yàn)證,實(shí)現(xiàn)測(cè)試代碼自動(dòng)生成、日志代碼生成、組件單元測(cè)試、組件集成測(cè)試等功能。測(cè)試代碼自動(dòng)生成通過(guò)代碼模版實(shí)現(xiàn);日志代碼生成是在Class、Local Class、Message定義的方法中注入日志代碼,記錄方法執(zhí)行軌跡;組件單元測(cè)試通過(guò)CppUnit單元測(cè)試框架完成完成,需要將CppUnit集成到一
53、體化模型構(gòu)建工具中。 3.2.5 一體化集成平臺(tái) 利用Eclipse RCP框架來(lái)開(kāi)發(fā),采用模塊化集成方式和eclipse插件機(jī)制,構(gòu)建本系統(tǒng)的一體化集成平臺(tái)(VIMT),上述四個(gè)功能模塊都要集成到一體化集成平臺(tái)上,形成一體化模型構(gòu)建工具軟件。 3.3 本章小結(jié) 本章介紹了系統(tǒng)的總體設(shè)計(jì),根據(jù)客戶需求完成的系統(tǒng)總體設(shè)計(jì),將系統(tǒng)劃分為五個(gè)模塊:文本編輯、可視化建模、框架代碼生成與編譯、對(duì)象模型測(cè)試和一體化平臺(tái)。 16 浙江大學(xué)碩士學(xué)位論文 第4章 TDL文本編輯模塊的研究 第4章 TDL文本編輯模塊的研究 對(duì)系統(tǒng)進(jìn)行了總體設(shè)計(jì)后,首先開(kāi)始研究TDL文本編輯模塊,該模塊是TD
54、L一體化模型構(gòu)建系統(tǒng)的基礎(chǔ),用于讀取編輯TDL文件,客戶要求編輯器編輯TDL文件時(shí)要像在Eclipse中編輯JAVA文件一樣快捷方便,因此本章先在Eclipse編輯器的基礎(chǔ)上研究TDL文本編輯模塊的工作原理,然后描述生成TDL編輯器的方法。 4.1 功能介紹 如圖4.1所示,TDL文本編輯模塊包含五個(gè)子功能:文本操作(打開(kāi)、關(guān)閉、修改、存儲(chǔ))、語(yǔ)法高亮顯示、語(yǔ)法錯(cuò)誤提示、格式美化、文本快捷提示和自動(dòng)補(bǔ)充。 圖4.1 文本編輯模塊子功能劃分 4.2 文本編輯模塊的工作原理 文本編輯模塊由Eclipse RCP開(kāi)發(fā)平臺(tái)中的編輯器來(lái)實(shí)現(xiàn),Eclipse文本框架是由幾個(gè)小插件來(lái)實(shí)現(xiàn)的,它
55、們實(shí)現(xiàn)了模塊化和封裝功能,這樣可以允許文本模型重用而不依賴于文本的顯示。Eclipse文本編輯功能由org.eclipse.ui.editor插件來(lái)提供,它是Eclipse IDE產(chǎn)品,不是RCP的一部分。但由于模塊化設(shè)計(jì),文本編輯框架中的許多塊也可以在RCP程序中使用。 4.2.1 TDL的I/O操作 VIMT編輯器的I/O操作流程:打開(kāi)TDL文件,鍵入和修改TDL源代碼,編輯完成后,對(duì)其進(jìn)行保存,然后關(guān)閉編輯器。 圖4.2是Eclipse平臺(tái)編輯器的框架結(jié)構(gòu): 圖4.2 Eclipse編輯器的框架結(jié)構(gòu) Eclipse平臺(tái)編輯器編輯的前提是對(duì)目標(biāo)文檔的切割,在編輯器打開(kāi)文檔時(shí)就
56、調(diào)用分割器對(duì)文檔進(jìn)行切割,分割信息保存在Editor中,IDocument類是很重要的類,分割器的設(shè)置就是通過(guò)IDocument類中createDocument()方法進(jìn)行的,并且編輯的內(nèi)容由IDocument來(lái)封裝,它是文本遍歷和定位的基礎(chǔ)。 我們將在此基礎(chǔ)上實(shí)現(xiàn)VIMT中的TDL編輯器,Eclipse平臺(tái)編輯器的文本編輯功能由AbstractTextEditor提供,IDocumentProVIMTr實(shí)現(xiàn)讀取和保存文件功能。在VIMT編輯器中,VDLDocumentProVIMTr讀取、保存文件,當(dāng)編輯器讀取TDL文件時(shí),IEditorInput描述文件并將信息傳遞給VDLDocumen
57、tProVIMTr,編輯器處理TDL代碼的功能也委托給VDLDocumentProVIMTr,它包含以下幾個(gè)主要方法: createDocument:打開(kāi)硬盤上的TDL文件,創(chuàng)建包含TDL文件內(nèi)容的VDLDocument對(duì)象。 doSaveDocument:將TDL文件保存在磁盤上。 isModifiable:決定用戶是否可以編輯文檔。 isReadOnly:決定文檔是否能夠被保存。 4.2.2 語(yǔ)法高亮顯示 TDL代碼的語(yǔ)法高亮顯示功能是在TDL文本劃分基礎(chǔ)上實(shí)現(xiàn)的,讀取的TDL文件封裝在VDLDocument類中,然后進(jìn)行TDL源碼的遍歷和定位。 它的工作原理是:首先按照TD
58、L語(yǔ)法規(guī)則形成TDL掃描器的掃描規(guī)則,當(dāng)編輯器打開(kāi)一個(gè)TDL文件時(shí),TDL編輯器會(huì)按照定義的TDL掃描器掃描規(guī)則對(duì)TDL文本進(jìn)行完全掃描,并且對(duì)掃描信息進(jìn)行分割形成不同內(nèi)容完全獨(dú)立的文本塊。在顯示TDL文件時(shí),調(diào)用掃描器中的evaluate方法,返回IToken對(duì)象,然后對(duì)不同IToken對(duì)象按不同的顏色顯示其內(nèi)容,比如關(guān)鍵字顯示顏色為藍(lán)色,字符串顯示為綠色,標(biāo)識(shí)符顯示為黑色。這些顯示顏色可以在程序中進(jìn)行設(shè)置。語(yǔ)法高亮功能的實(shí)現(xiàn)過(guò)程如圖4.3所示: 圖4.3 TDL語(yǔ)法高亮實(shí)現(xiàn)過(guò)程 4.2.3 語(yǔ)法錯(cuò)誤提示 語(yǔ)法錯(cuò)誤提示功能按照TDL語(yǔ)法規(guī)則驗(yàn)證TDL文件,對(duì)不符合語(yǔ)法規(guī)則的地方進(jìn)行
59、標(biāo)識(shí),提示用戶編寫TDL代碼過(guò)程中的錯(cuò)誤。 根據(jù)TDL的語(yǔ)法規(guī)則,解析文檔的時(shí)候?qū)﹀e(cuò)誤進(jìn)行標(biāo)識(shí),用哈希表收集和定位所有的TDL錯(cuò)誤,然后進(jìn)行TDL驗(yàn)證和標(biāo)記,這個(gè)工作在TDL編輯時(shí)會(huì)實(shí)時(shí)進(jìn)行,解析TDL文件的時(shí)候如果發(fā)現(xiàn)錯(cuò)誤調(diào)用錯(cuò)誤處理方法在錯(cuò)誤的位置進(jìn)行標(biāo)識(shí),顯示出警告或者錯(cuò)誤標(biāo)記。 4.2.4 格式美化 格式美化就是按照特定規(guī)則對(duì)TDL文本重新排版,形成統(tǒng)一格式,使代碼更具有可讀性,顯示更為美觀。 在實(shí)現(xiàn)格式化之前要選定格式化策略,不同的格式化策略體現(xiàn)不同的編程風(fēng)格??s進(jìn)策略分為使用制表符(Tab)策略和空格(Space)策略,默認(rèn)使用制表符策略;花括號(hào)換行策略默認(rèn)使用緊湊格式的換
60、行策略,在定義類時(shí),花括號(hào)總是緊跟類名,不做換行處理。這些策略可以在系統(tǒng)選項(xiàng)中進(jìn)行設(shè)置。 VIMT編輯器根據(jù)TDL語(yǔ)法規(guī)則解析整個(gè)TDL文件得到語(yǔ)法樹,遍歷語(yǔ)法樹,將每一個(gè)元素保存到字符串中,每一行的縮進(jìn)以及空格根據(jù)已有的格式化策略對(duì)文件進(jìn)行排列,最后將該字符串重新輸出到編輯器中,實(shí)現(xiàn)內(nèi)容格式美化功能。 4.2.5 快捷提示和自動(dòng)補(bǔ)充 當(dāng)用戶編輯TDL文本時(shí),根據(jù)已經(jīng)輸入的部分信息可以給出后續(xù)內(nèi)容的多種提示,根據(jù)用戶的選擇,自動(dòng)補(bǔ)充完整。 內(nèi)容提示包含兩種:一是關(guān)鍵字的提示和補(bǔ)充,二是對(duì)導(dǎo)入TDL文件的提示和補(bǔ)充。 VIMT編輯器快捷提示和自動(dòng)補(bǔ)充工作流程如圖4.4所示,在編輯器中新
61、建一個(gè)內(nèi)容輔助類,該內(nèi)容輔助類監(jiān)聽(tīng)TDL文本代碼的變化。當(dāng)監(jiān)聽(tīng)到TDL文本內(nèi)容發(fā)生變化時(shí),內(nèi)容輔助類首先獲取最后鍵入的Token,在預(yù)存的關(guān)鍵字列表中進(jìn)行字符串匹配,彈出匹配的字符串列表框供用戶選擇,用戶選擇需要的關(guān)鍵字,內(nèi)容輔助類補(bǔ)全該關(guān)鍵字。 當(dāng)檢測(cè)到匹配的字符串為import時(shí),VIMT文本編輯器讀取TDL庫(kù)(目錄)文件列表,將庫(kù)中所有的TDL文件列出來(lái),用戶選擇要導(dǎo)入的TDL文件,補(bǔ)全import導(dǎo)入。隨著用戶輸入更多的字符,列表中匹配的數(shù)目也將減少,用戶能夠更快的選擇需要的導(dǎo)入文件。 圖4.4 VIMT快捷提示和自動(dòng)補(bǔ)充工作流程 4.3 文本編輯器的生成方法 了解了文本
62、編輯器的工作原理后,開(kāi)始著手實(shí)現(xiàn)這一模塊。如果完全靠編碼實(shí)現(xiàn),工作及其繁雜而且很難短期完成,所有必須另辟蹊徑利用其它工具輔助完成。很幸運(yùn)我找到了這樣一個(gè)開(kāi)源工具——XText,它能幫助實(shí)現(xiàn)TDL語(yǔ)言的文本編輯器,我需要做的就是研究TDL語(yǔ)言的語(yǔ)法定義。 4.3.1 XText介紹 XText是一種實(shí)現(xiàn)編程語(yǔ)言的開(kāi)源語(yǔ)言開(kāi)發(fā)框架,它可以為用戶建立一種領(lǐng)域特定語(yǔ)言(DSL)或者通用編程語(yǔ)言(GPL),用戶只需要事先定義好語(yǔ)言的語(yǔ)法規(guī)則,同時(shí)還可以創(chuàng)建一個(gè)基于該語(yǔ)言的Eclipse精致開(kāi)發(fā)環(huán)境,比如具有語(yǔ)法高亮、格式美化、代碼提示、自動(dòng)補(bǔ)充等高級(jí)功能的文本編輯器[22]。編輯自定義語(yǔ)言和編輯ja
63、va代碼時(shí)效果一樣,只是語(yǔ)法、關(guān)鍵字和結(jié)構(gòu)不同。XText在許多領(lǐng)域有著廣泛應(yīng)用。 4.3.2 XText的工作原理 XText提供一組領(lǐng)域特定語(yǔ)言和模型的編程接口,用于描述自定義語(yǔ)言的語(yǔ)法規(guī)則,然后在java虛擬機(jī)(JVM)上實(shí)現(xiàn)自定義語(yǔ)言。XText生成語(yǔ)言的編譯組件——語(yǔ)法分析器、代碼格式化程序、編譯檢查和靜態(tài)分析程序以及代碼發(fā)生器和解釋器等,它們可以被移植到任何java環(huán)境中,這些組件與Eclipse模型框架結(jié)合,為自定義語(yǔ)言提供了基礎(chǔ)開(kāi)發(fā)環(huán)境。 4.3.3 領(lǐng)域特定語(yǔ)言 DSL是應(yīng)用與某一特定領(lǐng)域的小型計(jì)算機(jī)編程語(yǔ)言,比如TENA定義的TDL語(yǔ)言,它們專注于解決某個(gè)具體問(wèn)題,
64、功能強(qiáng)大。與之相對(duì)應(yīng)的是通用語(yǔ)言(GPL:General purpose Language),比如java開(kāi)發(fā)語(yǔ)言、C/C++語(yǔ)言,它們應(yīng)用的范圍更為廣泛,可以解決許多問(wèn)題,但不一定是最好的方式。 4.3.4 TDL的語(yǔ)法定義 下面采用BNF范式和EBNF范式來(lái)描述TDL語(yǔ)言。 4.3.4.1 BNF范式和EBNF范式 BNF范式即巴科斯范式(Backus-Naur Form),是一種用于描述編程語(yǔ)言語(yǔ)法的形式化符號(hào)。BNF范式定義的語(yǔ)言是一個(gè)字符串集合,它們的書寫規(guī)則如下: symbol::=alternative1|alternative2… 它的意思是左邊的符號(hào)(symbol
65、)被右邊的兩個(gè)可選符號(hào)中的任意一個(gè)替代,然后以遞歸的方式描述右邊的符號(hào),直到右邊只剩下終結(jié)符為止,終結(jié)符是一種沒(méi)有書寫規(guī)則的符號(hào),它們通常被放在引號(hào)中,是語(yǔ)言字符串集合中最基本的組成部分[23]。 BNF范式的操作符非常簡(jiǎn)單,::=表示用右邊的符號(hào)替換左邊的符號(hào),|用來(lái)分隔可替換符號(hào),終止符可以直接用在語(yǔ)言中,不用替換。 下面是一個(gè)BNF范式的實(shí)例: A ::= - B | B B ::= C | C . C C ::= D | D C D ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 這個(gè)BNF范式描述的是所有數(shù)字,包括小數(shù)和負(fù)數(shù),D表示單
66、個(gè)數(shù)字,C表示一個(gè)數(shù)字串,B表示一個(gè)整數(shù)數(shù)字串或者一個(gè)小數(shù)數(shù)字串。 BNF范式非常精確,用它定義語(yǔ)言不會(huì)產(chǎn)生歧義,并且它是數(shù)學(xué)產(chǎn)物,可以被計(jì)算機(jī)理解,因此它廣泛用于程序設(shè)計(jì)語(yǔ)言的語(yǔ)法表示中。 BNF雖然功能強(qiáng)大,但是描述語(yǔ)言時(shí)遞歸過(guò)程過(guò)于復(fù)雜,使用起來(lái)不方便,我們通過(guò)擴(kuò)展巴科斯范式(EBNF)來(lái)解決這個(gè)問(wèn)題,EBNF引入了以下操作符: ?:表示操作符左邊的符號(hào)是可選項(xiàng)。 *:表示操作符左邊的符號(hào)可以不出現(xiàn)或者重復(fù)多次。 +:表示操作符左邊的符號(hào)可以重復(fù)一次或者多次。 下面用EBNF范式重新描述所有數(shù)字: A::= -? D+ (. D+)? D::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 由此可見(jiàn),EBNF范式描述語(yǔ)言時(shí)比BNF范式更加方便和簡(jiǎn)潔,所以在定義計(jì)算機(jī)編程語(yǔ)言時(shí)一般采用EBNF范式,語(yǔ)言的可讀性更強(qiáng)、書寫更簡(jiǎn)便,EBNF的操作符如表4.1所示: 表4.1 EBNF的操作符 符號(hào) 說(shuō)明 ::= 操作符左邊的符號(hào)被右邊
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《晏子使楚》優(yōu)秀課件 (3)
- 科室醫(yī)院年終總結(jié)課件
- 常用邏輯用語(yǔ)章末總結(jié)課件(人教A版選修1-1)免
- 新版PEP四年級(jí)英語(yǔ)上冊(cè)Unit3-My-Friends-B-Let’s-learn完美版-PPT
- 金融科技機(jī)遇
- 抗菌藥物合理使用專家講座
- 阿奇霉素在臨床中的應(yīng)用專家講座
- 納米抗菌蠶絲被介紹
- 男性盆部和會(huì)陰斷層解剖研究
- 部編選擇性必修二經(jīng)濟(jì)與社會(huì)生活-第九課世紀(jì)以來(lái)人類的經(jīng)濟(jì)與生活教學(xué)課件
- 春七年級(jí)數(shù)學(xué)下冊(cè) 82 整式乘法單項(xiàng)式與單項(xiàng)式相乘課件4 (新版)滬科版
- 部編人教版語(yǔ)文七年級(jí)下冊(cè)7.土地的誓言課件
- 手足口病
- 正壓通氣裝置課件
- 課件】食品分析與檢驗(yàn)技術(shù)第二章