亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種面向粒的編程集成開發(fā)平臺的制作方法

文檔序號:6602359閱讀:166來源:國知局
專利名稱:一種面向粒的編程集成開發(fā)平臺的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機(jī)應(yīng)用領(lǐng)域,涉及一種編程集成開發(fā)平臺,尤其是一種面向粒的 編程集成開發(fā)平臺。
背景技術(shù)
過程語言如FortraruPascal和C等可以用來定義直線執(zhí)行的程序,程序開始于某一點(diǎn),一步一步執(zhí)行至終點(diǎn)。這種模式中,設(shè)計理念體現(xiàn)在相繼執(zhí)行的程序單元中。直線的 模塊劃分體現(xiàn)在函數(shù)調(diào)用中,函數(shù)調(diào)用允許程序執(zhí)行從主程序跳轉(zhuǎn)到子程序,又跳回主程 序。子程序的使用使程序更有效的實(shí)現(xiàn)一般的程序。但是,隨著程序規(guī)模的不斷增大,程序 越來越復(fù)雜,過程式語言也變得很復(fù)雜并且很難維護(hù)。面向?qū)ο蠓椒ǖ某霈F(xiàn)把系統(tǒng)狀態(tài)變成一些單獨(dú)的對象,在這些對象中可以私有化 系統(tǒng)狀態(tài),并且通過公有的函數(shù)控制這些狀態(tài),程序的功能分解為各個功能模塊。高級語言 通過結(jié)構(gòu)化抽象等方法模塊化程序,面向?qū)ο笳Z言通過對象和類等概念,這又進(jìn)一步通過 集合一個實(shí)體的行為和隱藏其內(nèi)部實(shí)現(xiàn)提高模塊的內(nèi)聚、降低模塊間的藕合。面向?qū)ο笙鄬τ趥鹘y(tǒng)設(shè)計語言和軟件設(shè)計方法有以下優(yōu)越性1)符合人類認(rèn)識 和分析事物的思維習(xí)慣;2)代碼是可高度重用的,可維護(hù)的;3)實(shí)現(xiàn)了功能模塊的組件化; 4)代碼是共享、可繼承的,減少了軟件設(shè)計中的代碼量等。但是,面向?qū)ο缶幊?OOP)也不可能是完美無缺的,近些年出現(xiàn)了很多針對OOP的 不足提出新的編程思想和相應(yīng)的實(shí)現(xiàn)。在面向?qū)ο笾?,?dāng)一些因素的考慮可能會影響了一些系統(tǒng)的模塊(如功能模塊) 的實(shí)現(xiàn),極易出現(xiàn)不適合現(xiàn)象。這種不適合現(xiàn)象不是系統(tǒng)設(shè)計的不足導(dǎo)致的,而是復(fù)雜系統(tǒng) 中的一個自然地和不可避免的現(xiàn)象。例如,程序的運(yùn)行與其支撐環(huán)境是密不可分的。計算機(jī) 程序是給計算機(jī)提供的指令,程序產(chǎn)生動作,計算機(jī)負(fù)責(zé)指令執(zhí)行。因此,一個有意義的程 序除了代碼之外還默認(rèn)隱含在什么計算機(jī)上運(yùn)行。程序一旦運(yùn)行在其他機(jī)器上,也許會產(chǎn) 生預(yù)料不到的結(jié)果甚至不能夠正常運(yùn)行下去,由此引出了程序與機(jī)器之間適合性問題,這 些考慮的因素就是“上下文變量”。程序所面臨的上下文常常改變,比如程序所面臨的輸入、 系統(tǒng)可用內(nèi)存、并行系統(tǒng)中的處理機(jī)個數(shù)等。從某種意義上講,傳統(tǒng)編程機(jī)制隱式地蘊(yùn)含了 程序與上下文之間的關(guān)系,不過其潛在地假定程序與上下文之間的關(guān)系是固定不變的。然 而,易變的上下文使得編程時假定的程序與上下文之間的匹配關(guān)系常常被破壞。假設(shè)一個 類擁有無返回類型方法m。對于不同的情況,方法m可能需要進(jìn)行不同的行為演化來適應(yīng) 新環(huán)境。傳統(tǒng)的編程模型可能試圖使用繼承關(guān)系,通過定義該類的子類來對行為的多個候 選實(shí)現(xiàn)進(jìn)行分組,解決這個問題。然而,雖然繼承關(guān)系可通過在子類中重載基類方法的方 式,實(shí)現(xiàn)該方法的行為版本,但它不足以用來為某一個對象的某個方法編寫多個候選行為 實(shí)現(xiàn),換句話說,靜態(tài)繼承關(guān)系不能支持對象行為的動態(tài)變化。當(dāng)然也可考慮通過使用不同 的方法名稱來代表每個實(shí)現(xiàn),或者通過方法的不同參數(shù)來指示哪個實(shí)現(xiàn)被執(zhí)行。但是這要 求客戶端,也就是將要調(diào)用這個方法的對象,對實(shí)現(xiàn)的細(xì)節(jié)了如指掌。這樣就破壞了類的封裝性。GOP (Granule-Oriented Programming)思想就是在觀察程序不適合性現(xiàn)象的基礎(chǔ) 上提出的。GOP是使用粒和上下文擴(kuò)展了面向?qū)ο缶幊陶Z言。這樣的構(gòu)造是獨(dú)立于編程模 塊的,可以將對上下文的考慮外部化和限定化,而不是將它們展開在重要的編程模塊中。當(dāng) 系統(tǒng)動態(tài)變化,上下文也是在運(yùn)行中隨機(jī)的變化?,F(xiàn)階段的監(jiān)控系統(tǒng)不能處理好對適合當(dāng) 前上下文需要實(shí)行功能模塊的替換。而粒和上下文的結(jié)合,很好解決了適合性的問題。目前的各種編程語言都沒有關(guān)注程序適合性問題,GOP面向粒的程序設(shè)計中,用粒 來指代那些適合性可度量的、可以被動態(tài)替換的構(gòu)成程序的單位。如果程序出現(xiàn)了不適合 性,這些不適合性被局部化到不適合的粒上面,從而用更適合的粒進(jìn)行替換,以達(dá)到改善程 序適合性的目標(biāo)。面向粒的編程集成開發(fā)平臺提供了對GOP語言的編碼、編譯、調(diào)試功能;將程序的 信息由獨(dú)立的類-粒層次結(jié)構(gòu)構(gòu)造器進(jìn)行管理,依靠面向粒的編程集成開發(fā)平臺我們可以 很容易定義粒,并將類代碼與粒代碼透明的融合,同時類-粒之間的自動定位功能和豐富 的信息顯示功能也使得代碼編輯、故障確定和新粒的編寫更為方便。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種面向粒的編程集成開發(fā) 平臺,該集成開發(fā)平臺提供了對GOP語言的編碼、編譯、調(diào)試功能;將程序的信息由獨(dú)立的 類-粒層次結(jié)構(gòu)構(gòu)造器進(jìn)行管理,依靠面向粒的編程集成開發(fā)平臺我們可以很容易定義 粒,并將類代碼與粒代碼透明地融合,同時類-粒之間的自動定位功能和豐富的信息顯示 功能也使得代碼編輯、故障確定和新粒的編寫更為方便。本發(fā)明的目的是通過以下技術(shù)方案來解決的這種面向粒的編程集成開發(fā)平臺分 為編輯器、編譯器、虛擬機(jī)、調(diào)試器和類-粒層次結(jié)構(gòu)構(gòu)造器;所述編輯器、編譯器和調(diào)試器 分別與類-粒層次結(jié)構(gòu)構(gòu)造器相互通信,所述調(diào)試器還分別與編輯器和虛擬機(jī)連接;(1)編 輯器所述的編輯器由類編輯模塊、粒編輯模塊、類信息模塊、粒信息模塊、關(guān)系信息模塊和 窗口切換模塊組成;類編輯模塊包括一個類編輯窗口,粒編輯模塊包括一個粒編輯窗口,類 信息模塊包括一個類信息窗口,粒信息模塊包括一個粒信息窗口 ;所述類編輯模塊用于修 改編輯對象類代碼;所述粒編輯模塊用于修改編輯對象粒代碼;類信息模塊顯示類信息, 所述類信息包括類名和類所在的文件;粒信息模塊顯示粒信息,所述粒信息包括粒名和粒 所在的文件;所述關(guān)系信息模塊包括樹型顯示模塊、代碼顯示模塊和圖形顯示模塊;樹型 顯示模塊包括一個關(guān)系信息樹型顯示窗口 ;代碼顯示模塊包括一個關(guān)系信息代碼顯示窗 口 ;圖形顯示模塊包括一個關(guān)系信息圖形顯示窗口 ;樹型顯示模塊顯示類粒關(guān)系信息和層 次結(jié)構(gòu)構(gòu)成的樹型結(jié)構(gòu)圖;代碼顯示模塊顯示所有類和粒的具體的代碼;圖形顯示模塊用 圖形直觀顯示粒和它所依附的類之間的關(guān)系;所述窗口切換模塊分別與類編輯模塊、粒編 輯模塊、類信息模塊、粒信息模塊、關(guān)系信息模塊連接,實(shí)現(xiàn)類編輯窗口、粒編輯窗口、粒信 息窗口、粒信息窗口、關(guān)系信息樹型顯示窗口、關(guān)系信息代碼顯示窗口和關(guān)系信息圖形顯示 窗口的切換;所述類是OOP標(biāo)準(zhǔn)類;所述粒是GOP領(lǐng)域的基本模塊,粒由粒名、類名、粒體 和影子類構(gòu)成,其中類名用來表明該粒所依附的類,將該類稱為粒的根類,粒體用來指定粒 的期望環(huán)境,粒體可以定義自身的成員并且粒體中必須包含一個適合性判斷方法,適合性判斷方法返回真或假;所述影子類是對種子程序中與該影子類相同名字的類的改進(jìn),是在不同上下文下類行為的不同體現(xiàn),并且只是在相應(yīng)粒體適合性判斷方法為真后才有效;(2) 編譯器GOP的編譯器分為前端模塊和后端模塊,前端模塊又包括詞法分析器、語法分析器 和靜態(tài)語義分析器,靜態(tài)語義分析器又具體包括名字分析模塊、類型檢查模塊、訪問控制模 塊、確定賦值模塊;詞法分析器根據(jù)GOP的構(gòu)詞規(guī)則識別程序中的單詞;語法分析器對滿足 GOP語法規(guī)則的程序構(gòu)造一棵抽象語法樹AST ;靜態(tài)語義分析器對抽象語法樹上的節(jié)點(diǎn)以 面向?qū)ο髮哟谓Y(jié)構(gòu)建模,在建模的結(jié)果之上,通過屬性文法的計算過程按照GOP的語義規(guī) 則完成語義的分析過程;后端模塊生成程序的類字節(jié)碼文件、粒體字節(jié)碼文件、影子類字節(jié) 碼文件、種子程序_個體程序配置文件以及該個體程序?qū)?yīng)的粒樹;(3)虛擬機(jī)GOP的虛擬 機(jī)系統(tǒng)包括裝載子系統(tǒng)、運(yùn)行數(shù)據(jù)區(qū)和執(zhí)行引擎;裝載子系統(tǒng)包含類裝載器、粒裝載器、影 子類裝載器和種子程序_個體程序配置文件裝載器;運(yùn)行數(shù)據(jù)區(qū)包括方法區(qū)、堆、棧、PC寄 存器、本地方法棧、上下文變量存儲區(qū)和種子程序_個體程序存儲區(qū);執(zhí)行引擎分為??缍?判斷模塊、適合性監(jiān)測模塊、粒替換模塊、上下文管理模塊和粒庫管理模塊;(4)調(diào)試器所 述調(diào)試器包括跟蹤模塊、粒指示模塊、調(diào)試器窗口顯示模塊和個體程序演化模塊;跟蹤模塊 用于跟蹤虛擬機(jī)運(yùn)行的源代碼;粒指示模塊用于顯示跟蹤模塊所跟蹤的方法所屬的粒;調(diào) 試器窗口顯示模塊顯示虛擬機(jī)當(dāng)前運(yùn)行的數(shù)據(jù)域和方法信息;個體程序演化模塊可以顯示 運(yùn)行出錯前的個體程序和這個個體程序的上下文信息;同時可以顯示相似粒替換前后的個 體程序和這個個體程序的上下文信息;(5)類-粒層次結(jié)構(gòu)構(gòu)造器所述的類_粒層次結(jié)構(gòu) 構(gòu)造器包括類信息處理模塊、粒信息處理模塊和關(guān)系信息處理模塊;所述類信息處理模塊 抽取GOP源代碼中所有類信息及其層次結(jié)構(gòu),并將類信息及其層次結(jié)構(gòu)提供給其他模塊; 所述粒信息處理模塊抽取GOP源代碼中所有粒信息及其層次結(jié)構(gòu),并將粒信息及其層次結(jié) 構(gòu)提供給其他模塊;所述關(guān)系信息處理模塊抽取GOP源代碼中類和粒之間的關(guān)系信息,并 將類和粒之間的關(guān)系信息提供給其他模塊。上述編輯器的類編輯模塊和粒編輯模塊分別與類_粒層次結(jié)構(gòu)構(gòu)造器的類信息 處理模塊、粒信息處理模塊和關(guān)系信息處理模塊連接,類-粒層次結(jié)構(gòu)構(gòu)造器從類編輯模 塊和粒編輯模塊獲取GOP源代碼,所述類信息處理模塊抽取GOP源代碼中所有類信息及其 層次結(jié)構(gòu);所述粒信息處理模塊抽取GOP源代碼中所有粒信息及其層次結(jié)構(gòu);所述關(guān)系信 息處理模塊抽取GOP源代碼中類和粒之間的關(guān)系信息。上述的編輯器的類信息模塊與類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊連接,編 輯器的類信息模塊從類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊獲取所有類信息及其層次 結(jié)構(gòu)。W014]上述的編輯器的粒信息模塊與類-粒層次結(jié)構(gòu)構(gòu)造器的粒信息處理模塊連 接,編輯器的粒信息模塊從類_粒層次結(jié)構(gòu)構(gòu)造器的粒信息處理模塊獲取所有粒信息及其 層次結(jié)構(gòu)。上述的編輯器的關(guān)系信息模塊與類_粒層次結(jié)構(gòu)構(gòu)造器的關(guān)系信息處理模塊連 接,編輯器的關(guān)系信息顯示模塊從類-粒層次結(jié)構(gòu)構(gòu)造器的關(guān)系信息處理模塊獲取類和粒 之間的關(guān)系信息。上述的編輯器的窗口切換模塊與類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊、粒信 息處理模塊和關(guān)系信息處理模塊連接,實(shí)現(xiàn)窗口切換時被切換前后窗口內(nèi)容的信息同步。上述的調(diào)試器的跟蹤模塊、粒指示模塊和調(diào)試器窗口顯示模塊分別與類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊、粒信息處理模塊連接;從粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊獲取所有類信息及其層次結(jié)構(gòu),從粒層次結(jié)構(gòu)構(gòu)造器的粒信息處理模塊獲取所有粒信 息及其層次結(jié)構(gòu),為調(diào)試工作提供指示信息。上述的調(diào)試器的跟蹤模塊、粒指示模塊、調(diào)試器窗口顯示模塊和個體程序演化模 塊分別與編輯器和虛擬機(jī)連接;調(diào)試器啟動編輯器實(shí)現(xiàn)對代碼的修改,調(diào)試器從虛擬機(jī)獲 取當(dāng)前運(yùn)行的狀態(tài)信息。本發(fā)明具有以下有益效果1、面向粒的編程集成開發(fā)平臺提供了對GOP語言的編 碼、編譯、調(diào)試功能。由于GOP引入了粒這種新的程序構(gòu)成基本單元,同時粒中又引入了上 下文這個新元素,定義了粒體和影子類這些新結(jié)構(gòu),因而GOP程序的結(jié)構(gòu)更為復(fù)雜,相互關(guān) 系信息更多。面向粒的編程集成開發(fā)平臺將程序的信息由獨(dú)立的類-粒層次結(jié)構(gòu)構(gòu)造器進(jìn) 行管理,使得程序信息的管理和使用更為容易,為編輯和調(diào)試階段提供更為豐富的輔助信 肩、ο2、面向粒的編程集成開發(fā)平臺對類和粒的編輯和調(diào)試獨(dú)立并相互透明,使得類代 碼和粒代碼的編輯和調(diào)試更為方便,同時它又提供了自動定位和關(guān)聯(lián)信息顯示功能,自動 定位當(dāng)前粒依附的根類,和當(dāng)前類包括的粒,并且提供當(dāng)前程序的類_粒層次結(jié)構(gòu)圖,使得 對代碼的修改非常容易。3、面向粒的編程集成開發(fā)平臺的調(diào)試器除了獲取傳統(tǒng)集成開發(fā)平臺需要獲取的 當(dāng)前程序運(yùn)行信息,還獲取當(dāng)前程序的上下文信息和當(dāng)前程序的類-粒層次結(jié)構(gòu)圖,幫助 用戶迅速定位故障位置?;蛘咻o助編輯器進(jìn)行新的粒的編寫。


圖1為本發(fā)明的面向粒的編程集成開發(fā)平臺各個部件要素圖;圖2為本發(fā)明創(chuàng)建 GOP軟件項目的流程圖;圖3為本發(fā)明的類編輯窗口和粒信息窗口雙重顯示模式圖;圖4為 本發(fā)明的關(guān)系信息樹型顯示窗口圖;圖5為本發(fā)明的關(guān)系信息代碼顯示窗口圖;圖6為本 發(fā)明的粒編輯窗口和類信息窗口雙重顯示模式圖;圖7為本發(fā)明的關(guān)系信息圖形顯示窗口 圖;圖8為本發(fā)明的調(diào)試器窗口顯示模塊圖;圖9為本發(fā)明的個體程序演化模塊圖;圖10為 本發(fā)明的程序調(diào)試流程圖。
具體實(shí)施例方式本發(fā)明是幫助開發(fā)基于面向粒編程技術(shù)的軟件程序的開發(fā)平臺,提供的集成開發(fā) 平臺能使用戶快速、方便的創(chuàng)建和調(diào)試面向粒程序。該項發(fā)明的集成開發(fā)平臺具體實(shí)現(xiàn)是 通過計算機(jī)軟件來完成的,可以通過非破壞性的存儲介質(zhì)上裝載,或從一個或多個遠(yuǎn)程站 點(diǎn)上下載安裝,或從遠(yuǎn)程計算機(jī)上進(jìn)行本地安裝。下面結(jié)合附圖對本發(fā)明做進(jìn)一步詳細(xì)描述參見圖1 面向粒的編程集成開發(fā)平 臺200由編輯器210、編譯器220、虛擬機(jī)230、調(diào)試器240和類-粒層次結(jié)構(gòu)構(gòu)造器250組 成;所述編輯器210、編譯器220和調(diào)試器240分別與類-粒層次結(jié)構(gòu)構(gòu)造器250相互通信, 所述調(diào)試器240還分別與編輯器220和虛擬機(jī)230連接;參見圖2 它描述了在面向粒的編 程集成開發(fā)平臺下創(chuàng)建GOP軟件項目的流程圖;在步驟310通過編輯器210創(chuàng)建或修改類 源代碼201和粒源代碼202 ;在步驟320通過類-粒層次結(jié)構(gòu)構(gòu)造器250,利用編輯后的類源代碼201和粒源代碼202抽取程序的類信息,粒信息和類_粒關(guān)系信息;類_粒層次結(jié)構(gòu)構(gòu)造器250隨著類信息和粒信息的創(chuàng)建更新而隨之創(chuàng)建和更新。在步驟330通過編譯器220 對編輯后的類源代碼201和粒源代碼202進(jìn)行編譯,生成字節(jié)碼文件,確保所有的粒信息都 能被正確的處理;在步驟340通過虛擬機(jī)230將編譯后的程序字節(jié)碼文件加載運(yùn)行;在步 驟350監(jiān)測程序在虛擬機(jī)中的運(yùn)行,如果沒有在步驟350發(fā)現(xiàn)錯誤,開發(fā)過程在步驟370完 成。如果發(fā)現(xiàn)錯誤,在步驟360使用調(diào)試器240來定位錯誤,編輯器210再次啟用修正編輯 類源代碼201和粒源代碼202。這個循環(huán)一直持續(xù)到程序無誤,然后在步370結(jié)束。1編輯器所述的編輯器210由類編輯模塊211、粒編輯模塊212、類信息模塊213、 粒信息模塊214、關(guān)系信息模塊215和窗口切換模塊216組成;類編輯模塊211包括一個 類編輯窗口,粒編輯模塊212包括一個粒編輯窗口,類信息模塊213包括一個類信息窗口, 粒信息模塊214包括一個粒信息窗口 ;所述類編輯模塊211用于修改編輯對象類代碼;粒 編輯模塊212用于修改編輯對象粒代碼;類信息模塊213顯示類信息,類信息包括類名和 類所在的文件;粒信息模塊214顯示粒信息,粒信息包括粒名和粒所在的文件;關(guān)系信息模 塊215包括樹型顯示模塊、代碼顯示模塊和圖形顯示模塊;樹型顯示模塊包括一個關(guān)系信 息樹型顯示窗口 ;代碼顯示模塊包括一個關(guān)系信息代碼顯示窗口 ;圖形顯示模塊包括一個 關(guān)系信息圖形顯示窗口 ;樹型顯示模塊顯示類粒關(guān)系信息和層次結(jié)構(gòu)構(gòu)成的樹型結(jié)構(gòu)圖; 代碼顯示模塊顯示所有類和粒的具體的代碼;圖形顯示模塊用圖形直觀顯示粒和它所依附 的類之間的關(guān)系;窗口切換模塊216分別與類編輯模塊211、粒編輯模塊212、類信息模塊 213、粒信息模塊214、關(guān)系信息模塊215連接,實(shí)現(xiàn)類編輯窗口、粒編輯窗口、粒信息窗口、 粒信息窗口、關(guān)系信息樹型顯示窗口、關(guān)系信息代碼顯示窗口和關(guān)系信息圖形顯示窗口的 切換。所述類是OOP標(biāo)準(zhǔn)類;所述粒是GOP領(lǐng)域的基本模塊,粒由粒名、類名、粒體和影子 類構(gòu)成,其中類名用來表明該粒所依附的類,將該類稱為粒的根類,粒體用來指定粒的期望 環(huán)境,粒體可以定義自身的成員并且粒體中必須包含一個適合性判斷方法,適合性判斷方 法返回真或假;所述影子類是對種子程序中與該影子類相同名字的類的改進(jìn),是在不同上 下文下類行為的不同體現(xiàn),并且只是在相應(yīng)粒體適合性判斷方法為真后才有效。在本發(fā)明面向粒的集成開發(fā)平臺中支持單一顯示模式和雙重顯示模式,單一顯示 模式提供單一窗口顯示,用戶可以在類編輯模塊211的類編輯窗口和粒信息模塊214的粒 信息窗口之間,或粒編輯模塊212的粒編輯窗口和類信息模塊213的類信息窗口之間通過 窗口切換模塊216來切換窗口 ;在雙重顯示模式中,用戶可以使在類編輯模塊211的類編輯 窗口和粒信息模塊214的粒信息窗口,或粒編輯模塊212的粒編輯窗口和類信息模塊213 的類信息窗口同時顯示。在本發(fā)明中說明書附圖中的各圖都以雙重顯示模式為例來顯示該 項發(fā)明的特性。參見圖3 類編輯窗口和粒信息窗口同時顯示,粒列表在粒信息模塊214的粒信息 窗口顯示,粒列表用來顯示有關(guān)粒的信息;類編輯模塊211的類編輯窗口中的代碼是粒依 附的根類代碼。在類編輯窗口中,用戶可以修改編輯類源代碼。一個光標(biāo)312指向下一個 輸入位置。粒信息窗口是一個粒列表,列表中的每一行包括粒名稱323和粒所在的文件名 稱324。用戶能夠選擇Jump按鈕313,Jump按鈕313能夠啟動關(guān)系信息模塊215的代碼顯 示模塊,將所有的粒代碼和它們所依附的根類代碼顯示在關(guān)系信息代碼顯示窗口中,關(guān)系信息代碼顯示窗口如圖5所示;用戶能夠選擇類-粒信息按鈕314,類-粒信息按鈕314能 夠啟動關(guān)系信息模塊215的樹形顯示模塊,將類粒關(guān)系信息和層次結(jié)構(gòu)構(gòu)成的樹型結(jié)構(gòu)圖 顯示在關(guān)系信息樹形顯示窗口中,關(guān)系信息樹形顯示窗口如圖4所示。根據(jù)本發(fā)明,類-粒的層次結(jié)構(gòu)以圖形的方式顯示在圖4中的窗口 410中,這使得 用戶能夠更加快速了解類與粒之間的關(guān)系。參見圖4 在窗口 410中,類用橢圓315表示而 粒用矩形316表示。如果一個粒依附于某一類,那么就有一個箭頭從矩形316出發(fā)指向橢 圓315。當(dāng)用戶從窗口 410點(diǎn)選其中的一個粒名稱,相應(yīng)的粒名稱以及粒的文件地址將會在 粒信息窗口 420中顯示。在窗口 420中,粒的信息的被顯示,顯示的內(nèi)容包括粒名和粒所在 的文件。用戶能夠選擇Jump按鈕313,Jump按鈕313能夠啟動關(guān)系信息模塊215的代碼顯 示模塊,將所有的粒代碼和它們所依附的根類代碼顯示在關(guān)系信息代碼顯示窗口中,關(guān)系 信息代碼顯示窗口如圖5所示。
根據(jù)本發(fā)明,用戶通過在圖5中的窗口 510看到在圖3或者圖4中所顯示的類和 粒的具體代碼。參見圖5 在窗口 510的最左邊顯示的是當(dāng)前程序的類的源代碼,而右邊依 次顯示的與這個程序的類相關(guān)聯(lián)的粒的源代碼。參見圖6 粒編輯窗口和類信息窗口同時顯示,用戶可以在粒編輯窗口模塊212的 粒編輯窗口中編寫新粒的代碼和修改已有的粒的代碼,類信息窗口模塊213的類信息窗口 是一個類列表窗口,它顯示粒編輯窗口模塊212的粒編輯窗口中的粒所依附的類的信息。 為了選擇粒編輯窗口模塊212的粒編輯窗口中的一個粒,用戶可以通過移動光標(biāo)312到粒 編輯窗口模塊212的粒編輯窗口中某一粒的位置上然后反鍵點(diǎn)擊它。一旦一個粒被選擇, 類信息窗口模塊213的類信息窗口的顯示內(nèi)容將被更新,這時它將僅僅顯示這個被選中的 粒所依附的類的信息。參見圖7 它是一個關(guān)系信息圖形顯示窗口圖,在窗口 710中,粒和類之間的關(guān)系 以圖形的方式被顯示,用戶通過顯示的圖形能夠快速地了解粒和它所依附的類之間的關(guān) 系。一個例子顯示在圖7中,類720用橢圓形表示,粒730用矩形表示。表示類的圖形與其 它三個表示粒的圖形的重疊顯示這三個粒是依附于這個類。此外,粒和類還可以用其他方 式表示,如用其它不同的圖形,或者具有不同顏色的同一圖形,或者另一些能夠區(qū)別二者的 方式。另一方面,粒和類之間的關(guān)系除了用疊加的方式表示外,還可以用連接不同圖形的連 接符表示。2編譯器粒對類的作用通過面向粒的編譯器220實(shí)現(xiàn)。GOP編譯器220以編輯后 的類源代碼201和粒源代碼201作為輸入,對類和粒分別產(chǎn)生二進(jìn)制字節(jié)碼文件作為輸出, 提供給虛擬機(jī)230的運(yùn)行,編譯器220同時還與調(diào)試器連接。GOP的編譯器220分為前端模塊和后端模塊,前端模塊又包括詞法分析器、語法分 析器和靜態(tài)語義分析器,靜態(tài)語義分析器又具體包括名字分析模塊、類型檢查模塊、訪問控 制模塊、確定賦值模塊;詞法分析器根據(jù)GOP的構(gòu)詞規(guī)則識別程序中的單詞;語法分析器對 滿足GOP語法規(guī)則的程序構(gòu)造一棵抽象語法樹AST ;靜態(tài)語義分析器對抽象語法樹上的節(jié) 點(diǎn)以面向?qū)ο髮哟谓Y(jié)構(gòu)建模,在建模的結(jié)果之上,通過屬性文法的計算過程按照GOP的語 義規(guī)則完成語義的分析過程;后端模塊生成程序的類字節(jié)碼文件、粒體字節(jié)碼文件、影子類 字節(jié)碼文件、種子程序_個體程序配置文件以及該個體程序?qū)?yīng)的粒樹。所述種子程序是一個不與任何上下文相關(guān)聯(lián)且不包含任何粒的程序,所述個體程序是一個與已有上下文相關(guān)聯(lián)的程序,個體程序由種子程序和依附于種子程序的粒組成;所述的上下文是指支持程序的所有非功能性因素的綜合;種子程序-個體程序配置文件記 錄種子程序和個體程序的類層次結(jié)構(gòu)以及各類依附的粒的XML文件。所述的粒樹反映個體 程序所包含的粒和粒的層次的XML文件。3虛擬機(jī)GOP的虛擬機(jī)230系統(tǒng)包括裝載子系統(tǒng)、運(yùn)行數(shù)據(jù)區(qū)和執(zhí)行引擎;裝載 子系統(tǒng)包含類裝載器、粒體裝載器、影子類裝載器和種子-個體配置文件裝載器;本發(fā)明的 類裝載器與普通虛擬機(jī)中類裝載器一致,粒體裝載器和影子類裝載器的設(shè)計與類裝載器類 似,只是其實(shí)現(xiàn)將粒體和影子類裝載進(jìn)虛擬機(jī);種子程序_個體程序配置文件裝載器是用 來加載GOP編譯器生成的描述程序粒層次結(jié)構(gòu)的XML配置文件。運(yùn)行數(shù)據(jù)區(qū)包括方法區(qū)、堆、棧、PC寄存器、本地方法棧、上下文變量存儲區(qū)和種 子程序-個體程序存儲區(qū);上下文變量存儲區(qū)用于存儲影響程序的上下文信息;種子程 序_個體程序存儲區(qū)用于存儲加載進(jìn)來的種子程序_個體程序配置文件。執(zhí)行引擎分為??缍扰袛嗄K、適合性監(jiān)測模塊、粒替換模塊、上下文管理模塊和 粒庫管理模塊;粒跨度判斷模塊負(fù)責(zé)判斷粒調(diào)用的粒范圍跨度判斷,適合性監(jiān)測模塊用于 監(jiān)測程序的適合性,粒替換模塊用于查找相似粒,對程序做出替換及程序的演化過程,上下 文管理模塊提供了程序中粒所關(guān)心的上下文變量的取值及更新通知,上下文的變化,及時 反饋到程序中去,促使程序及時做出適合性判斷,粒庫管理模塊負(fù)責(zé)相似粒的查找,及程序 演化之后產(chǎn)生的新的個體的存儲到數(shù)據(jù)庫中去,擴(kuò)充粒庫,對于程序的更好運(yùn)行,增添了更 好的保障。4調(diào)試器所述調(diào)試器240包括跟蹤模塊241、粒指示模塊242、調(diào)試器窗口顯示模 塊243和個體程序演化模塊244 ;跟蹤模塊241用于跟蹤虛擬機(jī)運(yùn)行的源代碼;粒指示模塊 242用于顯示跟蹤模塊所跟蹤的方法所屬的粒;調(diào)試器窗口顯示模塊243顯示虛擬機(jī)當(dāng)前 運(yùn)行的數(shù)據(jù)域和方法信息;個體程序演化模塊244可以顯示運(yùn)行出錯前的個體程序和這個 個體程序的上下文信息,同時可以顯示相似粒替換前后的個體程序和這個個體程序的上下 3Cfn 息。參見圖8 跟蹤模塊241可以跟蹤一個方法執(zhí)行,主窗口 810顯示類的源代碼,在 類_粒層次結(jié)構(gòu)構(gòu)造器250中,調(diào)試器240首先接受類信息處理模塊251的類信息和粒信 息處理模塊252的粒信息,然后在源代碼相應(yīng)的位置顯示粒指示器820,指示器820表示被 跟蹤方法的代碼來源的粒。當(dāng)用戶使用鼠標(biāo)或其他指針設(shè)備反鍵點(diǎn)擊主窗口 810時,調(diào)試器240將彈出一個 粒列表窗口 830,該窗口顯示的粒都和主窗口 810中的代碼相關(guān)聯(lián),這個粒列表窗口包含一 個粒名831,一個粒方法或者粒變量832和一個粒所在的文件名833 ;此外,當(dāng)用戶可以通過 鼠標(biāo)或者其他指針設(shè)備點(diǎn)擊在粒窗口 830中的某一粒名時,此粒的源代碼將顯示在被彈出 的粒代碼窗口 840中。根據(jù)本發(fā)明,一個粒指示器僅僅與一個粒相關(guān)聯(lián),調(diào)試器240只是直接地彈出粒 代碼窗口而不是顯示一個只包含單個粒的粒列表窗口。如果用戶想要看到調(diào)試前的個體程序和這個個體程序的上下文信息,或想要看到 相似粒替換前后的個體程序和這個個體程序的上下文信息,用戶只需要點(diǎn)擊圖8中的Jump 按鈕313即可,Jump按鈕313啟動個體程序演化模塊圖,能夠顯示調(diào)試前的個體程序和新編寫的個體程序結(jié)構(gòu)示意圖,或者當(dāng)前運(yùn)行個體程序和它上一次替換時的個體程序結(jié)構(gòu)示 意圖。參見圖9:在窗口 910和窗口 920中的橢圓形表示類,矩形表示粒,圓角矩形表示 不適合當(dāng)前環(huán)境的粒;在窗口 910中,顯示的是當(dāng)前個體程序上一次發(fā)生替換時的結(jié)構(gòu),窗 口 920是當(dāng)前運(yùn)行個體程序的結(jié)構(gòu)圖,在窗口 930和窗口 940分別顯示窗口 910和窗口 920 中的個體程序的代碼和上下文信息。參見圖10 用戶可以步驟1010使用調(diào)試器240調(diào)試一個GOP程序。在調(diào)試之前,這個面向粒子的程序必須載入編譯器220。程序被裝載之后,在步驟1020通過來源于類-粒 層次結(jié)構(gòu)構(gòu)造器250的信息判斷是否有多個粒存在。如果有多個粒存在,在步驟1030將顯 示一個粒列表窗口 830。這個窗口列出所有的與這個載入的程序相關(guān)的粒。一旦用戶可以 在步驟1040選擇粒列表窗口 830中的一個粒,那么粒代碼窗口 840將被彈出顯示此粒的源 代碼202。如果在步驟1020只有一個粒存在,那么調(diào)試器240直接跳到步驟1050顯示粒代 碼窗口 840。所述的調(diào)試器240的跟蹤模塊241、粒指示模塊242、調(diào)試器窗口顯示模塊243和 個體程序演化模塊244分別與編輯器220和虛擬機(jī)230連接;調(diào)試器240啟動編輯器220 實(shí)現(xiàn)對代碼的修改,調(diào)試器240從虛擬機(jī)230獲取當(dāng)前運(yùn)行的狀態(tài)信息。5類-粒層次結(jié)構(gòu)構(gòu)造器所述的類_粒層次結(jié)構(gòu)構(gòu)造器250包括類信息處理模塊 251、粒信息處理模塊252和關(guān)系信息處理模塊253 ;所述類信息處理模塊251抽取GOP源 代碼中所有類信息及其層次結(jié)構(gòu),并將類信息及其層次結(jié)構(gòu)提供給其他模塊;所述粒信息 處理模塊252抽取GOP源代碼中所有粒信息及其層次結(jié)構(gòu),并將粒信息及其層次結(jié)構(gòu)提供 給其他模塊;所述關(guān)系信息處理模塊253抽取GOP源代碼中類和粒之間的關(guān)系信息,并將類 和粒之間的關(guān)系信息提供給其他模塊。所述編輯器210的類編輯模塊211和粒編輯模塊212分別與類_粒層次結(jié)構(gòu)構(gòu)造 器250的類信息處理模塊251、粒信息處理模塊252和關(guān)系信息處理模塊253連接,類-粒 層次結(jié)構(gòu)構(gòu)造器250從類編輯模塊211和粒編輯模塊212獲取GOP源代碼。所述的編輯器210的類信息模塊213與類-粒層次結(jié)構(gòu)構(gòu)造器250的類信息處理 模塊251連接,編輯器210的類信息模塊213從類-粒層次結(jié)構(gòu)構(gòu)造器250的類信息處理 模塊251獲取所有類信息及其層次結(jié)構(gòu)。所述的編輯器210的粒信息模塊214與類-粒層次結(jié)構(gòu)構(gòu)造器250的粒信息處理 模塊252連接,編輯器210的粒信息模塊214從類-粒層次結(jié)構(gòu)構(gòu)造器250的粒信息處理 模塊252獲取所有粒信息及其層次結(jié)構(gòu)。所述的編輯器210的關(guān)系信息模塊215與類-粒層次結(jié)構(gòu)構(gòu)造器250的關(guān)系信息 處理模塊253連接,編輯器210的關(guān)系信息模塊215從類-粒層次結(jié)構(gòu)構(gòu)造器250的關(guān)系 信息處理模塊253獲取類和粒之間的關(guān)系信息。所述的編輯器210的窗口切換模塊216與類-粒層次結(jié)構(gòu)構(gòu)造器250的類信息處 理模塊251、粒信息處理模塊252和關(guān)系信息處理模塊253連接,實(shí)現(xiàn)窗口切換時被切換前 后窗口內(nèi)容的信息同步。所述的調(diào)試器240的跟蹤模塊241、粒指示模塊242和調(diào)試器窗口顯示模塊243分 別與類_粒層次結(jié)構(gòu)構(gòu)造器250的類信息處理模塊251、粒信息處理模塊252連接;從粒層次結(jié)構(gòu)構(gòu)造器250的類信息處理模塊251獲取所有類信息及其層次結(jié)構(gòu),從粒層次結(jié)構(gòu)構(gòu) 造器250的粒信息處理模塊252獲取所有粒信息及其層次結(jié)構(gòu),為調(diào)試工作提供指示信息。
權(quán)利要求
一種面向粒的編程集成開發(fā)平臺,其特征在于所述面向粒的編程集成開發(fā)平臺分為編輯器、編譯器、虛擬機(jī)、調(diào)試器和類-粒層次結(jié)構(gòu)構(gòu)造器;所述編輯器、編譯器和調(diào)試器分別與類-粒層次結(jié)構(gòu)構(gòu)造器相互通信,所述調(diào)試器還分別與編輯器和虛擬機(jī)連接;(1)編輯器所述的編輯器由類編輯模塊、粒編輯模塊、類信息模塊、粒信息模塊、關(guān)系信息模塊和窗口切換模塊組成;類編輯模塊包括一個類編輯窗口,粒編輯模塊包括一個粒編輯窗口,類信息模塊包括一個類信息窗口,粒信息模塊包括一個粒信息窗口;所述類編輯模塊用于修改編輯對象類代碼;所述粒編輯模塊用于修改編輯對象粒代碼;類信息模塊顯示類信息,所述類信息包括類名和類所在的文件;粒信息模塊顯示粒信息,所述粒信息包括粒名和粒所在的文件;所述關(guān)系信息模塊包括樹型顯示模塊、代碼顯示模塊和圖形顯示模塊;樹型顯示模塊包括一個關(guān)系信息樹型顯示窗口;代碼顯示模塊包括一個關(guān)系信息代碼顯示窗口;圖形顯示模塊包括一個關(guān)系信息圖形顯示窗口;樹型顯示模塊顯示類粒關(guān)系信息和層次結(jié)構(gòu)構(gòu)成的樹型結(jié)構(gòu)圖;代碼顯示模塊顯示所有類和粒的具體的代碼;圖形顯示模塊用圖形直觀顯示粒和它所依附的類之間的關(guān)系;所述窗口切換模塊分別與類編輯模塊、粒編輯模塊、類信息模塊、粒信息模塊、關(guān)系信息模塊連接,實(shí)現(xiàn)類編輯窗口、粒編輯窗口、類信息窗口、粒信息窗口、關(guān)系信息樹型顯示窗口、關(guān)系信息代碼顯示窗口和關(guān)系信息圖形顯示窗口的切換;所述類是OOP標(biāo)準(zhǔn)類;所述粒是GOP領(lǐng)域的基本模塊,粒由粒名、類名、粒體和影子類構(gòu)成,其中類名用來表明該粒所依附的類,將該類稱為粒的根類,粒體用來指定粒的期望環(huán)境,粒體可以定義自身的成員并且粒體中必須包含一個適合性判斷方法,適合性判斷方法返回真或假;所述影子類是對種子程序中與該影子類相同名字的類的改進(jìn),是在不同上下文下類行為的不同體現(xiàn),并且只是在相應(yīng)粒體適合性判斷方法為真后才有效;(2)編譯器GOP的編譯器分為前端模塊和后端模塊,前端模塊又包括詞法分析器、語法分析器和靜態(tài)語義分析器,靜態(tài)語義分析器又具體包括名字分析模塊、類型檢查模塊、訪問控制模塊、確定賦值模塊;詞法分析器根據(jù)GOP的構(gòu)詞規(guī)則識別程序中的單詞;語法分析器對滿足GOP語法規(guī)則的程序構(gòu)造一棵抽象語法樹AST;靜態(tài)語義分析器對抽象語法樹上的節(jié)點(diǎn)以面向?qū)ο髮哟谓Y(jié)構(gòu)建模,在建模的結(jié)果之上,通過屬性文法的計算過程按照GOP的語義規(guī)則完成語義的分析過程;后端模塊生成程序的類字節(jié)碼文件、粒體字節(jié)碼文件、影子類字節(jié)碼文件、種子程序-個體程序配置文件以及該個體程序?qū)?yīng)的粒樹;(3)虛擬機(jī)GOP的虛擬機(jī)系統(tǒng)包括裝載子系統(tǒng)、運(yùn)行數(shù)據(jù)區(qū)和執(zhí)行引擎;裝載子系統(tǒng)包含類裝載器、粒裝載器、影子類裝載器和種子程序-個體程序配置文件裝載器;運(yùn)行數(shù)據(jù)區(qū)包括方法區(qū)、堆、棧、PC寄存器、本地方法棧、上下文變量存儲區(qū)和種子程序-個體程序存儲區(qū);執(zhí)行引擎分為??缍扰袛嗄K、適合性監(jiān)測模塊、粒替換模塊、上下文管理模塊和粒庫管理模塊;(4)調(diào)試器所述調(diào)試器包括跟蹤模塊、粒指示模塊、調(diào)試器窗口顯示模塊和個體程序演化模塊;跟蹤模塊用于跟蹤虛擬機(jī)運(yùn)行的源代碼;粒指示模塊用于顯示跟蹤模塊所跟蹤的方法所屬的粒;調(diào)試器窗口顯示模塊顯示虛擬機(jī)當(dāng)前運(yùn)行的數(shù)據(jù)域和方法信息;個體程序演化模塊可以顯示運(yùn)行出錯前的個體程序和這個個體程序的上下文信息;同時可以顯示相似粒替換前后的個體程序和這個個體程序的上下文信息;(5)類-粒層次結(jié)構(gòu)構(gòu)造器所述的類-粒層次結(jié)構(gòu)構(gòu)造器包括類信息處理模塊、粒信息處理模塊和關(guān)系信息處理模塊;所述類信息處理模塊抽取GOP源代碼中所有類信息及其層次結(jié)構(gòu),并將類信息及其層次結(jié)構(gòu)提供給其他模塊;所述粒信息處理模塊抽取GOP源代碼中所有粒信息及其層次結(jié)構(gòu),并將粒信息及其層次結(jié)構(gòu)提供給其他模塊;所述關(guān)系信息處理模塊抽取GOP源代碼中類和粒之間的關(guān)系信息,并將類和粒之間的關(guān)系信息提供給其他模塊。
2.根據(jù)權(quán)利要求1所述的面向粒的編程集成開發(fā)平臺,其特征在于所述編輯器的類 編輯模塊和粒編輯模塊分別與類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊、粒信息處理模塊 和關(guān)系信息處理模塊連接,類_粒層次結(jié)構(gòu)構(gòu)造器從類編輯模塊和粒編輯模塊獲取GOP源 代碼,所述類信息處理模塊抽取GOP源代碼中所有類信息及其層次結(jié)構(gòu);所述粒信息處理 模塊抽取GOP源代碼中所有粒信息及其層次結(jié)構(gòu);所述關(guān)系信息處理模塊抽取GOP源代碼 中類和粒之間的關(guān)系信息。
3.根據(jù)權(quán)利要求1所述的面向粒的編程集成開發(fā)平臺,其特征在于所述的編輯器 的類信息模塊與類-粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊連接,編輯器的類信息模塊從 類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊獲取所有類信息及其層次結(jié)構(gòu)。
4.根據(jù)權(quán)利要求1所述的面向粒的編程集成開發(fā)平臺,其特征在于所述的編輯器 的粒信息模塊與類-粒層次結(jié)構(gòu)構(gòu)造器的粒信息處理模塊連接,編輯器的粒信息模塊從 類_粒層次結(jié)構(gòu)構(gòu)造器的粒信息處理模塊獲取所有粒信息及其層次結(jié)構(gòu)。
5.根據(jù)權(quán)利要求1所述的面向粒的編程集成開發(fā)平臺,其特征在于所述的編輯器的 關(guān)系信息模塊與類-粒層次結(jié)構(gòu)構(gòu)造器的關(guān)系信息處理模塊連接,編輯器的關(guān)系信息顯示 模塊從類_粒層次結(jié)構(gòu)構(gòu)造器的關(guān)系信息處理模塊獲取類和粒之間的關(guān)系信息。
6.根據(jù)權(quán)利要求1所述的面向粒的編程集成開發(fā)平臺,其特征在于所述的編輯器的 窗口切換模塊與類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊、粒信息處理模塊和關(guān)系信息處 理模塊連接,實(shí)現(xiàn)窗口切換時被切換前后窗口內(nèi)容的信息同步。
7.根據(jù)權(quán)利要求1所述的面向粒的編程集成開發(fā)平臺,其特征在于所述的調(diào)試器的 跟蹤模塊、粒指示模塊和調(diào)試器窗口顯示模塊分別與類_粒層次結(jié)構(gòu)構(gòu)造器的類信息處理 模塊、粒信息處理模塊連接;從粒層次結(jié)構(gòu)構(gòu)造器的類信息處理模塊獲取所有類信息及其 層次結(jié)構(gòu),從粒層次結(jié)構(gòu)構(gòu)造器的粒信息處理模塊獲取所有粒信息及其層次結(jié)構(gòu),為調(diào)試 工作提供指示信息。
8.根據(jù)權(quán)利要求1所述的面向粒的編程集成開發(fā)平臺,其特征在于所述的調(diào)試器的 跟蹤模塊、粒指示模塊、調(diào)試器窗口顯示模塊和個體程序演化模塊分別與編輯器和虛擬機(jī) 連接;調(diào)試器啟動編輯器實(shí)現(xiàn)對代碼的修改,調(diào)試器從虛擬機(jī)獲取當(dāng)前運(yùn)行的狀態(tài)信息。
全文摘要
本發(fā)明公開了一種面向粒的編程集成開發(fā)平臺,該平臺分為編輯器、編譯器、虛擬機(jī)、調(diào)試器和類-粒層次結(jié)構(gòu)構(gòu)造器;所述編輯器、編譯器和調(diào)試器分別與類-粒層次結(jié)構(gòu)構(gòu)造器相互通信,所述調(diào)試器還分別與編輯器和虛擬機(jī)連接。該平臺提供了對面向粒的編程(Granule-Oriented Programming)語言的編碼、編譯、調(diào)試功能;將程序的信息由獨(dú)立的類-粒層次結(jié)構(gòu)構(gòu)造器進(jìn)行管理,依靠面向粒的編程集成開發(fā)平臺我們可以很容易定義粒,并將類代碼與粒代碼透明的融合,同時類-粒之間的自動定位功能和豐富的信息顯示功能也使得代碼編輯、故障確定和新粒的編寫更為方便。
文檔編號G06F9/44GK101826017SQ20101017279
公開日2010年9月8日 申請日期2010年5月14日 優(yōu)先權(quán)日2010年5月14日
發(fā)明者張長軍, 曾慶花, 朱常鵬, 李聰, 王一群, 王妮, 趙銀亮, 鄭雙明 申請人:西安交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1