国产精品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>

      彈性的源代碼語法樹解析系統(tǒng)及方法

      文檔序號:8339514閱讀:421來源:國知局
      彈性的源代碼語法樹解析系統(tǒng)及方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及一種計算機測試技術(shù),更具體的說,涉及一種有彈性的源代碼解析系 統(tǒng)及方法。
      【背景技術(shù)】
      [0002] 在IT測試領(lǐng)域,白盒測試是一個非常重要的測試方法,它可以提供測試用例的編 寫,可以進行測試完整性的評判,在這樣的需求下,出現(xiàn)了很多自動化的測試工具,而這些 工具能夠完成自動化的一個重要方面是實現(xiàn)源代碼的語法樹分析。
      [0003] 還有很多領(lǐng)域需要將源代碼的語法樹分析作為基礎(chǔ)工作,才能進行后續(xù)的過程處 理,例如通過源代碼生成流程圖,或者通過源代碼進行項目逆向。
      [0004] 目前,業(yè)界有很多源代碼解析的方案,有些是手動方式,有些是通過正則表達式進 行解析,有些是借助編譯器的分析結(jié)果進行解析。這些方案各有優(yōu)缺。例如,手動方式雖然 靈活但工作量具體,只能適用于比較簡單的語法規(guī)則。正則表達式具有表達簡潔的優(yōu)勢,但 對于某些錯誤卻非常難處理。借助編譯器的方式最大的優(yōu)勢是解析結(jié)果非常精確,也非常 豐富,但要求設(shè)置卻也相對較多,不適用于輕量級應(yīng)用。

      【發(fā)明內(nèi)容】

      [0005] 本發(fā)明針對上述現(xiàn)有技術(shù)中存在的技術(shù)問題,提供一種彈性的源代碼語法樹分析 系統(tǒng)及方法,滿足不同精細程度的源代碼解析需求,它能夠根據(jù)調(diào)用時給出信息的豐富程 度,自動對解析結(jié)果進行精細粒度調(diào)節(jié),對于能夠精細的部分采用細粒度表達,對于信息不 充分部分米用粗粒度表達。
      [0006] 為達到上述目的,本發(fā)明所采用的技術(shù)方案如下:
      [0007] -種彈性的源代碼語法樹解析系統(tǒng),包括源代碼預(yù)處理模塊、編譯器解析模塊、編 譯器解析結(jié)果分析模塊、二次手動解析模塊,所述源代碼預(yù)處理模塊,根據(jù)用戶的輸入對源 代碼進行預(yù)處理;所述編譯器解析模塊,通過編譯器對經(jīng)過預(yù)處理的源代碼進行分析,生成 編譯器支持的分析結(jié)果;所述編譯器解析結(jié)果分析模塊,通過對編譯器解析的結(jié)果進行分 析,確定源代碼中被精細表達的部分、不能被編譯器識別的部分以及被解析不完整的部分; 所述二次手動解析模塊,對編譯器識別不完整的部分進行解析修正,對編譯器不能解析的 部分進行手動解析。
      [0008] 所述編譯器解析結(jié)果分析模塊包括源代碼字元化模塊和解析結(jié)果分析對比模塊。
      [0009] 一種彈性的源代碼語法樹解析方法,采用上述的系統(tǒng)來完成,包括步驟如下:
      [0010] 第一步,通過源代碼預(yù)處理模塊對源代碼進行預(yù)處理;
      [0011] 第二步,通過編譯器解析模塊對源代碼進行解析;
      [0012] 第三步,通過編譯器解析結(jié)果分析模塊對解析結(jié)果進行分析定位;
      [0013] 第四步,通過二次手動解析模塊將源代碼進行完整解析。
      [0014] 所述第二步對源代碼進行解析的方法是:對編譯器進行流程更改,讓其對經(jīng)過預(yù) 處理的源代碼進行分析,生成統(tǒng)一形式的源代碼語法樹結(jié)構(gòu)信息。
      [0015] 所述第三步對解析結(jié)果進行分析定位的方法是:按照源代碼的語法規(guī)范,將源代 碼進行字元化,然后通過與生成的語法樹結(jié)構(gòu)信息進行對比,找出其中沒有被編譯器識別 出的代碼部分,進行標記。
      [0016] 所述第四步將源代碼進行完整解析的方法是:根據(jù)源代碼的語法規(guī)范,首先將源 代碼進行字元化,然后根據(jù)字元信息進行語句級別的解析,再生成編譯器支持的分析結(jié)果。
      [0017] 本發(fā)明技術(shù)方案的有益效果如下:
      [0018] 有些場景需要對源代碼的結(jié)構(gòu)了解到非常細節(jié),有些場景對源代碼結(jié)構(gòu)并不需要 太細節(jié),例如通過源代碼生成流程圖的應(yīng)用,只需要語句級別的解析就可以了,并且這類應(yīng) 用往往輸入是一個片段代碼,本身輸入就決定了不可能做到非常細節(jié)的語法樹結(jié)構(gòu)解析。 本發(fā)明因為在解析結(jié)果上有非常好的彈性,可以應(yīng)用在對解析細節(jié)要求很好的場景,例如 源代碼插粧等,也可以應(yīng)用到類似源代碼轉(zhuǎn)換為流程圖的應(yīng)用中,源代碼逆向工程等項目 中。
      【附圖說明】
      [0019] 通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、 目的和優(yōu)點將會變得更明顯:
      [0020] 圖1是本發(fā)明一實施例的系統(tǒng)組成框圖;
      [0021 ] 圖2是本發(fā)明的方法流程圖。
      【具體實施方式】
      [0022] 下面結(jié)合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領(lǐng)域的技術(shù) 人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當指出的是,對本領(lǐng)域的普通技術(shù) 人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進。這些都屬于本發(fā)明 的保護范圍。
      [0023] 圖1所示,本發(fā)明所提供的系統(tǒng),包括源代碼預(yù)處理、編譯器解析、編譯器解析結(jié) 果分析、二次手動解析四個模塊。
      [0024] 源代碼預(yù)處理模塊,它根據(jù)用戶的輸入對源代碼進行預(yù)處理,對源代碼中的宏等 進行處理。通過源代碼編譯器對源代碼執(zhí)行預(yù)處理命令,例如GCC-E test, cpp。
      [0025] 編譯器解析模塊,利用了現(xiàn)有的成熟得編譯器GCC、Clang,對編譯器進行流程更 改,讓它對經(jīng)過預(yù)處理的源代碼進行分析,生成統(tǒng)一形式的源代碼語法樹信息。
      [0026] 編譯器解析結(jié)果分析模塊,分為了兩個部分,一個是源代碼字元化模塊,另一個是 解析結(jié)果分析對比模塊,首先通過字元化,對編譯器解析的結(jié)果進行分析,確定源代碼中可 以被精細表達的部分,不能被編譯器識別的部分,以及被解析不完整的部分。
      [0027] 二次手動解析模塊,它對編譯器識別不完整部分進行解析修正,對編譯器不能解 析的部分進行手動解析。
      [0028] 圖2所示,本發(fā)明涉及的具有彈性的源代碼解析方法步驟如下:
      [0029] 首先對源代碼進行預(yù)處理;
      [0030] 然后通過編譯器或解析器對源代碼進行解析;
      [0031] 在然后對解析結(jié)果進行分析定位;
      [0032] 最后通過二次補充解析將源代碼進行完整解析。
      [0033] 為了能夠更好的說明上述步驟以及效果,以下舉例說明,該實施例有以下源代 碼:
      【主權(quán)項】
      1. 一種彈性的源代碼語法樹解析系統(tǒng),其特征在于,包括源代碼預(yù)處理模塊、編譯器解 析模塊、編譯器解析結(jié)果分析模塊、二次手動解析模塊,所述源代碼預(yù)處理模塊,根據(jù)用戶 的輸入對源代碼進行預(yù)處理;所述編譯器解析模塊,通過編譯器對經(jīng)過預(yù)處理的源代碼進 行分析,生成編譯器支持的分析結(jié)果;所述編譯器解析結(jié)果分析模塊,通過對編譯器解析的 結(jié)果進行分析,確定源代碼中被精細表達的部分、不能被編譯器識別的部分以及被解析不 完整的部分;所述二次手動解析模塊,對編譯器識別不完整的部分進行解析修正,對編譯器 不能解析的部分進行手動解析。
      2. 根據(jù)權(quán)利要求1所述的彈性的源代碼語法樹解析系統(tǒng),其特征在于,所述編譯器解 析結(jié)果分析模塊包括源代碼字元化模塊和解析結(jié)果分析對比模塊。
      3. -種彈性的源代碼語法樹解析方法,其特征在于,采用如權(quán)利要求1或2所述的系統(tǒng) 來完成,包括步驟如下: 第一步,通過源代碼預(yù)處理模塊對源代碼進行預(yù)處理; 第二步,通過編譯器解析模塊對源代碼進行解析; 第三步,通過編譯器解析結(jié)果分析模塊對解析結(jié)果進行分析定位; 第四步,通過二次手動解析模塊將源代碼進行完整解析。
      4. 根據(jù)權(quán)利要求3所述的彈性的源代碼語法樹解析方法,其特征在于,所述第二步對 源代碼進行解析的方法是:對編譯器進行流程更改,讓其對經(jīng)過預(yù)處理的源代碼進行分析, 生成統(tǒng)一形式的源代碼語法樹結(jié)構(gòu)信息。
      5. 根據(jù)權(quán)利要求4所述的彈性的源代碼語法樹解析方法,其特征在于,所述第三步對 解析結(jié)果進行分析定位的方法是:按照源代碼的語法規(guī)范,將源代碼進行字元化,然后通過 與生成的語法樹結(jié)構(gòu)信息進行對比,找出其中沒有被編譯器識別出的代碼部分,進行標記。
      6. 根據(jù)權(quán)利要求5所述的彈性的源代碼語法樹解析方法,其特征在于,所述第四步將 源代碼進行完整解析的方法是:根據(jù)源代碼的語法規(guī)范,首先將源代碼進行字元化,然后根 據(jù)字元信息進行語句級別的解析,再生成編譯器支持的分析結(jié)果。
      【專利摘要】本發(fā)明公開一種彈性的源代碼語法樹解析系統(tǒng)及方法,包括源代碼預(yù)處理模塊、編譯器解析模塊、編譯器解析結(jié)果分析模塊、二次手動解析模塊,所述源代碼預(yù)處理模塊,根據(jù)用戶的輸入對源代碼進行預(yù)處理;所述編譯器解析模塊,通過編譯器對經(jīng)過預(yù)處理的源代碼進行分析,生成編譯器支持的分析結(jié)果;所述編譯器解析結(jié)果分析模塊,通過對編譯器解析的結(jié)果進行分析,確定源代碼中被精細表達的部分、不能被編譯器識別的部分以及被解析不完整的部分;所述二次手動解析模塊,對編譯器識別不完整的部分進行解析修正,對編譯器不能解析的部分進行手動解析。本發(fā)明滿足不同精細程度的源代碼解析需求,自動對解析結(jié)果進行精細粒度調(diào)節(jié)。
      【IPC分類】G06F11-36
      【公開號】CN104657267
      【申請?zhí)枴緾N201510070573
      【發(fā)明人】楊波波, 秦煒, 徐曙清
      【申請人】上海創(chuàng)景計算機系統(tǒng)有限公司
      【公開日】2015年5月27日
      【申請日】2015年2月10日
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1