两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于語(yǔ)法樹(shù)的程序正確性驗(yàn)證方法

文檔序號(hào):6574869閱讀:991來(lái)源:國(guó)知局
專利名稱:一種基于語(yǔ)法樹(shù)的程序正確性驗(yàn)證方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別是涉及一種程序設(shè)計(jì)正確性驗(yàn) 證的方法。
技術(shù)背景程序正確性驗(yàn)證是IT技能測(cè)評(píng)自動(dòng)化的一項(xiàng)重要內(nèi)容,也是其中的 一個(gè)理論、技術(shù)難點(diǎn)。程序的正確性,是指對(duì)于給定領(lǐng)域的所有的輸入, 程序都能給出正確的輸出,程序都能給出正確的輸出。然而正如Dijkstm 所指出"我們可以通過(guò)測(cè)試發(fā)現(xiàn)程序中存在的錯(cuò)誤,但無(wú)法證明不存在 錯(cuò)誤。"通常情況下,即使是一個(gè)非常簡(jiǎn)單的程序,都可能具有無(wú)限多個(gè) 可能的輸入。目前,進(jìn)行程序正確性驗(yàn)證通常有兩種方案第一種,完全拋棄檢查輸入一輸出的方法,通過(guò)形式語(yǔ)言理解來(lái)判斷程序的正確性;第二種 方案則維持采用檢査輸入一輸出的方法,但不是檢査所有的可能輸入, 而是檢査領(lǐng)域問(wèn)題的各種"典型"輸入。限于形式語(yǔ)言理解研究的發(fā)展 水平,第一種方案的研究、發(fā)展非常緩慢。國(guó)內(nèi)外學(xué)者將研究的重點(diǎn)放 在第二種方案上,也就是典型測(cè)試數(shù)據(jù)的自動(dòng)生成,并提出了一些切實(shí) 可的方法,如符號(hào)執(zhí)行方法、迭代張弛法等,但這些方法的效率以及驗(yàn) 證的準(zhǔn)確性不夠。 發(fā)明內(nèi)容本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)的不足,提供一種基于語(yǔ)法樹(shù)的程序正確性驗(yàn)證方法。本發(fā)明解決其技術(shù)問(wèn)題采用的技術(shù)方案如下1)采用XML的格式將源程序轉(zhuǎn)換為程序語(yǔ)法樹(shù),具體方法是分析待驗(yàn)證程序的語(yǔ)義信息,轉(zhuǎn)換成XML格式的語(yǔ)義表達(dá),映射為一棵無(wú)序標(biāo)簽樹(shù)。其中,程序名及程序中的各元素轉(zhuǎn)化為相應(yīng)層次的父節(jié)點(diǎn)和子節(jié)點(diǎn);程序中的操作符、操作數(shù)為葉子節(jié)點(diǎn)。使用一個(gè)虛擬根 節(jié)點(diǎn)將所有節(jié)點(diǎn)進(jìn)行組合。2) 對(duì)程序語(yǔ)法樹(shù)進(jìn)行優(yōu)化,具體方法是采用常量合并、同類(lèi)語(yǔ)義合并、無(wú)用變量刪除以及復(fù)雜表達(dá)式拆分 的方法對(duì)l)中的程序語(yǔ)法樹(shù)進(jìn)行分析,排除語(yǔ)義的多樣性,使同一功能 呈現(xiàn)同 一 的語(yǔ)法樹(shù)表現(xiàn)形式。3) 使用XPath語(yǔ)句對(duì)2)中的優(yōu)化后的程序語(yǔ)法樹(shù)進(jìn)行表達(dá),每一 條XPath語(yǔ)句都對(duì)應(yīng)一個(gè)權(quán)重,具體方法是① 對(duì)于XPath語(yǔ)句組中的每一條XPath語(yǔ)句依次檢驗(yàn),如果XPath 語(yǔ)句在待驗(yàn)證語(yǔ)法樹(shù)中査詢結(jié)果與在匹配樹(shù)中的査詢結(jié)果一致,則此 XPath語(yǔ)句對(duì)應(yīng)的權(quán)重值累加到作為結(jié)果的匹配度中;② 一組XPath語(yǔ)句査詢完成,生成匹配樹(shù),將得到的匹配度作為最 小匹配代價(jià)。4) 利用XPath路徑的匹配方法驗(yàn)證源程序整體的正確性,具體方法是將匹配樹(shù)與每一待驗(yàn)證樹(shù)進(jìn)行比較。取匹配樹(shù)的每條路徑并在待驗(yàn)證 樹(shù)中査找對(duì)應(yīng)路徑根節(jié)點(diǎn)。如果未找到該根節(jié)點(diǎn),則完全不匹配,源程 序整體錯(cuò)誤,退出驗(yàn)證。如果找到該根節(jié)點(diǎn),則進(jìn)入5)。5) 對(duì)待驗(yàn)證樹(shù)中的單條路徑進(jìn)行驗(yàn)證,如果待驗(yàn)證樹(shù)中的節(jié)點(diǎn)n是查 詢樹(shù)的第k條路徑的根節(jié)點(diǎn),并且與以節(jié)點(diǎn)n為根的子樹(shù)和匹配樹(shù)中的 第k條路徑相匹配,則待驗(yàn)證樹(shù)與匹配樹(shù)在其第k條路徑上匹配,即驗(yàn) 證第k條路徑所對(duì)應(yīng)的源程序正確。6) 通過(guò)5)對(duì)待驗(yàn)證樹(shù)中的全路徑進(jìn)行驗(yàn)證,如果部分路徑上匹配, 則對(duì)應(yīng)該路徑的源程序正確;如果所有路徑上匹配,則源程序整體正確。本發(fā)明是一種基于語(yǔ)法樹(shù)的程序正確性驗(yàn)證方法,其主要功能是通過(guò) 該方法以程序的語(yǔ)法樹(shù)作為程序正確性的檢驗(yàn)對(duì)象,運(yùn)用無(wú)序標(biāo)簽樹(shù)語(yǔ) 義匹配算法,驗(yàn)證目標(biāo)程序的正確性。本方法實(shí)現(xiàn)程序的正確性自動(dòng)驗(yàn)證,為計(jì)算機(jī)程序自動(dòng)測(cè)評(píng)提供了方法保障。(1) 語(yǔ)義形式化。程序語(yǔ)法樹(shù)是程序結(jié)構(gòu)的樹(shù)狀表示,是形式化、規(guī) 范化的程序語(yǔ)義表示,是程序設(shè)計(jì)者思想的形式化表示,比源程序具有 更低的層次,能夠形象地抽象出程序結(jié)構(gòu),便于程序正確性的驗(yàn)證;(2) 高效性。引入Xpath使得在匹配XML文檔結(jié)構(gòu)樹(shù)時(shí)能夠準(zhǔn)確地找到某一個(gè)節(jié)點(diǎn)元素。將XPath比作文件管理路徑,通過(guò)文件管理路徑,按照一定的規(guī)則査找到所需要的文件。同理,根據(jù)XPath所制定的規(guī)則,能夠快速找到XML結(jié)構(gòu)文檔樹(shù)中的任何一個(gè)節(jié)點(diǎn)。每一條XPath語(yǔ)句都有一個(gè)返回結(jié)果,若查找到該節(jié)點(diǎn)則返回值為T(mén)rue,或節(jié)點(diǎn)的值;當(dāng)査詢節(jié)點(diǎn)不存在時(shí),返回結(jié)果為False。
具體實(shí)施方式
1方法中涉及到相關(guān)的定義及說(shuō)明定義l (映射)設(shè)11= (V, E, root (Tl)), T2= (W, F, root (T2)) 為兩棵標(biāo)簽樹(shù), 一個(gè)從T1到T2的映射M定義為^^「x『,并且對(duì)所有 H wl), (v2,w2)e M滿足以下的條件D V1 = V20M = W2,表示兩棵樹(shù)中參與映射的節(jié)點(diǎn)是一一對(duì)應(yīng)的; 2 ) vl =朋面tor(v2) O =朋ce加r(w2),表示映射保持節(jié)點(diǎn)對(duì)之間的祖 先后代關(guān)系。映身才M的定義域"。附"'")定義為"owflz'^M) = {v e F1e『(v, w) £ A/] ^ F; 日央射M的值;t或W""ge(A/)定義為Range(M) =e『| 3v e F : (v, w)e vlf} e『;定義2 (映射代價(jià))n"r,i ,賜,(r1)),r2"^F,觸々2)),為兩棵標(biāo)簽樹(shù),M為一個(gè)從Tl到T2的映射,則定義M的映射代價(jià) y(M):,(M)= Z ))+ZH^W——義))+ Z"W^7))假設(shè)Q是一棵匹配樹(shù),Qsub是Q的節(jié)點(diǎn)集中的一個(gè)子集。T是待 驗(yàn)證的考生答案程序語(yǔ)法樹(shù),Tsub是T的節(jié)點(diǎn)集的一個(gè)子集。定義3(路徑包含匹配)如果存在一個(gè)Qsub到Tsub的映射g,滿 足以下3個(gè)條件,稱映射g是Q到T的一個(gè)路徑包含匹配,Q為被包含樹(shù),D為包含樹(shù)O vl = v2 〈=> (vl) = g (v2) vl, v2是Qsub中的節(jié)點(diǎn)(g是 --個(gè)單射);2) label (vl) " label (g (vl))"表示兩個(gè)標(biāo)簽之間的近似距離在閥值范圍內(nèi);3) vl 二 ancestor (v2) 〈 = 〉 g (vl) = ancestor (g (v2"樹(shù)的路徑包含匹配,放寬了節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系,要求保持節(jié)點(diǎn)的 祖先后代關(guān)系。程序正確性的驗(yàn)證轉(zhuǎn)化為匹配樹(shù)與待驗(yàn)證語(yǔ)法樹(shù)之間的 包含匹配問(wèn)題。定義4 (樹(shù)的包含匹配代價(jià))e"r,&。。,(n)),r"『,F,脂/(r幼為兩棵 標(biāo)簽樹(shù),則樹(shù)Q到樹(shù)T的樹(shù)包含代價(jià)rOw,A4fe,"=應(yīng)z+(M)1 M: 27J,其中A(M)的定義見(jiàn)定義2 。如果M是樹(shù)Q到樹(shù)D的樹(shù)包含匹配,并且有y(M卜:ra^M(e,T);則稱M是一個(gè)樹(shù)Q到樹(shù)T的具有最小匹配代價(jià)的樹(shù)包含匹配。顯然兩棵樹(shù)之間的匹配代價(jià)越小,兩棵樹(shù)的匹配度越高,匹配越好越相近。在實(shí)際操作中,根據(jù)樹(shù)的包含的定義,代碼實(shí)現(xiàn)上述的包含匹配算 法,根據(jù)映射代價(jià)的定義,計(jì)算匹配樹(shù)與待驗(yàn)證語(yǔ)法樹(shù)之間的匹配代價(jià), 最小匹配代價(jià)就是兩棵樹(shù)的匹配度,這是一個(gè)復(fù)雜的實(shí)現(xiàn)過(guò)程,在實(shí)際 中嘗試采用了另外一種簡(jiǎn)便的方法。用-一組XPath語(yǔ)句來(lái)表示一顆匹配樹(shù),每一條XPath語(yǔ)句都對(duì)應(yīng)一 個(gè)權(quán)重(0-1之間),該權(quán)重表示原匹配樹(shù)中對(duì)應(yīng)節(jié)點(diǎn)的重要性;用一個(gè) XPath語(yǔ)句組中的每一條XPath語(yǔ)句依次對(duì)XML表示的待驗(yàn)證語(yǔ)法樹(shù)進(jìn) 行査詢,如果查詢成功,即Xpath語(yǔ)句在待驗(yàn)證語(yǔ)法樹(shù)中査詢結(jié)果與在 匹配樹(shù)中的査詢結(jié)果一致,則這條XPath語(yǔ)句對(duì)應(yīng)的權(quán)重值累加到作為結(jié)果的匹配度中。--組XPath語(yǔ)句查詢完成,也就是一顆匹配樹(shù)與待驗(yàn) 證語(yǔ)法樹(shù)匹配完成,可以把得到的匹配度看作近似的最小匹配代價(jià)。實(shí) 際閱巻系統(tǒng)中經(jīng)使用驗(yàn)證,這是一種替代復(fù)雜方法的切實(shí)可行的解決方案。2基于XPath路徑的程序正確性驗(yàn)證算法引入XPath,是的在匹配XML文檔結(jié)構(gòu)樹(shù)時(shí)能夠準(zhǔn)確地找到某一個(gè)節(jié) 點(diǎn)元素??梢园裍Path比作文件管理路徑通過(guò)文件管理路徑,可以按 照一定的規(guī)則查找到所需要的文件;同樣,依據(jù)XPath所制定的規(guī)則, 也可以很方便地找到XML結(jié)構(gòu)文檔樹(shù)中的任何 - "個(gè)節(jié)點(diǎn)。每一條XPath 語(yǔ)句都有一個(gè)返回結(jié)果,若査找到該節(jié)點(diǎn)則返回值為T(mén)rue,或節(jié)點(diǎn)的值; 當(dāng)查詢節(jié)點(diǎn)不存在時(shí),返回結(jié)果為False。匹配樹(shù)Q和每一待驗(yàn)證樹(shù)T進(jìn)行比較。取匹配樹(shù)Q的每條路徑p并 在待驗(yàn)證樹(shù)T中查找對(duì)應(yīng)路徑根節(jié)點(diǎn)。若沒(méi)找到該根節(jié)點(diǎn),說(shuō)明完全不 匹配,則退出查詢;假設(shè)匹配樹(shù)Q有k條路徑,如果待驗(yàn)證樹(shù)T中的節(jié) 點(diǎn)n是査詢樹(shù)Q的k條路徑的根節(jié)點(diǎn),并且以n為根的子樹(shù)和匹配樹(shù)Q 中的k條路徑匹配,則說(shuō)明待驗(yàn)證樹(shù)與匹配樹(shù)在其k條路徑上匹配。具體算法實(shí)現(xiàn)如下輸入匹配樹(shù)Q,待驗(yàn)證樹(shù)T;輸出 匹配度R;(1) R 二 0(2) 用XPath語(yǔ)句寫(xiě)出匹配樹(shù)Q的所有從根節(jié)點(diǎn)到葉節(jié)點(diǎn)的路徑;(3) k為匹配樹(shù)Q的路徑總數(shù);(4) for匹配樹(shù)Q中按字母順序排列的每條路徑p;(5) 執(zhí)行XPath語(yǔ)句在待驗(yàn)證樹(shù)T中查找相應(yīng)的節(jié)點(diǎn),若找到就在 其相應(yīng)的匹配度上加上當(dāng)前XPath語(yǔ)句的權(quán)重;(6) 若沒(méi)有找到對(duì)應(yīng)節(jié)點(diǎn)則退出循環(huán);(7) endfor。
權(quán)利要求
1.一種基于語(yǔ)法樹(shù)的程序正確性驗(yàn)證方法,其特征在于該方法的具體步驟包括1)采用XML的格式將源程序轉(zhuǎn)換為程序語(yǔ)法樹(shù),具體方法是分析待驗(yàn)證程序的語(yǔ)義信息,轉(zhuǎn)換成XML格式的語(yǔ)義表達(dá),映射為一棵無(wú)序標(biāo)簽樹(shù);其中,程序名及程序中的各元素轉(zhuǎn)化為相應(yīng)層次的父節(jié)點(diǎn)和子節(jié)點(diǎn);程序中的操作符、操作數(shù)為葉子節(jié)點(diǎn);使用一個(gè)虛擬根節(jié)點(diǎn)將所有節(jié)點(diǎn)進(jìn)行組合;2)對(duì)程序語(yǔ)法樹(shù)進(jìn)行優(yōu)化,具體方法是采用常量合并、同類(lèi)語(yǔ)義合并、無(wú)用變量刪除以及復(fù)雜表達(dá)式拆分的方法對(duì)1)中的程序語(yǔ)法樹(shù)進(jìn)行分析,排除語(yǔ)義的多樣性,使同一功能呈現(xiàn)同一的語(yǔ)法樹(shù)表現(xiàn)形式;3)使用XPath語(yǔ)句對(duì)2)中的優(yōu)化后的程序語(yǔ)法樹(shù)進(jìn)行表達(dá),每一條XPath語(yǔ)句都對(duì)應(yīng)一個(gè)權(quán)重,具體方法是①對(duì)于XPath語(yǔ)句組中的每一條XPath語(yǔ)句依次檢驗(yàn),如果XPath語(yǔ)句在待驗(yàn)證語(yǔ)法樹(shù)中查詢結(jié)果與在匹配樹(shù)中的查詢結(jié)果一致,則此XPath語(yǔ)句對(duì)應(yīng)的權(quán)重值累加到作為結(jié)果的匹配度中;②一組XPath語(yǔ)句查詢完成,生成匹配樹(shù),將得到的匹配度作為最小匹配代價(jià);4)利用XPath路徑的匹配方法驗(yàn)證源程序整體的正確性,具體方法是將匹配樹(shù)與每一待驗(yàn)證樹(shù)進(jìn)行比較,取匹配樹(shù)的每條路徑并在待驗(yàn)證樹(shù)中查找對(duì)應(yīng)路徑根節(jié)點(diǎn);如果未找到該根節(jié)點(diǎn),則完全不匹配,源程序整體錯(cuò)誤,退出驗(yàn)證;如果找到該根節(jié)點(diǎn),則進(jìn)入5);5)對(duì)待驗(yàn)證樹(shù)中的單條路徑進(jìn)行驗(yàn)證,如果待驗(yàn)證樹(shù)中的節(jié)點(diǎn)n是查詢樹(shù)的第k條路徑的根節(jié)點(diǎn),并且與以節(jié)點(diǎn)n為根的子樹(shù)和匹配樹(shù)中的第k條路徑相匹配,則待驗(yàn)證樹(shù)與匹配樹(shù)在其第k條路徑上匹配,即驗(yàn)證第k條路徑所對(duì)應(yīng)的源程序正確;6)通過(guò)5)對(duì)待驗(yàn)證樹(shù)中的全路徑進(jìn)行驗(yàn)證,如果部分路徑上匹配,則對(duì)應(yīng)該路徑的源程序正確;如果所有路徑上匹配,則源程序整體正確。
全文摘要
本發(fā)明涉及一種程序設(shè)計(jì)正確性驗(yàn)證的方法。目前進(jìn)行程序正確性驗(yàn)證方法效率低、驗(yàn)證的準(zhǔn)確性不夠。本發(fā)明方法具體包括采用XML的格式將源程序轉(zhuǎn)換為程序語(yǔ)法樹(shù);對(duì)程序語(yǔ)法樹(shù)進(jìn)行優(yōu)化;使用XPath語(yǔ)句對(duì)優(yōu)化后的程序語(yǔ)法樹(shù)進(jìn)行表達(dá),每一條XPath語(yǔ)句都對(duì)應(yīng)一個(gè)權(quán)重;利用XPath路徑的匹配方法驗(yàn)證源程序整體的正確性;對(duì)待驗(yàn)證樹(shù)中的單條路徑進(jìn)行驗(yàn)證;對(duì)待驗(yàn)證樹(shù)中的全路徑進(jìn)行驗(yàn)證。本發(fā)明方法可以準(zhǔn)確驗(yàn)證源程序的準(zhǔn)確性,同時(shí)效率比現(xiàn)有方法大大提高。
文檔編號(hào)G06F11/36GK101261602SQ20081006094
公開(kāi)日2008年9月10日 申請(qǐng)日期2008年4月8日 優(yōu)先權(quán)日2008年4月8日
發(fā)明者卿 吳, 周必水, 胡維華, 謝紅標(biāo) 申請(qǐng)人:杭州電子科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
遂溪县| 玉门市| 马边| 玉树县| 旺苍县| 义马市| 博野县| 乐都县| 周至县| 长葛市| 建平县| 绵竹市| 淄博市| 德阳市| 贡觉县| 望江县| 白玉县| 太仓市| 富蕴县| 信阳市| 旅游| 安达市| 潼南县| 崇文区| 丰都县| 民和| 玉山县| 潮州市| 若羌县| 藁城市| 临湘市| 曲麻莱县| 资兴市| 古田县| 龙川县| 名山县| 简阳市| 会宁县| 琼结县| 美姑县| 建湖县|