[發明專利]一種編譯器的可視化語法樹的生成方法和重構方法有效
| 申請號: | 201310629025.3 | 申請日: | 2013-11-29 |
| 公開(公告)號: | CN103645986A | 公開(公告)日: | 2014-03-19 |
| 發明(設計)人: | 劉陳虎;周濤;黃太新;劉紅剛;冀建偉 | 申請(專利權)人: | 北京廣利核系統工程有限公司;中國廣核集團有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F9/45;G06F17/27 |
| 代理公司: | 北京元中知識產權代理有限責任公司 11223 | 代理人: | 王明霞 |
| 地址: | 100094 北京市海*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 編譯器 可視化 語法 生成 方法 | ||
技術領域
本發明涉及計算機領域,并且特別地,設計一種編譯器的可視化語法樹的生成方法和生成裝置。
背景技術
在當前的計算機領域,應用高級語言編譯器能夠實現將程序語言轉化為機器語言的操作,但是,如果編譯器設計中存在錯誤,可能會造成原始程序轉化成的計算機語言與程序設計者的初衷不一致,而這種錯誤在編譯器發布后很難檢測和糾正,因此,對編譯器的測試顯得至關重要。
在現有技術中,編譯器的設計主要由詞法語法分析、和語義分析等模塊構成,其中詞法語法分析部分多采用flex&bison工具來完成,已較為成熟,而語義分析部分是編譯器設計的核心,所以,對語義分析的測試也是編譯器測試的重點,但是,語義分析作為編譯器實現過程中的一個中間模塊,其實現過程、模塊輸入以及語法樹結構往往具有一定的不透明性,這就為測試帶來了困難。
語義分析測試的重點在于測試對語法樹節點的分析過程,語義分析過程大致為:收集詞法語法分析后產生的語法樹節點信息,分析節點信息中屬性信息的各項數據,檢查語義的符合程度,如果有錯誤產生,報告相應的錯誤碼和錯誤信息。語義分析模塊的輸入為語法樹,而測試時,測試人員所編寫的待測試源代碼,是通過flex&bison工具來生成語法樹的,測試人員實際上對所生成語法樹的結構并不了解,也就無法真正了解語義分析模塊的輸入。
目前語義分析的測試方法主要有兩種:
(方法一)采用類似于黑盒測試的方法,根據語言參考手冊,錯誤碼等進行測試,以及一定的隨機測試。
(方法二)在第一種方法的基礎上,采用類似白盒測試的方式在代碼中對某些節點信息進行監視來輔助測試。
以同步數據流編程語言LUSTRE語言為例,LUSTRE語言總共有51種待分析的節點,一段簡單的LUSTRE代碼,節點數量都有數百個之多,如果采用類似黑盒測試的方式,按照錯誤碼進行測試或隨機編寫代碼測試,很難保證測到分析過程每個節點的分析情況,容易遺漏某些分支,而由于無法透明的了解分析過程,測試人員對這些遺漏的內容往往一無所知。另外,基于錯誤碼的測試過程中,某些錯誤碼可能對應多種類型的語義錯誤,測試人員有時可能只測試到了其中一兩個,就認為某個錯誤碼的測試通過了,而其中所覆蓋的語義錯誤類型,可能并不全面,這種原因造成的測試不全面,測試人員同樣無法了解和統計,這些都容易使測試產生風險,給產品質量帶來隱患。
另外一種監視節點信息的測試方式中,采用對源代碼進行單步調試的方式,通過使用指針一級一級的追蹤,來得到某個節點的屬性信息。這種方法雖然可以直接了解到語法樹的屬性信息,但每次只能觀測一個節點,而語義分析過程中節點眾多,如果了解更多節點需要設置多個監視器,人為地在監視器中構造復雜的多級指針來觀測節點信息,費時費力,并且,所監視到的屬性值為原始數據值,需要不斷查閱設計文檔和數據結構資料或者語言參考手冊才能將其翻譯成可供測試人員了解的屬性含義,并且這種方式只能了解單個屬性值,無法了解節點與節點之間的相對關系,無法明確得知節點在整個語法樹中所處的位置,從而無法確定整體的樹形結構,所以,使節點的信息透明化,仍然存在很大的局限性,因此采用這種方式,雖然能真實觀測到節點的屬性值信息,但由于存在多種局限,實際上很難實現。
鑒于此提出本發明。
發明內容
本發明的目的為克服現有技術的不足,提供一種編譯器的可視化語法樹的生成方法和重構方法。
為了實現該目的,本發明采用如下技術方案:
根據本發明的一個方面,提供了一種編譯器的可視化語法樹的生成方法,該生成方法包括:
步驟(1),解析編譯器語義分析模塊接收到的語法樹,確定語法樹的節點信息,節點信息至少包括:節點類型名、節點位置、以及節點屬性值;
步驟(2),翻譯節點屬性值,得到相應的節點屬性信息,并為語法樹中每個節點的節點類型名添加頭部標識,得到節點名稱,其中,頭部標識用于為每個節點提供唯一標識;
步驟(3),根據節點名稱、以及節點位置,應用預定節點排列算法,對語法樹的多個節點進行組織,得到語法樹的語法樹層級結構,并在語法樹層級結構中,關聯上節點屬性信息;
步驟(4),整理樹形層級結構,生成可視化語法樹;
步驟(5),存儲可視化語法樹。
其中,節點位置的確定方式包括:
通過遍歷算法,收集語法樹中每個節點的父節點、子節點、或者兄弟節點的信息,并根據信息,推算出該節點在語法樹中的相對位置。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京廣利核系統工程有限公司;中國廣核集團有限公司,未經北京廣利核系統工程有限公司;中國廣核集團有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310629025.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:抽氣機格柵
- 下一篇:一種甲基磺酸化石墨烯材料及其制備方法和光感應開關





