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