国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方法,裝置和系統(tǒng)的制作方法

      文檔序號(hào):6379176閱讀:361來源:國(guó)知局
      專利名稱:一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方法,裝置和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及到計(jì)算機(jī)腳本編譯領(lǐng)域,具體涉及一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方法和裝置。
      背景技術(shù)
      TTCN-3 (Testing and Test Control Notation version 3,測(cè)試及測(cè)試控制表達(dá)法-3),是一種國(guó)際標(biāo)準(zhǔn)化的測(cè)試準(zhǔn)用開發(fā)編程語言,專用于各種測(cè)試。典型的應(yīng)用領(lǐng)域?yàn)橄到y(tǒng)測(cè)試、交互性測(cè)試、協(xié)議測(cè)試、業(yè)務(wù)測(cè)試、服務(wù)測(cè)試、模塊測(cè)試等。例如,可以通過TTCN-3進(jìn)行移動(dòng)和互聯(lián)網(wǎng)協(xié)議測(cè)試,基于平臺(tái)的CORBA(Common Object Request BrokerArchitecture,公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))測(cè)試、API (Applicat ion programminginterface應(yīng)用編程接口,)測(cè)試以及用于描述AUT0SAR(汽車開放系統(tǒng)架構(gòu),AutomotiveOpenSystems Architecture)標(biāo)準(zhǔn)的基礎(chǔ)軟件模塊的符合性測(cè)試等等。 要運(yùn)行TTCN-3測(cè)試腳本,需要對(duì)應(yīng)的TTCN-3編譯器。通常,編程語言的編譯器是將語言直接翻譯為目標(biāo)機(jī)可執(zhí)行代碼或是目標(biāo)虛擬機(jī)上的可執(zhí)行代碼。但是,TTCN-3編譯器主要采用的實(shí)現(xiàn)方法卻是將TTCN-3語言轉(zhuǎn)化為某一類可編譯的高級(jí)語言(如Java,C++等),然后再利用第三方編譯器獲取可執(zhí)行文件。這種方式雖然犧牲的一定的編譯效率,但是利用已存在的高級(jí)語言,可以簡(jiǎn)化代碼生成以及后端代碼優(yōu)化工作,極大減小編譯器開發(fā)的難度。目前已知的編譯器都是商業(yè)編譯器,售價(jià)昂貴,雖然功能強(qiáng)大,但是在實(shí)際情況中,并不需要編譯器支持完整的TTCN-3語法。例如在AUT0SAR V4. O附帶的測(cè)試腳本里,就并未使用基于消息的通信方式。因此,在語法元素集合相對(duì)縮小的情況下,根據(jù)可以根據(jù)被編譯腳本所使用的TTCN-3語法,自己構(gòu)建一套代碼轉(zhuǎn)換方案。由于語法元素僅是完整TTCN-3語言的一個(gè)子集,自我設(shè)計(jì)的難度和復(fù)雜度也會(huì)相應(yīng)減少,基于此方法實(shí)現(xiàn)的轉(zhuǎn)換功能具有較高的性價(jià)比。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供了一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼文件的方法、裝置及系統(tǒng),通過本發(fā)明,能夠保證轉(zhuǎn)換后代碼語義完全符合標(biāo)準(zhǔn)TTCN-3的語義規(guī)定,進(jìn)一步轉(zhuǎn)換后的Java源代碼能夠直接被Java編譯器編譯為字節(jié)碼。本發(fā)明公開了將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方法,包括構(gòu)建TTCN-3腳本的翻譯器;所述翻譯器將所述TTCN-3腳本按照預(yù)定義的翻譯規(guī)則進(jìn)行翻譯,轉(zhuǎn)換成Java源代碼;結(jié)合所述翻譯規(guī)則,構(gòu)建運(yùn)行Java源代碼所需的支持庫(kù);所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置Java源代碼的執(zhí)行入口,獲取Java源代碼的可執(zhí)行文件。
      優(yōu)選的,所述TTCN-3腳本按照預(yù)定義的翻譯規(guī)則進(jìn)行翻譯,轉(zhuǎn)換成Java源代碼包括對(duì)TTCN-3腳本進(jìn)行詞法分析和語法分析,所述詞法分析和語法分析進(jìn)一步包括以下步驟校驗(yàn)和修正所述TTCN-3腳本中詞法和語法的錯(cuò)誤,分析詞法和語法結(jié)構(gòu),生成語法樹;對(duì)語法樹進(jìn)行掃描,進(jìn)行語義分析;掃描經(jīng)過語義分析的語法樹,生成相應(yīng)的Java源代碼。優(yōu)選的,所述翻譯器進(jìn)一步包括步驟記錄TTCN-3腳本文件代碼中的符號(hào),提供符號(hào)表的檢索、弓I入操作。此外,所述語義分析包括對(duì)TTCN-3腳本中的代碼進(jìn)行語義檢查,關(guān)聯(lián)所述TTCN-3腳本中的代碼中的符號(hào),存儲(chǔ)生成Java源代碼所需要的信息,為生成Java源代碼做準(zhǔn)備?!しg器對(duì)TTCN-3腳本文件進(jìn)行詞法分析以及語法分析是借助于JavaCC以及JJTree工具,通過編寫符合BNF范式的文件來實(shí)現(xiàn),所述BNF范式可根據(jù)需求進(jìn)行剪裁。其中,語義分析按照一定的順序執(zhí)行對(duì)于輸入TTCN-3腳本文件的模塊A,首先判斷A是否已經(jīng)被分析過;若是則結(jié)束對(duì)A的語義分析,若否則檢查A中存在的每一個(gè)可能的引入B ;若B被分析過,則將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;若B未被分析過,則先對(duì)B進(jìn)行語義分析,再將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;當(dāng)對(duì)A中存在的每一個(gè)可能的引入B檢測(cè)完畢后,在對(duì)A進(jìn)行語義分析,并標(biāo)識(shí)A為分析過,結(jié)束對(duì)A的語義分析。本發(fā)明還公開了一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的裝置,其特征在于,包括翻譯器構(gòu)建模塊,構(gòu)建TTCN-3腳本的翻譯器;翻譯器,所述翻譯器將所述TTCN-3腳本按照預(yù)定義的翻譯規(guī)則進(jìn)行翻譯,轉(zhuǎn)換成Java源代碼;支持庫(kù)構(gòu)建模塊,結(jié)合所述翻譯規(guī)則,構(gòu)建運(yùn)行Java源代碼所需的支持庫(kù);支持庫(kù),所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置編譯模塊,配置Java源代碼的執(zhí)行入口,獲取Java源代碼的可執(zhí)行文件。翻譯器進(jìn)一步包括對(duì)TTCN-3腳本進(jìn)行詞法分析和語法分析的分析模塊,所述分析模塊包括詞法語法解析模塊,校驗(yàn)和修正所述TTCN-3腳本中詞法和語法的錯(cuò)誤,分析詞法和語法結(jié)構(gòu),生成語法樹;語義分析模塊,對(duì)語法樹進(jìn)行掃描,進(jìn)行語義分析;代碼生成模塊,掃描經(jīng)過語義分析的語法樹,生成相應(yīng)的Java源代碼。所述翻譯器進(jìn)一步包括符號(hào)表模塊,記錄TTCN-3腳本文件代碼中的符號(hào),提供符號(hào)表的檢索、引入操作。此外,所述語義分析模塊進(jìn)一步包括對(duì)TTCN-3腳本中的代碼進(jìn)行語義檢查,關(guān)聯(lián)所述TTCN-3腳本中的代碼中的符號(hào),存儲(chǔ)生成Java源代碼所需要的信息,為生成Java源代碼做準(zhǔn)備的模塊。其中,翻譯器對(duì)TTCN-3腳本文件進(jìn)行詞法分析以及語法分析是借助于JavaCC以及JJTree工具,通過編寫符合BNF范式的文件來實(shí)現(xiàn),所述BNF范式可根據(jù)需求進(jìn)行剪裁。優(yōu)選的,所述語義分析按照順序執(zhí)行對(duì)于輸入TTCN-3腳本文件的模塊A,首先判斷A是否已經(jīng)被分析過;若是則結(jié)束對(duì)A的語義分析,若否則檢查A中存在的每一個(gè)可能的引入B ;若B被分析過,則將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;若B未被分析過,則先對(duì)B進(jìn)行語義分析,再將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;當(dāng)對(duì)A中存在的每一個(gè)可能的引入B檢測(cè)完畢后,在對(duì)A進(jìn)行語義分析,并標(biāo)識(shí)A為分析過,結(jié)束對(duì)A的語義分析。本發(fā)明還公開了另一將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方案,包括一下步驟構(gòu)建TTCN-3腳本的翻譯器;所述翻譯器包括所述翻譯器完成TTCN-3腳本文件代碼到語法樹數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換;記錄TTCN-3腳本文件代碼中的符號(hào)表,提供符號(hào)表的檢索、引入操作;掃描語法樹,進(jìn) 行語義檢查,關(guān)聯(lián)節(jié)點(diǎn)和相應(yīng)的符號(hào);完成模塊語法樹到Java源代碼的轉(zhuǎn)換;構(gòu)建運(yùn)行Java源代碼所需的支持庫(kù);所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置編譯模塊,配置Java源代碼的執(zhí)行入口,獲取Java源代碼的可執(zhí)行文件。以及公開了一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的系統(tǒng),所述系統(tǒng)包括翻譯器構(gòu)建模塊,構(gòu)建TTCN-3腳本的翻譯器;翻譯器;支持庫(kù)構(gòu)建模塊,構(gòu)建運(yùn)行Java源代碼所需的支持庫(kù);支持庫(kù),所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置Java源代碼的執(zhí)行入口,獲取Java源代碼的可執(zhí)行文件。所述翻譯器進(jìn)一步包括詞法語法解析模塊,詞法語法解析模塊,完成TTCN-3腳本文件代碼到語法樹數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換;符號(hào)表模塊,記錄TTCN-3腳本文件代碼中的符號(hào)表,提供符號(hào)表的檢索、引入操作;語義分析模塊,掃描語法樹,進(jìn)行語義檢查,關(guān)聯(lián)節(jié)點(diǎn)和相應(yīng)的符號(hào);代碼生成模塊,完成模塊語法樹到Java源代碼的轉(zhuǎn)換??梢钥闯觯景l(fā)明給出的方案流程較少,將常規(guī)編譯器器的中間代碼優(yōu)化過程交給Java編譯器處理。同時(shí),借助Java語言的一次編譯到處運(yùn)行的特性,本方法可以使得TTCN-3腳本在不同的操作系統(tǒng)下運(yùn)行。此外,由于TTCN-3到Java本身都是高級(jí)語言,因此,擴(kuò)展新的TTCN-3語法也相對(duì)較為容易。在實(shí)施時(shí),只需要使翻譯器增加新的語法支持,并在Java支持庫(kù)中添加新定義的Java類。


      圖I為本發(fā)明的總執(zhí)行流程。圖2為本發(fā)明中使用的節(jié)點(diǎn)類圖。圖3為本發(fā)明中符號(hào)表快照結(jié)構(gòu)。圖4為本發(fā)明中符號(hào)表類圖。圖5為本發(fā)明中語義分析順序確定流程圖。
      圖6為本發(fā)明中實(shí)體元素支持類圖。圖7本發(fā)明中涉及的類型/數(shù)據(jù)的類圖㈧。圖8本發(fā)明中涉及的類型/數(shù)據(jù)的類圖(B)
      具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明圖I給出了本發(fā)明的所闡述的將TTCN-3腳本文件(*. ttcn)轉(zhuǎn)換為Java源代碼文件的總的執(zhí)行流程。這個(gè)過程首先需要構(gòu)建一個(gè)TTCN-3腳本文件的翻譯器,該翻譯器能將TTCN-3腳本文件轉(zhuǎn)換為一個(gè)Java源代碼文件。然后構(gòu)建運(yùn)行Java源代碼所需的支持庫(kù),所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類,通過Java編譯器對(duì)翻譯生成的Java源代碼進(jìn)行編譯,執(zhí)行所述翻譯生成的Java源代·碼。 其中,翻譯器是執(zhí)行TTCN-3腳本文件到Java源代碼文件轉(zhuǎn)換的重要單元;為具體來說,該翻譯器需要包含如下功能(I)對(duì)所有的TTCN-3腳本文件進(jìn)行詞法分析,語法分析。這個(gè)過程的主要作用是排除腳本文件中的一些基本錯(cuò)誤,例如拼寫錯(cuò)誤等常規(guī)的錯(cuò)誤校對(duì),當(dāng)檢測(cè)到錯(cuò)誤時(shí),及時(shí)以通知的方式發(fā)出錯(cuò)誤報(bào)告,方便調(diào)試人員進(jìn)行修改,和或針對(duì)常見錯(cuò)誤進(jìn)行自動(dòng)修正;該過程最終會(huì)生成語法樹。(2)對(duì)語法樹進(jìn)行掃描,進(jìn)行語義分析。語義分析過程主要是對(duì)代碼進(jìn)行語義檢查。此外,該過程還會(huì)關(guān)聯(lián)代碼中的符號(hào),存儲(chǔ)生成代碼所需要的信息,為代碼生成過程做準(zhǔn)備。(3)掃描經(jīng)過語義分析的語法樹,生成相應(yīng)的Java源代碼。在具體實(shí)施時(shí),一個(gè)TTCN-3文件可轉(zhuǎn)換為一個(gè)Java源文件,一個(gè)TTCN-3模塊可對(duì)應(yīng)到一個(gè)Java類上去,這樣就很容易建立文件乃至語句間的對(duì)應(yīng)關(guān)系。構(gòu)建Java的支持庫(kù),這些Java源代碼文件保證了翻譯后的Java源代碼能夠被正確編譯。組合翻譯后的代碼和支持庫(kù),并配置整個(gè)Java源代碼的執(zhí)行入口,即可獲取完整的可運(yùn)行Java源代碼。從結(jié)構(gòu)上來說,該翻譯器包含了以下模塊詞法語法解析模塊完成TTCN-3腳本文件代碼到語法樹數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換;符號(hào)表模塊記錄TTCN-3腳本文件代碼中的符號(hào)表,提供符號(hào)表的檢索、引入操作;語義分析模塊分析模塊掃描語法樹,進(jìn)行語義檢查,關(guān)聯(lián)節(jié)點(diǎn)和相應(yīng)的符號(hào);代碼生成模塊完成模塊語法樹到Java源代碼的轉(zhuǎn)換。構(gòu)造詞法語法解析模塊翻譯器首先對(duì)TTCN-3腳本文件進(jìn)行詞法分析以及語法分析,借助于JavaCC以及JJTree工具,只需要編寫符合工具規(guī)定的范式文件,即可生成出對(duì)應(yīng)的詞法以及語法解析的Java源代碼。其中,JavaCC(Java CompilerCompiler)是一個(gè)用Java開發(fā)的語法分析生成器。具體的BNF范式可根據(jù)自己需求進(jìn)行一定的裁剪,對(duì)于那些TTCN-3腳本文件中不涉及到的語法元素,則可以將其刪除。范式編寫完范式文件后,工具將會(huì)為BNF范式中的非終結(jié)符生成出對(duì)應(yīng)的節(jié)點(diǎn)類以及詞法語法解析器。參考標(biāo)準(zhǔn)的TTCN-3的范式,其節(jié)點(diǎn)類結(jié)構(gòu)見附圖2。在附圖2中,Node接口是所有的節(jié)點(diǎn)類都需要實(shí)現(xiàn)的接口,它提供了對(duì)孩子節(jié)點(diǎn)以及父節(jié)點(diǎn)的訪問方法。jjtGetChil dNumO方法獲取孩子節(jié)點(diǎn)的個(gè)數(shù),j jtGetChildO方法可獲取指定的孩子節(jié)點(diǎn),jjtAcceptO方法使得訪問者類能訪問該節(jié)點(diǎn)。SimpleNode類實(shí)現(xiàn)了 Node接口 enterLocation,它是其他所有節(jié)點(diǎn)的基類。本方法在SimpleNode類中添加了 getStartPositionO方法,以記錄節(jié)點(diǎn)在源代碼中的位置。dump O方法則將節(jié)點(diǎn)信息以文本的方式遞歸輸出到指定的打印設(shè)備上去。StrcutFieldDef類和RecordDef類就繼承了 SimpleNode類,它們就是由相應(yīng)的BNF范式生成的節(jié)點(diǎn)類。在語義分析完成后,每個(gè)TTCN-3代碼文件將會(huì)被轉(zhuǎn)化為一顆由節(jié)點(diǎn)類實(shí)例組合成的語法樹。在打開了 JJTree工具的VISITOR選項(xiàng)后,還會(huì)生成ParserVisitor接口,該接口是語法樹訪問者需要實(shí)現(xiàn)接口,每個(gè)節(jié)點(diǎn)類對(duì)應(yīng)該接口中的一個(gè)VisitO方法。如果需要訪問語法樹,就要求實(shí)現(xiàn)該接口。具體地說,在接下來的語義分析模塊以及代碼生成模塊中,就需要實(shí)現(xiàn)該接口內(nèi)的所有visit O方法,以訪問所有的語法樹節(jié)點(diǎn)。所有節(jié)點(diǎn)類名以及其擴(kuò)展信息如表I所示·表I節(jié)點(diǎn)類列表
      權(quán)利要求
      1.一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方法,其特征在于,包括構(gòu)建所述TTCN-3腳本的翻譯器;所述翻譯器將所述TTCN-3腳本按照預(yù)定義的翻譯規(guī)則進(jìn)行翻譯,轉(zhuǎn)換所述成Java源代碼;結(jié)合所述翻譯規(guī)則,構(gòu)建運(yùn)行所述Java源代碼所需的支持庫(kù);所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置所述Java源代碼的執(zhí)行入口,獲取所述Java源代碼的可執(zhí)行文件。
      2.根據(jù)權(quán)利要求I所述的方法,所述翻譯器將所述TTCN-3腳本按照預(yù)定義的翻譯規(guī)則進(jìn)行翻譯,轉(zhuǎn)換成所述Java源代碼包括對(duì)所述TTCN-3腳本進(jìn)行詞法分析和語法分析,所述詞法分析和語法分析進(jìn)一步包括以下步驟校驗(yàn)和修正所述TTCN-3腳本中詞法和語法的錯(cuò)誤,分析詞法和語法結(jié)構(gòu),生成語法樹;對(duì)所述語法樹進(jìn)行掃描,進(jìn)行語義分析;掃描經(jīng)過所述語義分析的所述語法樹,生成相應(yīng)的所述Java源代碼。
      3.根據(jù)權(quán)利要求2所述的方法,所述翻譯器進(jìn)一步包括步驟記錄所述TTCN-3腳本的文件代碼中的符號(hào),提供符號(hào)表的檢索、弓I入操作。
      4.根據(jù)權(quán)利要求3所述的方法,所述語義分析需要進(jìn)行符號(hào)查找訪問操作,為保證查找到的符號(hào)來自于正確的作用域;當(dāng)進(jìn)入一個(gè)新的符號(hào)作用域時(shí)建立一個(gè)新的作用域?qū)ο?,并設(shè)置為當(dāng)前的作用域;在退出所述當(dāng)前的作用域或是所述新的作用域之前,所有新加入的符號(hào)將會(huì)以雙向鏈表的形式組織起來,并且如果新加入的符號(hào)名存在哈希沖突或是同名時(shí),新加入的符號(hào)將會(huì)覆蓋以前的符號(hào)。
      5.根據(jù)權(quán)利要求2所述的方法,所述語義分析包括對(duì)所述TTCN-3腳本中的代碼進(jìn)行語義檢查,關(guān)聯(lián)所述TTCN-3腳本中的代碼中的符號(hào),存儲(chǔ)生成Java源代碼所需要的信息,為生成所述Java源代碼做準(zhǔn)備。
      6.根據(jù)權(quán)利要求3或4所述的方法,翻譯器對(duì)所述TTCN-3腳本進(jìn)行所述詞法分析以及語法分析是借助于JavaCC以及JJTree工具,通過編寫符合BNF范式的文件來實(shí)現(xiàn),所述 BNF范式可根據(jù)需求進(jìn)行剪裁。
      7.根據(jù)權(quán)利要求5所述的方法,所述語義分析按照順序執(zhí)行對(duì)于輸入所述TTCN-3腳本的模塊A,首先判斷A是否已經(jīng)被分析過;若是則結(jié)束對(duì)A的語義分析,若 否則檢查A中存在的每一個(gè)可能的引入B ;若B被分析過,則將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;若B未被分析過,則先對(duì)B進(jìn)行語義分析,再將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;當(dāng)對(duì)A中存在的每一個(gè)可能的引入B檢測(cè)完畢后,在對(duì)A進(jìn)行語義分析,并標(biāo)識(shí)A為分析過,結(jié)束對(duì)A的語義分析。
      8.一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的裝置,其特征在于,包括翻譯器構(gòu)建模塊,構(gòu)建TTCN-3腳本的翻譯器;翻譯器,所述翻譯器將所述TTCN-3腳本按照預(yù)定義的翻譯規(guī)則進(jìn)行翻譯,轉(zhuǎn)換成Java 源代碼;支持庫(kù)構(gòu)建模塊,結(jié)合所述翻譯規(guī)則,構(gòu)建運(yùn)行Java源代碼所需的支持庫(kù);支持庫(kù),所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置編譯模塊,配置Java源代碼的執(zhí)行入口,獲取Java源代碼的可執(zhí)行文件。
      9.根據(jù)權(quán)利要求8所述的裝置,所述翻譯器進(jìn)一步包括對(duì)TTCN-3腳本進(jìn)行詞法分析和語法分析的分析模塊,所述進(jìn)行詞法分析和語法分析的分析模塊包括詞法語法解析模塊,校驗(yàn)和修正所述TTCN-3腳本中詞法和語法的錯(cuò)誤,分析詞法和語法結(jié)構(gòu),生成語法樹;語義分析模塊,對(duì)所述語法樹進(jìn)行掃描,進(jìn)行語義分析;代碼生成模塊,掃描經(jīng)過語義分析的語法樹,生成相應(yīng)的Java源代碼。
      10.根據(jù)權(quán)利要求9所述的裝置,所述翻譯器進(jìn)一步包括符號(hào)表模塊,記錄TTCN-3腳本的文件代碼中的符號(hào),提供符號(hào)表的檢索、弓I入操作。
      11.根據(jù)權(quán)利要求10所述的方法,所述語義分析需要進(jìn)行符號(hào)查找訪問操作,為保證查找到的符號(hào)來自于正確的作用域;當(dāng)進(jìn)入一個(gè)新的符號(hào)作用域時(shí)建立一個(gè)新的作用域?qū)ο螅⒃O(shè)置為當(dāng)前的作用域;在退出所述當(dāng)前的作用域或是所述新的作用域之前,所有新加入的符號(hào)將會(huì)以雙向鏈表的形式組織起來,并且如果新加入的符號(hào)名存在哈希沖突或是同名時(shí),新加入的符號(hào)將會(huì)覆蓋以前的符號(hào)。
      12.根據(jù)權(quán)利要求9所述的方法,所述語義分析模塊進(jìn)一步包括對(duì)TTCN-3腳本中的代碼進(jìn)行語義檢查,關(guān)聯(lián)所述TTCN-3腳本中的代碼中的符號(hào),存儲(chǔ)生成Java源代碼所需要的信息,為生成Java源代碼做準(zhǔn)備的模塊。
      13.根據(jù)權(quán)利要求10或11所述的裝置,翻譯器對(duì)所述TTCN-3腳本進(jìn)行詞法分析以及語法分析是借助于JavaCC以及JJTree工具,通過編寫符合BNF范式的文件來實(shí)現(xiàn),所述 BNF范式可根據(jù)需求進(jìn)行剪裁。
      14.根據(jù)權(quán)利要求13所述的裝置,所述語義分析按照順序執(zhí)行對(duì)于輸入所述TTCN-3 腳本的模塊A,首先判斷A是否已經(jīng)被分析過;若是則結(jié)束對(duì)A的語義分析,若否則檢查A中存在的每一個(gè)可能的引入B ;若B被分析過,則將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;若B未被分析過,則先對(duì)B進(jìn)行語義分析,再將B中所有的所有符號(hào)引入到當(dāng)前模塊的符號(hào)表中;當(dāng)對(duì)A中存在的每一個(gè)可能的引入B檢測(cè)完畢后,在對(duì)A進(jìn)行語義分析,并標(biāo)識(shí)A為分析過,結(jié)束對(duì)A的語義分析。
      15.—種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方法,其特征在于,包括構(gòu)建所述TTCN-3腳本的翻譯器;所述翻譯器包括所述翻譯器完成所述TTCN-3腳本的文件代碼到語法樹數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換;記錄所述TTCN-3腳本的文件代碼中的符號(hào)表,提供所述符號(hào)表的檢索、引入操作;掃描語法樹,進(jìn)行語義檢查,關(guān)聯(lián)節(jié)點(diǎn)和相應(yīng)的符號(hào);完成模塊語法樹到Java源代碼的轉(zhuǎn)換;構(gòu)建運(yùn)行Java源代碼所需的支持庫(kù);所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置編譯模塊,配置Java源代碼的執(zhí)行入口,獲取Java源代碼的可執(zhí)行文件。
      16.一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的系統(tǒng),其特征在于,包括翻譯器構(gòu)建模塊,構(gòu)建所述TTCN-3腳本的翻譯器;翻譯器;支持庫(kù)構(gòu)建模塊,構(gòu)建運(yùn)行所述Java源代碼所需的支持庫(kù);支持庫(kù),所述支持庫(kù)實(shí)現(xiàn)翻譯中引用到的基礎(chǔ)類;配置Java源代碼的執(zhí)行入口,獲取Java源代碼的可執(zhí)行文件。所述翻譯器包括詞法語法解析模塊,所述詞法語法解析模塊完成所述TTCN-3腳本的文件代碼到語法樹數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換;符號(hào)表模塊,記錄所述TTCN-3腳本的文件代碼中的符號(hào)表,提供符號(hào)表的檢索、引入操作;語義分析模塊,掃描語法樹,進(jìn)行語義檢查,關(guān)聯(lián)節(jié)點(diǎn)和相應(yīng)的符號(hào);代碼生成模塊,完成模塊語法樹到Java源代碼的轉(zhuǎn)換。
      全文摘要
      本發(fā)明公開了一種將TTCN-3腳本轉(zhuǎn)換為Java源代碼的方法、裝置及系統(tǒng),以進(jìn)行針對(duì)于TTCN-3腳本的編譯。首先,構(gòu)建TTCN-3腳本的翻譯器,該翻譯器在對(duì)測(cè)試目標(biāo)文件進(jìn)行分析驗(yàn)證后,將TTCN-3腳本按照預(yù)定義的翻譯規(guī)則翻譯成Java文件。結(jié)合翻譯器的翻譯規(guī)則,構(gòu)建Java運(yùn)行支持庫(kù),該支持庫(kù)實(shí)現(xiàn)翻譯方案中引用到的基礎(chǔ)類,并完成對(duì)翻譯生成的代碼的執(zhí)行和執(zhí)行結(jié)果的記錄等工作。通過結(jié)合翻譯器翻譯后的代碼以及運(yùn)行支持庫(kù)代碼,即可獲得完整的符合TTCN-3語義的Java源代碼。該方法省去了編譯器設(shè)計(jì)中間語言以及目標(biāo)代碼優(yōu)化的過程,實(shí)現(xiàn)起來簡(jiǎn)單方便,可自我定制翻譯的語法范圍。
      文檔編號(hào)G06F9/45GK102929680SQ20121040074
      公開日2013年2月13日 申請(qǐng)日期2012年10月19日 優(yōu)先權(quán)日2012年10月19日
      發(fā)明者周毅, 鄒志斌, 李璐璐, 冉正 申請(qǐng)人:普華基礎(chǔ)軟件股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1