[發明專利]強加語言子集的方法有效
| 申請號: | 201310475645.6 | 申請日: | 2013-10-12 |
| 公開(公告)號: | CN103810014B | 公開(公告)日: | 2019-03-08 |
| 發明(設計)人: | K.米切爾 | 申請(專利權)人: | 是德科技股份有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41 |
| 代理公司: | 北京坤瑞律師事務所 11494 | 代理人: | 封新琴 |
| 地址: | 美國加利*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 強加 語言 子集 方法 | ||
本發明涉及強加語言子集的方法。一種操作數據處理系統以便在編譯程序中檢查對規則的集合的違反的方法,該違反不構成生成編譯程序的編譯器檢測的違反。該方法包括獲取依據程序的反編譯表示中的規則定義的一個限制規則集。該方法還包括將編譯程序反編譯成定義該限制規則集的編譯程序的反編譯表示,在編譯程序的反編譯表示中檢查對該限制規則集的違反,以確定是否違反了任一規則,以及提供指示違反了規則之一的輸出。
技術領域
本發明涉及強加語言子集的方法。
背景技術
計算機程序通常用高級語言編寫,該高級語言使用戶可以使用廣泛的指令和非常自由地編寫包含相對較少限制的代碼。許多程序依賴于由第三方編寫的類的庫。程序員通常直接使用這些例程或在庫中寫入類的子類。庫例程的作者不能控制在使用該庫的程序員定義的子類中編寫的代碼。
隨著計算機程序越來越復雜,將可以編寫的代碼的至少一部分限制為更一般語言的子集是有用的狀況越來越多。例如,考慮包含并行運行在計算機上的兩個線程的程序。考慮兩個線程在每個線程內使用相同全局變量,以及在執行線程期間可以改變該變量的情況。由于線程不能檢測變量的變化,所以如果線程之一假設變量的數值在執行那個線程期間不變,則可能會出問題。編寫線程的語言通常使程序員可以編寫出假設在執行線程期間變量不變的代碼。這樣的代碼在兩個并行運行線程的背景下顯然是危險的。因此,將可以在這種情況下編寫的代碼限制成不依賴于在執行線程期間保持不變的全局變量的代碼是有利的。例如,可以將代碼限制成不允許引用執行并行線程的子類中的任何非常數全局變量。
一般說來,將包括類的集合的庫提供給程序員。程序員直接使用這個庫或在庫中定義類的子類。如上所述,該庫的作者不能控制該子類中的代碼。但是,如果子類出問題了,則該庫的作者往往被認為要分擔責任。因此,提供對使用庫或該庫的子類的代碼強加一組語言限制的機制是有利的。
發明內容
本發明包括操作數據處理系統以便在編譯程序中檢查對規則的集合的違反的方法,該違反不構成生成編譯程序的編譯器檢測的違反。該方法包括獲取依據程序的反編譯表示中的規則定義的一個限制規則集。該方法還包括將編譯程序反編譯成定義該限制規則集的編譯程序的反編譯表示,在編譯程序的反編譯表示中檢查對該限制規則集的違反,以確定是否違反了任一規則,以及提供指示違反了規則之一的輸出。
反編譯表示的一個方面包括編譯程序的一部分的抽象語法樹(AST)表示,并該限制規則集依據AST表示定義。
在本發明的另一方面中,該限制規則集只應用于編譯程序的一部分,以及反編譯編譯程序包括反編譯編譯程序的那個部分而不反編譯編譯程序的另一部分。
在本發明的更進一步方面中,編譯程序反編譯的部分包括類的子類的集合,以及反編譯程序包括識別與該子類的集合有關的指令在編譯程序中的地點。
在本發明的進一步方面中,該編譯程序進一步包括識別與該子類的集合有關的方法在編譯程序中的地點的元數據,以及將反射機制用于識別要在子類中檢查對該限制規則集的違反的方法。在本發明的另一方面中,編譯程序中的不同類受不同限制規則集支配。
在本發明的另一方面中,如果編譯程序未違反該限制規則集,則該數據處理系統生成證書。該證書可被運行編譯程序的運行時系統(runtime system)讀取。如果該證書不存在,則該運行時系統可以防止編譯程序運行。
附圖說明
圖1例示了按照本發明一個實施例的規則測試過程的流程。
具體實施方式
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于是德科技股份有限公司,未經是德科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310475645.6/2.html,轉載請聲明來源鉆瓜專利網。





