專利名稱:一種從非合流圖文法到合流圖文法的轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)軟件技術(shù)領(lǐng)域,涉及一種軟件形式化方法與工具,具體是一種從非合流圖文法到合流圖文法的轉(zhuǎn)換方法。
背景技術(shù):
圖文法是對(duì)圖進(jìn)行定義和語法結(jié)構(gòu)分析的形式化方法。近年來,圖文法已廣泛應(yīng)用于可視化語言領(lǐng)域,是軟件系統(tǒng)形式化建模、描述、分析、轉(zhuǎn)換和驗(yàn)證的形式化工具。圖文法主要包括上下文相關(guān)和上下文無關(guān)兩大類,每一類圖文法又包含若干個(gè)形式框架。一個(gè)圖文法形式框架一般由圖產(chǎn)生式的形式定義、圖柄定義、嵌入規(guī)則與子圖替換方法和所生成圖語言的形式定義,以及一個(gè)與之對(duì)應(yīng)的規(guī)約算法組成。而一個(gè)圖文法形式框架的圖文法實(shí)例則由一個(gè)初始圖和一組具體的圖產(chǎn)生式構(gòu)成,其中,一個(gè)圖產(chǎn)生式由一對(duì)(稱為左圖和右圖)滿足一定約束的圖構(gòu)成。在上下文相關(guān)圖文法中,基礎(chǔ)的形式框架主要包括LGG (Layered Graph Grammar)> RGG (Reserved Graph Grammar)、CAGG (Context-Attributed Graph Grammar)和EGG (Edged Graph Grammar)四種,其中LGG產(chǎn)生式中上下文是顯示化表示的,即以結(jié)點(diǎn)及與之相連的邊的形式來描述產(chǎn)生式的上下文情況,而其他形式框架產(chǎn)生式中上下文則是隱式化表示的,即以一種非結(jié)點(diǎn)形式的抽象表示方式,如附加于結(jié)點(diǎn)之上的頂點(diǎn)和屬性等。作為一種軟件形式化方法和工具,圖文法的一般應(yīng)用途徑為依據(jù)一個(gè)圖文法形式框架的產(chǎn)生式形式設(shè)計(jì)一組具體的圖產(chǎn)生式(也就是圖文法實(shí)例)來描述應(yīng)用中所涉及的圖形式的結(jié)構(gòu),并應(yīng)用形式框架配備的規(guī)約算法對(duì)所關(guān)注的圖進(jìn)行分析以驗(yàn)證其相關(guān)結(jié)構(gòu)特性。在上述上下文相關(guān)圖文法的形式框架中,LGG規(guī)約算法極為復(fù)雜,時(shí)間復(fù)雜度為指數(shù)級(jí),實(shí)用性較差;RGG、CAGG和EGG產(chǎn)生式集合在滿足合流(Confluence)約束時(shí)規(guī)約算法時(shí)間復(fù)雜度為多項(xiàng)式級(jí),分析效率較為高效,但在不滿足合流條件時(shí)規(guī)約算法時(shí)間復(fù)雜度也為指數(shù)級(jí),效率很低。所謂合流的產(chǎn)生式集合是指集合中每一對(duì)產(chǎn)生式均是合流的;而一對(duì)產(chǎn)生式是合流的當(dāng)且僅當(dāng)對(duì)于一個(gè)同時(shí)包含它們圖柄的圖,以任意順序應(yīng)用這兩個(gè)產(chǎn)生式對(duì)該圖進(jìn)行規(guī)約將得到同樣的結(jié)果。如果一個(gè)圖文法實(shí)例的產(chǎn)生式集合是合流的,則圖文法實(shí)例也是合流的。然而遺憾的是,并非所有隱式圖文法形式框架的文法實(shí)例都能滿足合流約束,甚至實(shí)際應(yīng)用中一些相對(duì)較為簡(jiǎn)單的圖文法實(shí)例也不能滿足合流約束,如描述基本過程流圖的圖文法實(shí)例。因此,合流約束在一定程度上縮小了隱式圖文法形式框架中高效規(guī)約算法的適用范圍,從而削弱了算法在實(shí)際應(yīng)用中的有效性。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種適用于隱式上下文相關(guān)圖文法的從非合流圖文法到合流圖文法的轉(zhuǎn)換機(jī)制,使原本非合流的圖文法也可應(yīng)用只適用于合流圖文法的高效規(guī)約算法,以解決隱式上下文相關(guān)圖文法規(guī)約算法在實(shí)際應(yīng)用中的有效性不足的問題。
為了解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案
一種從非合流圖文法到合流圖文法的轉(zhuǎn)換方法,用于隱式上下文相關(guān)圖文法,首先判斷圖文法實(shí)例是否合流,如果非合流,則找出所有非合流的產(chǎn)生式對(duì)以及相應(yīng)的導(dǎo)致非合流的產(chǎn)生式合并圖的集合;然后依據(jù)非合流的產(chǎn)生式合并圖在非合流的產(chǎn)生式對(duì)中引入變量構(gòu)造約束將非合流的產(chǎn)生式集合轉(zhuǎn)換成合流的產(chǎn)生式集合。本發(fā)明方法將一個(gè)隱式上下文相關(guān)圖文法的非合流的圖文法實(shí)例轉(zhuǎn)換成為合流的圖文法實(shí)例,從而使受限于合流約束的高效規(guī)約算法能適用于轉(zhuǎn)換后的圖文法實(shí)例,因此大幅度地提高了基于隱式上下文相關(guān)圖文法的圖結(jié)構(gòu)分析的效率。理論證明,上述轉(zhuǎn)換方法不改變圖文法實(shí)例所描述的圖語言。該方法適用于隱式的上下文相關(guān)圖文法形式框架,包括RGG,CAGG和EGG以及基于這些形式框架的擴(kuò)充框架。
圖1為本發(fā)明的從非合流圖文法到合流圖文法轉(zhuǎn)換方法的流程圖; 圖2為具體實(shí)施方式
中所述判斷產(chǎn)生式對(duì)是否合流的流程圖3為具體實(shí)施方式
中所述構(gòu)造產(chǎn)生式的合流約束的流程圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明
在具體實(shí)施方式
上,本發(fā)明涉及的轉(zhuǎn)換方法可以實(shí)現(xiàn)為一個(gè)獨(dú)立的軟件工具、或者一個(gè)軟件構(gòu)件以集成到對(duì)應(yīng)的隱式上下文相關(guān)圖文法系統(tǒng)平臺(tái)或工具包中。以RGG圖文法形式框架為例詳解本發(fā)明的一般實(shí)施方式。在實(shí)施之前,需要根據(jù)工具的應(yīng)用場(chǎng)景選擇合適的圖文法實(shí)例存儲(chǔ)的結(jié)構(gòu)和方式。鑒于圖文法的圖形特性一般可以采用圖形式的存儲(chǔ)結(jié)構(gòu)和文件形式的存儲(chǔ)方式。本發(fā)明的轉(zhuǎn)換方法,其流程如圖1所示, 具體步驟如下
1)輸入某種隱式上下文相關(guān)圖文法形式框架的一個(gè)圖文法實(shí)例 (AP);
2)判斷實(shí)例的產(chǎn)生式集P是否合流,如果是,則轉(zhuǎn)換過程結(jié)束;否則,構(gòu)建所有非合流產(chǎn)生式對(duì)的集合;具體為
2. 1)記卿s為所有非合流產(chǎn)生式對(duì)的集合,置/^/ZS為空; 2. 2)記為非合流產(chǎn)生式對(duì)的不可約簡(jiǎn)合并圖集的集合,置為空; 2.3)對(duì)廣中任一對(duì)產(chǎn)生式Α.與/興J·,判斷其是否合流,如果非合流,則將ΙΑ.,^/} 加入集合中;
2. 4)如果/7C/ZS為空,則/^是合流的,直接輸出Λ轉(zhuǎn)換過程結(jié)束,否則,轉(zhuǎn)2. 5 ;
2.5)々ncs %ncPS中所有產(chǎn)生式的集合,即/7中所有非合流產(chǎn)生式的集合;
3)焚ncps構(gòu)造合流約束,即對(duì)flc/zs中任一對(duì)\Pi’Pj\Rnrds中的,構(gòu)造約束C 使與^相對(duì)于互斥;具體為
3.1)置與巧公共變量集K和基于K的語義約束C為空;
3. 2) Jsinrdij中任一圖G,構(gòu)造變量集r及約束c使c與Pj. c相對(duì)于G互斥; 3. 3)將Z和C分別并入產(chǎn)生式和/T7的變量集和約束集;4)令 α為轉(zhuǎn)換后的/7C/ZS中所有產(chǎn)生式的集合,從/^中刪除產(chǎn)生式集合/7^,再并入集合tcs ;輸出凡在上述步驟中,步驟2. 3的具體過程為
2. 3. 1)構(gòu)造與Pj的合并集巧7,即Α.右圖與巧右圖的所有可能重疊所構(gòu)成圖的集
合;
2. 3. 2) Inrdij^mij中的不可約簡(jiǎn)子集,初值置空;
2. 3. 3)對(duì)于任一 "中的圖仏判斷G是否關(guān)于與&可約簡(jiǎn),如果G不可約簡(jiǎn),則將 G加入集合/ /,7中;
2.3. 4)如果不為空,則將\Pi, Pj)加入集合/^/zs中;并將加入集合中。在上述步驟中,步驟3. 2的具體過程為
3.2. 1)判斷與^/.C是否相對(duì)于G互斥,如果互斥,則繼續(xù)判斷中下一圖;否則,轉(zhuǎn)下一步;
3. 2. 2)則引入變量r并構(gòu)造r上的約束c使A. c與Pj. c相對(duì)于G互斥; 3. 2. 3)將r和c分別加入集合Z和C。以下詳述上述步驟中的實(shí)施要點(diǎn)。本發(fā)明的轉(zhuǎn)換方法主要由兩個(gè)部分組成首先, 判斷給定圖文法實(shí)例的合流性,合流則無需進(jìn)行轉(zhuǎn)換,否則收集每一個(gè)非合流的產(chǎn)生式對(duì)以及導(dǎo)致其非合流的合并圖集合,具體步驟如圖1的上虛線框所示;然后,依據(jù)產(chǎn)生式對(duì)的非合流合并圖集構(gòu)造變量及對(duì)應(yīng)約束以使其合流,并將約束附加于相應(yīng)產(chǎn)生式上,得到新的產(chǎn)生式集合,具體步驟如圖1的下虛線框所示。在第一步中,判斷一對(duì)產(chǎn)生式[PnPj]是否合流的詳細(xì)步驟如圖2所示,其中的兩個(gè)子過程需要進(jìn)一步說明首先,構(gòu)造和^/的合并集,也就是右圖與&右圖所有可能的公共子圖重疊所構(gòu)成圖的集合,可選的具體實(shí)現(xiàn)途徑之一是,先計(jì)算這兩個(gè)圖的共同結(jié)點(diǎn)集,再計(jì)算該集合的冪集,然后依據(jù)冪集中的每個(gè)元素構(gòu)造它們的重疊圖就得到合并集;其次,判斷產(chǎn)生式對(duì)的合并集中任一圖^的可約簡(jiǎn)性,可以按照與PpPi兩種順序?qū)進(jìn)行規(guī)約,若結(jié)果相同則G是可約簡(jiǎn)的,否則就是不可約簡(jiǎn)的。在第二步中,構(gòu)造變量集和約束集使產(chǎn)生式對(duì)合流的詳細(xì)步驟如圖3所示,針對(duì)產(chǎn)生式對(duì)[PpPJ]的每一個(gè)不可約簡(jiǎn)的合并圖G先判斷產(chǎn)生式Α.和^/上的已有約束是否相對(duì)于^互斥,一個(gè)直接的判定方法是構(gòu)造它們的交集,若交集為空,則Α.和^/的約束相對(duì)于^互斥。如果不互斥,則需要引入變量構(gòu)造互斥的約束,然后將變量與約束加入相應(yīng)集合中。約束的構(gòu)造與圖文法產(chǎn)生式的形式是極其相關(guān)的,就RGG而言,可以選擇的變量包括結(jié)點(diǎn)和頂點(diǎn)的標(biāo)號(hào)、頂點(diǎn)上連接邊的方向、頂點(diǎn)的度以及其他源于應(yīng)用背景的語義需求,通常變量的值域?yàn)檎突蜃址?,而約束則可以是變量的取值范圍。由于規(guī)約過程的逆過程即應(yīng)用產(chǎn)生式生成圖的過程,在實(shí)際場(chǎng)景中應(yīng)用產(chǎn)生式生成圖的過程必然隱含了某種與應(yīng)用相對(duì)應(yīng)的語義特征,這一特征就形成了變量上的約束。此外,圖3中所述的構(gòu)造合流產(chǎn)生式對(duì)的另一個(gè)可行途徑是先依據(jù)應(yīng)用產(chǎn)生式的隱含語義構(gòu)造一組綜合約束,再根據(jù)此約束找出合并圖集中仍然不滿足互斥要求的子集,然后為子集中的圖逐個(gè)地構(gòu)造互斥約束。應(yīng)當(dāng)指出,上述實(shí)施方式是本發(fā)明所述轉(zhuǎn)換方法在RGG圖文法形式框架上的一種實(shí)施方式,這一實(shí)施方式也適用于RGG以外的其他隱式上下文相關(guān)圖文法形式框架;但是, 隱式上下文相關(guān)圖文法形式框架的合流轉(zhuǎn)換方法并不局限于上述實(shí)施方式,在遵循本發(fā)明技術(shù)原理情形下的其他實(shí)施方式,均落在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種從非合流圖文法到合流圖文法的轉(zhuǎn)換方法,用于隱式上下文相關(guān)圖文法,其特征在于,首先判斷圖文法實(shí)例是否合流,如果非合流,則找出所有非合流的產(chǎn)生式對(duì)以及相應(yīng)的導(dǎo)致非合流的產(chǎn)生式合并圖的集合;然后依據(jù)非合流的產(chǎn)生式合并圖在非合流的產(chǎn)生式對(duì)中引入變量構(gòu)造約束將非合流的產(chǎn)生式集合轉(zhuǎn)換成合流的產(chǎn)生式集合。
2.如權(quán)利要求1所述從非合流圖文法到合流圖文法的轉(zhuǎn)換方法,其特征在于,具體包含以下步驟1)輸入某種隱式上下文相關(guān)圖文法形式框架的一個(gè)圖文法實(shí)例 (AFf);2)判斷實(shí)例的產(chǎn)生式集P是否合流,如果是,則轉(zhuǎn)換過程結(jié)束;否則,構(gòu)建所有非合流產(chǎn)生式對(duì)的集合;具體為2. 1)記卿s為所有非合流產(chǎn)生式對(duì)的集合,置/^/ZS為空; 2. 2)記為非合流產(chǎn)生式對(duì)的不可約簡(jiǎn)合并圖集的集合,置為空; 2.3)對(duì)廣中任一對(duì)產(chǎn)生式Α.與/興J·,判斷其是否合流,如果非合流,則將ΙΑ.,^/} 加入集合中;2. 4)如果/7C/ZS為空,則/^是合流的,直接輸出Λ轉(zhuǎn)換過程結(jié)束,否則,轉(zhuǎn)2. 5 ;2.5)々ncs %ncPS中所有產(chǎn)生式的集合,即/7中所有非合流產(chǎn)生式的集合;3)焚ncps構(gòu)造合流約束,即對(duì)flc/zs中任一對(duì)\Pi’Pj\Rnrds中的,構(gòu)造約束C 使與^相對(duì)于互斥;具體為3.1)置與巧公共變量集K和基于K的語義約束C為空;3. 2) Jsinrdij中任一圖G,構(gòu)造變量集r及約束c使c與Pj. c相對(duì)于G互斥; 3. 3)將Z和C分別并入產(chǎn)生式和/T7的變量集和約束集;4)令為轉(zhuǎn)換后的/7C/ZS中所有產(chǎn)生式的集合,從/^中刪除產(chǎn)生式集合/7^,再并入集合tcs ;輸出凡
3.如權(quán)利要求2所述從非合流圖文法到合流圖文法的轉(zhuǎn)換方法,其特征在于,步驟 2. 3包括以下步驟2. 3. 1)構(gòu)造與/T7的合并集巧7,即Α.右圖與巧右圖的所有可能重疊所構(gòu)成圖的集合;2. 3. 2) Inrdij^mij中的不可約簡(jiǎn)子集,初值置空;2. 3. 3)對(duì)于任一 "中的圖仏判斷G是否關(guān)于與&可約簡(jiǎn),如果G不可約簡(jiǎn),則將 G加入集合/ /,7中;2.3. 4)如果不為空,則將\Pi, Pj)加入集合/^/zs中;并將加入集合中;步驟3. 2包括以下步驟3.2. 1)判斷與^/.C是否相對(duì)于G互斥,如果互斥,則繼續(xù)判斷中下一圖;否則,轉(zhuǎn)下一步;3. 2. 2)引入變量r并構(gòu)造r上的約束c使A. c與/T7.. c相對(duì)于G互斥; 3. 2. 3)將r和c分別加入集合Z和C。
全文摘要
本發(fā)明公開了一種從非合流圖文法實(shí)例到合流圖文法實(shí)例的轉(zhuǎn)換方法。該方法包含兩個(gè)主要步驟首先判斷圖文法實(shí)例是否合流,如果非合流,則找出所有非合流的產(chǎn)生式對(duì)以及相應(yīng)的導(dǎo)致非合流的產(chǎn)生式合并圖的集合;然后依據(jù)非合流的產(chǎn)生式合并圖在非合流的產(chǎn)生式對(duì)中引入變量構(gòu)造約束將非合流的產(chǎn)生式集合轉(zhuǎn)換成合流的產(chǎn)生式集合。本發(fā)明提出的方法將一個(gè)隱式上下文相關(guān)圖文法的非合流圖文法實(shí)例轉(zhuǎn)換成為合流圖文法實(shí)例,使受限于合流約束的高效規(guī)約算法可以適用于轉(zhuǎn)換后的合流圖文法實(shí)例,從而大幅度地提高了基于隱式上下文相關(guān)圖文法的圖分析效率,使相應(yīng)的圖文法軟件工具具有更強(qiáng)的實(shí)用性。
文檔編號(hào)G06F9/44GK102289377SQ20111029834
公開日2011年12月21日 申請(qǐng)日期2011年9月28日 優(yōu)先權(quán)日2011年9月28日
發(fā)明者曾曉勤, 鄒陽 申請(qǐng)人:河海大學(xué)