專利名稱:一種多類型msvl語言解釋系統(tǒng)及多類型msvl語言解釋方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)系統(tǒng)形式化建模與驗(yàn)證技術(shù)領(lǐng)域,主要涉及形式化方法對(duì)多數(shù)據(jù)類型的系統(tǒng)進(jìn)行建模與驗(yàn)證,具體是一種擴(kuò)展內(nèi)置數(shù)據(jù)類型的MSVL建模和驗(yàn)證方法和系統(tǒng),可用于對(duì)多數(shù)據(jù)類型的系統(tǒng)進(jìn)行建模與驗(yàn)證。
背景技術(shù):
時(shí)序邏輯作為一種系統(tǒng)建模與驗(yàn)證的形式化工具,已廣泛應(yīng)用于軟件工程、數(shù)字電路設(shè)計(jì)等領(lǐng)域。時(shí)序邏輯主要有三大分支:線性時(shí)序邏輯(LTL),分支時(shí)序邏輯(CTL)以及區(qū)間時(shí)序邏輯(ITL)。投影時(shí)序邏輯(PTL)對(duì)ITL進(jìn)行了擴(kuò)展,基于區(qū)間時(shí)序邏輯,投影時(shí)序邏輯包括無限模型,過去操作,和一個(gè)新的投影操作來處理并發(fā)計(jì)算。它適用于描述帶有時(shí)間區(qū)間的軟硬件系統(tǒng)性質(zhì),可以處理順序、并發(fā)、投影等結(jié)構(gòu),具有較強(qiáng)、較靈活的表達(dá)力。時(shí)序邏輯語言MSVL是PTL的一個(gè)可執(zhí)行子集,是一個(gè)集建模(Modeling)、仿真(Simulation)和驗(yàn)證(Verification)為一體的時(shí)序邏輯程序設(shè)計(jì)語言。時(shí)序邏輯程序設(shè)計(jì)語言MSVL可以將程序的書寫、性質(zhì)描述和驗(yàn)證統(tǒng)一在時(shí)序邏輯的框架中進(jìn)行,對(duì)軟硬件系統(tǒng)使用時(shí)序邏輯程序設(shè)計(jì)語言進(jìn)行建模,對(duì)系統(tǒng)期望的性質(zhì)采用時(shí)序邏輯公式來描述,將模型和性質(zhì)統(tǒng)一在時(shí)序邏輯的框架中,從而實(shí)現(xiàn)對(duì)軟硬件系統(tǒng)的形式化驗(yàn)證。目前,許多現(xiàn)有的軟硬件系統(tǒng)都是由主流程序設(shè)計(jì)語言C、C++編寫實(shí)現(xiàn)的,通過開發(fā)一些語言轉(zhuǎn)換工具,將C、C++編寫的程序轉(zhuǎn)換為MSVL程序,自動(dòng)實(shí)現(xiàn)MSVL對(duì)C語言編寫的系統(tǒng)進(jìn)行描述。然后再利用命題投影時(shí)序邏輯對(duì)該系統(tǒng)的性質(zhì)進(jìn)行刻畫,即可以實(shí)現(xiàn)對(duì)該系統(tǒng)的建模和驗(yàn)證。目前,我們?cè)谡Z言轉(zhuǎn)換工具方面的工作已經(jīng)取得了一定的進(jìn)展和成果,由于主流的程序設(shè)計(jì)語言如C、C++以及Java等語言,都提供了豐富的內(nèi)置數(shù)據(jù)類型,如字符型,整型、浮點(diǎn)型等基本類型,豐富而復(fù)雜的內(nèi)置數(shù)據(jù)類型使得程序設(shè)計(jì)語言能夠靈活處理不同數(shù)據(jù)類型的系統(tǒng)。自上世紀(jì)70年代,大量的時(shí)序邏輯程序設(shè)計(jì)語言相繼被提出。時(shí)序邏輯是一種用于描述和驗(yàn)證實(shí)時(shí)系統(tǒng)實(shí)時(shí)性的重要方法,很多基于時(shí)序邏輯的編程語言都可以描述和證明同一邏輯框架下的程序。Cactus基于分支時(shí)間時(shí)序邏輯,XYZ/E, THLP, Chronolog,Tempura以及Tokio基于區(qū)間時(shí)序邏輯,TLA也是一種基于時(shí)序邏輯行為的描述語言。和上述形式化方法相比,MSVL在建模驗(yàn)證并行系統(tǒng)等方面具有顯著的優(yōu)勢(shì)。因?yàn)镸SVL是一個(gè)時(shí)序邏輯編程語言,有建模,仿真和驗(yàn)證三種功能。MSVL中含有豐富的時(shí)序操作符和語句,因此可以用于描述系統(tǒng)的順序、并發(fā)、非確定、非終止、自治、同步通信等特征。同時(shí),MSVL還包括賦值、條件、循環(huán)等語句,具有命令式程序設(shè)計(jì)語言的特征。使用MSVL語言,可以完成模型檢測(cè)中系統(tǒng)建模、性質(zhì)描述、性質(zhì)驗(yàn)證等一系列工作,在投影時(shí)序邏輯的基礎(chǔ)上,實(shí)現(xiàn)一種統(tǒng)一的模型檢測(cè)方法。作為一種形式化的工具,MSVL語言已被廣泛應(yīng)用于各種領(lǐng)域的建模與驗(yàn)證中。但是MSVL的數(shù)據(jù)類型比較單一,內(nèi)置基本數(shù)據(jù)類型僅為整型,不包括浮點(diǎn)型和字符型,存在局限性。因此在投影時(shí)序邏輯和MSVL中擴(kuò)展數(shù)據(jù)類型并開發(fā)相關(guān)的支持工具(例如模型檢測(cè)器)以及理論證明均是計(jì)算機(jī)系統(tǒng)形式化建模與驗(yàn)證技術(shù)領(lǐng)域的客觀需要,本發(fā)明正是在這方面進(jìn)行的研究和創(chuàng)新。目前MSVL的基本內(nèi)置數(shù)據(jù)類型僅限于整型,描述能力和表達(dá)能力弱,應(yīng)用不夠靈活,不能夠根據(jù)系統(tǒng)的實(shí)際需求提供相應(yīng)的其他數(shù)據(jù)類型,適應(yīng)面太窄,這嚴(yán)重地限制了 MSVL的描述能力和應(yīng)用領(lǐng)域。因此本發(fā)明的主要內(nèi)容是擴(kuò)展MSVL中的基本內(nèi)置數(shù)據(jù)類型,實(shí)現(xiàn)MSVL對(duì)復(fù)雜數(shù)據(jù)類型構(gòu)造的系統(tǒng)的建模與驗(yàn)證。發(fā)明內(nèi)容
本發(fā)明針對(duì)現(xiàn)有技術(shù)中數(shù)據(jù)類型單一,應(yīng)用范圍窄的技術(shù)問題,提供一種在程序設(shè)計(jì)語言MSVL中擴(kuò)展了浮點(diǎn),字符以及字符串多種內(nèi)置數(shù)據(jù)類型的多類型MSVL語言解釋系統(tǒng)及MSVL語目解釋方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種多類型MSVL語言解釋系統(tǒng),其包括,
變量類型聲明模塊,其設(shè)置有變量類型聲明命令以及類型聲明定義,所述變量類型聲明命令以MSVL變量聲明語句的形式規(guī)定了變量的類型,MSVL包括了 int,float, char以及string四種變量聲明語句,擴(kuò)展類型后MSVL中變量和常量的論域定義為DOMAIN,DOMAIN中的元素被定義為二元組,二元組的第一個(gè)分量表示變量的取值,而第二個(gè)分量標(biāo)記了變量的類型;
變量存儲(chǔ)模塊,其設(shè)置有變量類型標(biāo)記和變量取值,所述變量類型標(biāo)記根據(jù)變量聲明語句記錄該變量的類型,變量存儲(chǔ)變量的取值限制在其類型所對(duì)應(yīng)的論域內(nèi);
算術(shù)表達(dá)式處理模塊,其用于多種類型的數(shù)據(jù)構(gòu)造的算術(shù)表達(dá)式進(jìn)行運(yùn)算,其設(shè)置有:加法、減法、乘法、除法和取模運(yùn)算的定義和處理模塊,定義模塊規(guī)定了各項(xiàng)算術(shù)運(yùn)算的定義域和值域,算術(shù)運(yùn)算的處理模塊對(duì)操作數(shù)屬于定義域的表達(dá)式進(jìn)行解釋,返回結(jié)果為相應(yīng)值域中的一個(gè)常量;
賦值操作處理模塊,其對(duì)賦值操作進(jìn)行處理,賦值操作符左操作數(shù)是變量,右操作數(shù)是算術(shù)表達(dá)式,調(diào)用算術(shù)表達(dá)式處理模塊對(duì)右操作數(shù)進(jìn)行解釋,然后將運(yùn)算結(jié)果賦給變量;
強(qiáng)制類型轉(zhuǎn)換命令處理模塊,其對(duì)算術(shù)表達(dá)式進(jìn)行強(qiáng)制類型轉(zhuǎn)換,強(qiáng)制類型轉(zhuǎn)換命令以MSVL強(qiáng)制類型轉(zhuǎn)換語句的形式修改變量的解釋結(jié)果的類型和取值;以及,
框架命令處理模塊,其控制變量在未賦值的情況下,自動(dòng)繼承上一狀態(tài)的取值。
本發(fā)明還提供一種多類型MSVL語言解釋方法,其包括以下步驟,
步驟1、用MSVL語言中的類型聲明語句對(duì)變量進(jìn)行聲明,規(guī)定變量的類型,并且依據(jù)變量的所聲明的類型及其語義,將所述變量保存在MSVL符號(hào)表中;
步驟2、對(duì)變量和常量進(jìn)行引用,對(duì)引用變量和常量的形式進(jìn)行判斷,如果變量和常量是算術(shù)表達(dá)式中的操作數(shù),則調(diào)用算術(shù)表達(dá)式處理模塊對(duì)算術(shù)表達(dá)式進(jìn)行運(yùn)算;如果變量出現(xiàn)在賦值操作中,則調(diào)用賦值操作處理模塊完成對(duì)變量的賦值操作;如果變量由框架命令聲明,則調(diào)用框架命令處理模塊對(duì)變量增加框架性質(zhì);如果有強(qiáng)制類型轉(zhuǎn)換操作,則調(diào)用強(qiáng)制類型轉(zhuǎn)換命令處理模塊以MSVL強(qiáng)制類型轉(zhuǎn)換語句的形式修改變量的類型和取值。
在上述技術(shù)方案的基礎(chǔ)上,MSVL中變量定義為一個(gè)二元組,該二元組的第一個(gè)分量表示變量的取值,第二個(gè)分量標(biāo)記變量的類型,變量聲明命令以MSVL語句的形式限制了變量類型,類型聲明的定義按如下方式進(jìn)行://// X = X =< / //,Π >float y = y=< nil,F(xiàn)T >chur c = c =< nil, CT >s(rillg s = s =< ,"./,Si >其中,int, float, char以及string分別為MSVL中的整型、浮點(diǎn)型、字符型和字符串型的類型聲明語句,nil表示當(dāng)前狀態(tài)上變量的取值不確定。在上述技術(shù)方案的基礎(chǔ)上,所述算術(shù)表達(dá)式的處理方法按以下流程進(jìn)行:步驟1、對(duì)算術(shù)表達(dá)式的兩個(gè)操作數(shù)進(jìn)行判斷,如果是常量或者變量,直接解釋獲取其類型和取值,則執(zhí)行步驟3,如果操作數(shù)為算術(shù)表達(dá)式,則執(zhí)行步驟2 ;步驟2、分別對(duì)兩個(gè)操作數(shù) 調(diào)用算術(shù)表達(dá)式處理模塊對(duì)操作對(duì)象進(jìn)行處理,如果返回一個(gè)論域內(nèi)的常量,執(zhí)行步驟3,否則執(zhí)行步驟5 ;步驟3、對(duì)兩個(gè)操作數(shù)是否屬于所進(jìn)行的算術(shù)運(yùn)算的定義域,如果兩個(gè)操作數(shù)都屬于所進(jìn)行算術(shù)運(yùn)算的定義域,執(zhí)行步驟4,否則執(zhí)行步驟5 ;步驟4、依據(jù)所進(jìn)行算術(shù)運(yùn)算的運(yùn)算規(guī)則,構(gòu)造一個(gè)新的常量作為運(yùn)算返回結(jié)果,執(zhí)行步驟6 ;步驟5、語義不滿足,向用戶提示化簡(jiǎn)結(jié)果為false ;步驟6、算術(shù)表達(dá)式的處理流程結(jié)束。在上述技術(shù)方案的基礎(chǔ)上,所述多類型MSVL包括了(int), (float)以及(string)三種強(qiáng)制類型轉(zhuǎn)換語句,整型強(qiáng)制類型轉(zhuǎn)換命令的調(diào)用形式如下:(int)e (float)e (string)e操作對(duì)象為算術(shù)表達(dá)式,返回值為相應(yīng)論域內(nèi)的常量:其中(int)的定義域?yàn)镕LOAT U CHAR,值域?yàn)?INT,(float) e 的定義域?yàn)?INT U CHAR,值域?yàn)?FLOAT,(string)的定義域?yàn)镮NT U FLOAT U CHAR,值域?yàn)镾TR。在上述技術(shù)方案的基礎(chǔ)上,強(qiáng)制類型轉(zhuǎn)換命令的處理方法按以下流程進(jìn)行:步驟1、調(diào)用算術(shù)表達(dá)式處理模塊對(duì)操作對(duì)象進(jìn)行處理,如果算術(shù)表達(dá)式合法,則返回所述論域DOMAIN內(nèi)的常量,否則執(zhí)行步驟4 ;步驟2、對(duì)該常量進(jìn)行判斷,如果常量屬于該強(qiáng)制類型轉(zhuǎn)換命令的定義域,那么執(zhí)行步驟3,否則執(zhí)行步驟4;步驟3、構(gòu)造一個(gè)新的常量,其類型設(shè)置為強(qiáng)制類型轉(zhuǎn)換命令所對(duì)應(yīng)的類型,依據(jù)不同的強(qiáng)制轉(zhuǎn)換命令設(shè)置該常量的取值,將該常量作為強(qiáng)制類型轉(zhuǎn)換結(jié)果返回,執(zhí)行步驟5 ;步驟4、語義不滿足,向用戶提示化簡(jiǎn)結(jié)果為false ;步驟5、強(qiáng)制類型轉(zhuǎn)換命令的處理流程結(jié)束。在上述技術(shù)方案的基礎(chǔ)上,賦值語句處理模塊對(duì)賦值操作x=e進(jìn)行處理,規(guī)定賦值操作符左操作數(shù)X是變量,右操作數(shù)e是算術(shù)表達(dá)式,對(duì)于賦值操作符的執(zhí)行,流程如下:
步驟1、首先對(duì)于變量X和算術(shù)表達(dá)式e進(jìn)行解釋,判斷X和e的類型是否相等,如果類型相等,執(zhí)行步驟2,否則執(zhí)行步驟5 ;
步驟2、如果變量X和表達(dá)式e的類型相等,判斷表達(dá)式e的取值是否為論域DOMAIN中的一個(gè)常量,如果是,執(zhí)行步驟3,否則執(zhí)行步驟5 ;
步驟3、那么對(duì)變量X的取值進(jìn)行判斷,如果變量X的取值為nil時(shí),將e的取值賦給X,等式x=e滿足,賦值操作執(zhí)行成功;否則執(zhí)行步驟4 ;
步驟4、如果X的取值不為nil,那么判斷x的取值是否等于e的取值,如果相等,那么等式x=e滿足,賦值操作執(zhí)行成功賦值操作的執(zhí)行流程結(jié)束;如果取值不相等,進(jìn)行步驟5;
步驟5、I [X]古I [e],向用戶提示等式x=e是不滿足的。
在上述技術(shù)方案的基礎(chǔ)上,在擴(kuò)展了內(nèi)置數(shù)據(jù)類型后,MSVL中的變量被解釋為取值和類型兩個(gè)部分,在每一個(gè)狀態(tài)上,對(duì)于加框架的變量的處理按照如下流程進(jìn)行:
步驟1、對(duì)于每一個(gè)加框架的變量,記錄其上一個(gè)狀態(tài)的類型標(biāo)記和取值。在當(dāng)前狀態(tài)上,將變量的類型標(biāo)記設(shè)置為上一個(gè)狀態(tài)上該變量的類型標(biāo)記,并且將該變量的取值置為nil,即不確定,執(zhí)行步驟2;
步驟2、調(diào)用變量賦值模塊,遍歷當(dāng)前狀態(tài)上的所有賦值語句,如果變量是某個(gè)賦值操作符的左操作數(shù),執(zhí)行步驟3,否則執(zhí)行步驟4 ;
步驟3、利用賦值操作符處理模塊完成對(duì)該變量的賦值,執(zhí)行步驟5 ;
步驟4、在當(dāng)前狀態(tài)上沒有被賦值,那么變量的取值自動(dòng)繼承該變量上一個(gè)狀態(tài)的取值,執(zhí)行步驟5 ;
步驟5、加框架變量的處理流程結(jié)束。
與現(xiàn)有技術(shù)相比較,本發(fā)明提出的多類型MSVL語言解釋系統(tǒng)和多類型MSVL語言解釋方法可以增強(qiáng)投影時(shí)序邏輯程序設(shè)計(jì)語言MSVL的表達(dá)能力,使得MSVL可以更加靈活廣泛地對(duì)多數(shù)據(jù)類型的系統(tǒng)進(jìn)行建模和驗(yàn)證。與現(xiàn)有方法相比,本發(fā)明優(yōu)點(diǎn)如下所示:
(I)在投影時(shí)序邏輯和MSVL中擴(kuò)展內(nèi)置數(shù)據(jù)類型,增強(qiáng)了 MSVL的表達(dá)能力,使得MSVL可以對(duì)帶有浮點(diǎn)、字符和字符串?dāng)?shù)據(jù)的系統(tǒng)進(jìn)行描述,拓展了投影時(shí)序邏輯和MSVL建模和驗(yàn)證的系統(tǒng)范圍。
(2)將變量和常量的論域定義為取值和類型組成的二元組,并且將變量的解釋定義為二元組,使得每一個(gè)變量的類型作為該變量的固有性質(zhì),提高了變量進(jìn)行運(yùn)算和賦值的效率。
(3)針對(duì)于變量和常量的論域以及解釋的擴(kuò)展,本發(fā)明給出了賦值操作符、算數(shù)運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換函數(shù)的語義,使得擴(kuò)展類型后與類型相關(guān)的函數(shù)和運(yùn)算符與現(xiàn)有的MSVL語句相兼容。
(4)重新定義加框架語句frame的語義,對(duì)于加框架的變量,自動(dòng)繼承上一個(gè)狀態(tài)的類型,提高了賦值操作和算術(shù)運(yùn)算操作的效率。
圖1為本發(fā)明一種多類型MSVL語言解釋系統(tǒng)的組成示意圖2為本發(fā)明中賦值操作符執(zhí)行的流程圖;圖3為本發(fā)明中框架操作符執(zhí)行的流程圖。
具體實(shí)施方式
:一種多類型MSVL語言解釋系統(tǒng),在現(xiàn)有MSVL語言解釋系統(tǒng)中引入了浮點(diǎn)型和字符型兩種內(nèi)置數(shù)據(jù)類型,可實(shí)現(xiàn)對(duì)多數(shù)據(jù)類型的系統(tǒng)進(jìn)行自動(dòng)化建模與驗(yàn)證,參見圖1,多類型MSVL語言解釋系統(tǒng)包括變量類型聲明模塊,其設(shè)置有變量類型聲明命令以及類型聲明定義,所述變量類型聲明命令以MSVL變量聲明語句的形式規(guī)定了變量的類型,MSVL包括了 int, float, char以及string四種變量聲明語句,擴(kuò)展類型后MSVL中變量和常量的論域定義為DOMAIN,DOMAIN中的元素被定義為二元組,二元組的第一個(gè)分量表示變量的取值,而第二個(gè)分量標(biāo)記了變量的類型;變量存儲(chǔ)模塊,其設(shè)置有變量類型標(biāo)記和變量取值,所述變量類型標(biāo)記根據(jù)變量聲明語句記錄該變量的類型,變量存儲(chǔ)變量的取值限制在其類型所對(duì)應(yīng)的論域內(nèi);算術(shù)表達(dá)式處理模塊,其用于多種類型的數(shù)據(jù)構(gòu)造的算術(shù)表達(dá)式進(jìn)行運(yùn)算,其設(shè)置有:加法、減法、乘法、除法和取模運(yùn)算的定義和處理模塊,定義模塊規(guī)定了各項(xiàng)算術(shù)運(yùn)算的定義域和值域,算術(shù)運(yùn)算的處理模塊對(duì)操作數(shù)屬于定義域的表達(dá)式進(jìn)行解釋,返回結(jié)果為相應(yīng)值域中的一個(gè)常量; 賦值操作處理模塊,其對(duì)賦值操作進(jìn)行處理,賦值操作符左操作數(shù)是變量,右操作數(shù)是算術(shù)表達(dá)式,調(diào)用算術(shù)表達(dá)式處理模塊對(duì)右操作數(shù)進(jìn)行解釋,然后將運(yùn)算結(jié)果賦給變量;強(qiáng)制類型轉(zhuǎn)換命令處理模塊,其對(duì)算術(shù)表達(dá)式進(jìn)行強(qiáng)制類型轉(zhuǎn)換,強(qiáng)制類型轉(zhuǎn)換命令以MSVL強(qiáng)制類型轉(zhuǎn)換語句的形式修改變量的解釋結(jié)果類型和取值;以及,框架命令處理模塊,其控制變量在未賦值的情況下,自動(dòng)繼承上一狀態(tài)的取值。下面介紹基于本發(fā)明多類型MSVL語言解釋系統(tǒng)的一種多類型MSVL語言解釋方法,可用于對(duì)多數(shù)據(jù)類型的系統(tǒng)進(jìn)行建模與驗(yàn)證,多類型MSVL語言解釋方法按以下流程進(jìn)行:步驟1、用MSVL語言中的類型聲明語句對(duì)變量進(jìn)行聲明,規(guī)定變量的類型,并且依據(jù)變量的所聲明的類型及其語義,將所述變量保存在MSVL符號(hào)表中;步驟2、對(duì)變量和常量進(jìn)行引用,對(duì)引用變量和常量的形式進(jìn)行判斷,如果變量和常量是算術(shù)表達(dá)式中的操作數(shù),則調(diào)用算術(shù)表達(dá)式處理模塊對(duì)算術(shù)表達(dá)式進(jìn)行運(yùn)算;如果變量出現(xiàn)在賦值操作中,則調(diào)用賦值操作處理模塊完成對(duì)變量的賦值操作;如果變量由框架命令聲明,則調(diào)用框架命令處理模塊對(duì)變量增加框架性質(zhì);如果有強(qiáng)制類型轉(zhuǎn)換操作,則調(diào)用強(qiáng)制類型轉(zhuǎn)換命令處理模塊以MSVL強(qiáng)制類型轉(zhuǎn)換語句的形式修改變量的類型和取值。本發(fā)明的實(shí)現(xiàn)在于重新定義變量和常量的論域:為了在投影時(shí)序邏輯中擴(kuò)展得到整型,浮點(diǎn)型以及字符型等內(nèi)置數(shù)據(jù)類型,需要在投影時(shí)序邏輯中給出如下基本的集合定乂:整數(shù)集合:Z= {...,-1,0, I,....}非負(fù)整數(shù)集合:N= {O, I, 2, 3,...}
浮點(diǎn)數(shù)集合:
F = {yl.y2 I yl e Z Λ y2 e N Λ yl.y2 ^lO1 = | yl MO1+}^ Ai = sizeof (y2)}
數(shù)字集合=DIGIT= {0,I, 2,3,4,5,6,7,8,9}
字母集合:ALPHA= {a,...,z, A,....,Z}
符號(hào)集合:SYMBOL= {!,@,#,$,%,~,&,*,(,),...}
字符集合:C= DIGIT U ALPHA U SYMBOL
字符串集合:S = C*
布爾集合:B= {true, false}
其中Sizeof(X)表示x的位數(shù)。而當(dāng)一個(gè)變量或者常量的取值屬于不同的集合時(shí),為了區(qū)別常量和變量,也應(yīng)該對(duì)該變量或常量的類型進(jìn)行約束,每一個(gè)變量或常量需要有一個(gè)類型標(biāo)志,變量類型標(biāo)志的論域定義如下:
T = {IT, FT, CT, ST, NULL}
其中,IT為整型的標(biāo)志,F(xiàn)T為浮點(diǎn)型的標(biāo)志,CT為字符型的標(biāo)志,而ST為字符串類型的標(biāo)志,NULL表示該變量或常量的類型不確定。
在投影時(shí)序邏輯和MSVL中,變量和常量的論域中的元素都是一個(gè)二元組,包括取值和類型兩個(gè)部分?;谏鲜黾险?、浮點(diǎn)型、字符型和字符串型變量和常量的論域定義如下:
整型變量和常量的論域:INT = (Z U {nil}) X {IT}
浮點(diǎn)型變量和常量的論域:FL0AT = (F U {nil}) X {FT}
字符型變量和常量的論域:CHAR = (C U {nil}) X {CT}
字符串型變量和常量的論域:STR = (S U {nil}) X {ST}
投影時(shí)序邏輯中,基本變量和常量的論域DOMAIN的定義如下:
DoMAIN=INT U FLOAT U CHAR U STR U { < nil, NULL > }
本發(fā)明的實(shí)現(xiàn)在于重新定義變量和常量的解釋:
將一個(gè)基本變量X (X e V)在DOMAIN (DOMAIN = Value X Type)上的解釋定義為二元組< Ival, ITvpe >,用 /丨來表示在狀態(tài)Sk上對(duì)變量的解釋,用f ,表示在狀態(tài)Sk上對(duì)變量取值的解釋,用A表示在狀態(tài)Sk上對(duì)變量類型的解釋。
/fai是對(duì)變量X賦一個(gè)在D中的取值,類型擴(kuò)展后:
D=Z U F U C U S U {nil}
Ikval為對(duì)變量X定義一個(gè)變量類型,而變量類型的取值在集合T中:
T = {IT, FT, CT, ST, NULL}
將一個(gè)變量X在DOMAIN (DOMAIN = Value X Type)上的解釋定義為二元組< IVai, IType >,對(duì)靜態(tài)變量在一個(gè)區(qū)間上的解釋,規(guī)定靜態(tài)變量的在時(shí)序區(qū)間上的所有狀態(tài)上保持不變:
J[a] = -SiU/] = φ] =</:;ypJa] >=< /;n/[cvj, I!lyrJa] >
而動(dòng)態(tài)變量的取值在時(shí)序區(qū)間上是不同的:
/[-V] =.V4 [x] = /; [x] =< /;i,,[.\:], W >
本發(fā)明將變量和常量的論域定義為取值和類型組成的二元組,并且將變量的解釋定義為二元組,使得每一個(gè)變量的類型作為該變量的固有性質(zhì),提高了變量進(jìn)行運(yùn)算和賦值的效率。本發(fā)明的實(shí)現(xiàn)在于:MSVL中變量定義為一個(gè)二元組,該二元組的第一個(gè)分量表示變量的取值,第二個(gè)分量標(biāo)記變量的類型,變量聲明命令以MSVL語句的形式限制了變量類型,類型聲明的定義按如下方式進(jìn)行:m, x = X =< nil^ JT > β0α) y = y =< "http://, I i >char c = c =< nil, CT >string s = s =< nil, Si >其中,int, float, char以及string分別為MSVL中的整型、浮點(diǎn)型、字符型和字符串型的類型聲明語句,利用類型聲明語句對(duì)一個(gè)變量進(jìn)行聲明,實(shí)際上是將該變量定義為一個(gè)包括取值和類型的二元組,二元組的第一個(gè)分量記錄了該變量在當(dāng)前狀態(tài)上的取值,變量的初始取值為nil,即變量的取值不 確定,二元組的第二個(gè)分量記錄了變量的類型,而變量的類型則取決于于定義它的語句,IT為整型標(biāo)志,F(xiàn)T為浮點(diǎn)型標(biāo)志,CT為字符型標(biāo)志,而ST為字符串類型標(biāo)志。引入類型后,每個(gè)變量都是先聲明后引用,聲明規(guī)定了變量的類型,這樣在其他語句中引用時(shí),可以直接對(duì)變量進(jìn)行解釋獲取變量的類型,從而提高了程序的執(zhí)行效率。在投影時(shí)序邏輯程序設(shè)計(jì)語言中擴(kuò)展了內(nèi)置數(shù)據(jù)類型后,表達(dá)式的定義為:算術(shù)表達(dá)式可以是常量、變量的取值或函數(shù)返回值。擴(kuò)展類型后的表達(dá)式包括整型表達(dá)式、浮點(diǎn)型表達(dá)式、字符型表達(dá)式、字符串表達(dá)式。e:: = a I X I O X I Θ X I f (e”...,em)布爾表達(dá)式的遞歸定義如下:如果ei和e2是算術(shù)表達(dá)式,那么下列結(jié)構(gòu)屬于關(guān)系表達(dá)式:ej > e2, G1 ^ e2, G1〈 e2, G1 ^ e2, G1 = e2, G1 Φ e2一個(gè)關(guān)系表達(dá)式是一個(gè)布爾表達(dá)式;布爾常量“ true ”和“ fal se ”是布爾表達(dá)式。如果Id1和b2是布爾表達(dá)式,那么下列結(jié)構(gòu)也是布爾表達(dá)式:
—ib, M a 62, Bi V 02, M -> b2, b\ hi算術(shù)表達(dá)式處理模塊針對(duì)數(shù)據(jù)類型的擴(kuò)展,對(duì)于不同的類型,定義該類型上的可以進(jìn)行的算術(shù)運(yùn)算操作,算術(shù)表達(dá)式處理模塊對(duì)算術(shù)表達(dá)式的加法、減法、乘法、除法和取模運(yùn)算進(jìn)行處理。其中模運(yùn)算的定義域?yàn)?階\1見',值域?yàn)?見'。加法、減法、乘法和除法運(yùn)算的定義域?yàn)?INTXINT) U (FLOATXFLOAT),值域?yàn)镮NT U FLOAT。算術(shù)運(yùn)算返回結(jié)果為相應(yīng)值域中的一個(gè)常量。算術(shù)表達(dá)式的處理方法按以下流程進(jìn)行:步驟1、對(duì)算術(shù)表達(dá)式的兩個(gè)操作數(shù)進(jìn)行判斷,如果是常量或者變量,直接解釋獲取其類型和取值,則執(zhí)行步驟3,如果操作數(shù)為算術(shù)表達(dá)式,則執(zhí)行步驟2 ;
步驟2、分別對(duì)兩個(gè)操作數(shù)調(diào)用算術(shù)表達(dá)式處理模塊對(duì)操作對(duì)象進(jìn)行處理,如果返回一個(gè)論域內(nèi)的常量,執(zhí)行步驟3,否則執(zhí)行步驟5 ;
步驟3、對(duì)兩個(gè)操作數(shù)是否屬于所進(jìn)行的算術(shù)運(yùn)算的定義域,如果兩個(gè)操作數(shù)都屬于所進(jìn)行算術(shù)運(yùn)算的定義域,執(zhí)行步驟4,否則執(zhí)行步驟5 ;
步驟4、依據(jù)所進(jìn)行算術(shù)運(yùn)算的運(yùn)算規(guī)則,構(gòu)造一個(gè)新的常量作為運(yùn)算返回結(jié)果,執(zhí)行步驟6 ;
步驟5、語義不滿足,向用戶提示化簡(jiǎn)結(jié)果為false ;
步驟6、算術(shù)表達(dá)式的處理流程結(jié)束。
本發(fā)明的實(shí)現(xiàn)還在于:強(qiáng)制類型轉(zhuǎn)換命令處理模塊對(duì)算術(shù)表達(dá)式進(jìn)行強(qiáng)制類型轉(zhuǎn)換,強(qiáng)制類型轉(zhuǎn)換命令以MSVL強(qiáng)制類型轉(zhuǎn)換語句的形式修改變量的類型和取值,返回值為相應(yīng)轉(zhuǎn)換類型的常量。MSVL包括了(int),(float)以及(string)三種強(qiáng)制類型轉(zhuǎn)換語句。整型強(qiáng)制類型轉(zhuǎn)換命令的調(diào)用形式如下:
(int)e (float)e (string)e
操作對(duì)象為算術(shù)表達(dá)式,返回值為相應(yīng)論域內(nèi)的常量:其中(int)的定義域?yàn)镕LOAT U CHAR,值域?yàn)?INT,(float) e 的定義域?yàn)?INT U CHAR,值域?yàn)?FLOAT。(string)的定義域?yàn)镮NT U FLOAT U CHAR,值域?yàn)镾TR。強(qiáng)制類型轉(zhuǎn)換命令的處理方法按以下流程進(jìn)行:
步驟1、調(diào)用算術(shù)表達(dá)式處理模塊對(duì)操作對(duì)象進(jìn)行處理,如果算術(shù)表達(dá)式合法,則返回所述論域DOMAIN內(nèi)的常量,否則執(zhí)行步驟4 ;
步驟2、對(duì)該常量進(jìn)行判斷,如果常量屬于該強(qiáng)制類型轉(zhuǎn)換命令的定義域,那么執(zhí)行步驟3,否則執(zhí)行步驟4;
步驟3、構(gòu)造一個(gè)新的常量,其類型設(shè)置為強(qiáng)制類型轉(zhuǎn)換命令所對(duì)應(yīng)的類型,依據(jù)不同的強(qiáng)制轉(zhuǎn)換命令設(shè)置該常量的取值,將該常量作為強(qiáng)制類型轉(zhuǎn)換結(jié)果返回,執(zhí)行步驟5 ;
步驟4、語義不滿足,向用戶提示化簡(jiǎn)結(jié)果為false ;
步驟5、強(qiáng)制類型轉(zhuǎn)換命令的處理流程結(jié)束。
本發(fā)明的實(shí)現(xiàn)還在于:賦值語句處理模塊對(duì)賦值操作進(jìn)行處理,規(guī)定賦值操作符左邊必須是變量,右邊必須是表達(dá)式。賦值操作符是等價(jià)語句的一個(gè)特例。在擴(kuò)展了內(nèi)置數(shù)據(jù)類型后,對(duì)于變量X以及表達(dá)式e的解釋都變成了值和類型兩部分。參見圖2,對(duì)于一個(gè)賦值操作符的執(zhí)行,流程如下:
賦值語句處理模塊對(duì)賦值操作x=e進(jìn)行處理,規(guī)定賦值操作符左操作數(shù)X是變量,右操作數(shù)e是算術(shù)表達(dá)式,對(duì)于賦值操作符的執(zhí)行,流程如下:
步驟1、首先對(duì)于變量X和算術(shù)表達(dá)式e進(jìn)行解釋,判斷X和e的類型是否相等,如果類型相等,執(zhí)行步驟2,否則執(zhí)行步驟5 ;
步驟2、如果變量X和表達(dá)式e的類型相等,判斷表達(dá)式e的取值是否為論域DOMAIN中的一個(gè)常量,如果是,執(zhí)行步驟3,否則執(zhí)行步驟5 ;
步驟3、那么對(duì)變量X的取值進(jìn)行判斷,如果變量X的取值為nil時(shí),將e的取值賦給X,等式x=e滿足,賦值操作執(zhí)行成功;否則執(zhí)行步驟4 ;
步驟4、如果X的取值不為nil,那么判斷x的取值是否等于e的取值,如果相等,那么等式x=e滿足,賦值操作執(zhí)行成功賦值操作的執(zhí)行流程結(jié)束;如果取值不相等,進(jìn)行步驟5;步驟5、I [X]古I [e],向用戶提示等式x=e是不滿足的。針對(duì)于變量和常量的論域以及解釋的擴(kuò)展,本發(fā)明給出了賦值操作符、算數(shù)運(yùn)算符、強(qiáng)制類型轉(zhuǎn)換函數(shù)的語義,使得擴(kuò)展類型后與類型相關(guān)的函數(shù)和運(yùn)算符與現(xiàn)有的MSVL語句相兼容。在擴(kuò)展了內(nèi)置數(shù)據(jù)類型后,MSVL中的變量被解釋為取值和類型兩個(gè)部分,在每一個(gè)狀態(tài)上,參見圖3,對(duì)于加框架的變量的處理按照如下流程進(jìn)行:步驟1、對(duì)于每一個(gè)加框架的變量,記錄其上一個(gè)狀態(tài)的類型標(biāo)記和取值。在當(dāng)前狀態(tài)上,將變量的類型標(biāo)記設(shè)置為上一個(gè)狀態(tài)上該變量的類型標(biāo)記,并且將該變量的取值置為nil,即不確定,執(zhí)行步驟2;步驟2、調(diào)用變量賦值模塊,遍歷當(dāng)前狀態(tài)上的所有賦值語句,如果變量是某個(gè)賦值操作符的左操作數(shù),執(zhí)行步驟3,否則執(zhí)行步驟4 ;步驟3、利用賦值操作符處理模塊完成對(duì)該變量的賦值,執(zhí)行步驟5 ;步驟4、在當(dāng)前狀態(tài)上沒有被賦值,那么變量的取值自動(dòng)繼承該變量上一個(gè)狀態(tài)的取值,執(zhí)行步驟5 ;步驟5、加框架變量的處理流程結(jié)束。本發(fā)明重新定義加框架語句frame的語義,對(duì)于加框架的變量,自動(dòng)繼承上一個(gè)狀態(tài)的類型,提高了賦值操作和算術(shù)運(yùn)算操作的效率。綜上,本發(fā)明擴(kuò)展了投影時(shí)序邏輯,定義了變量和常量的論域,并且重新定義了變量的解釋;本發(fā)明在投影時(shí)序邏輯程序設(shè)計(jì)語言MSVL中擴(kuò)展了內(nèi)置數(shù)據(jù)類型,定義了變量的類型聲明語句,賦值操作符、算術(shù)運(yùn)算符及相關(guān)函數(shù)和框架語句的語義,使得擴(kuò)展類型后與類型相關(guān)的函數(shù)和運(yùn)算符與現(xiàn)有的MSVL語句相兼容。本發(fā)明提出的多類型MSVL語言解釋系統(tǒng)和方法,在投影時(shí)序邏輯中及其程序設(shè)計(jì)語言MSVL中擴(kuò)展了多種內(nèi)置數(shù)據(jù)類型,增強(qiáng)了 MSVL的描述能力,拓展了 MSVL的應(yīng)用領(lǐng)域,使得MSVL可以更加靈活廣泛地對(duì)多數(shù)據(jù)類型的系統(tǒng)進(jìn)行建模和驗(yàn)證。本發(fā)明將變量的論域定義為取值和類型組成的二元組,并且將變量和常量的解釋定義為二元組,使得每一個(gè)變量的類型作為變量的固有性質(zhì),提高了變量引用的效率。針對(duì)于變量和常量的論域以及解釋的擴(kuò)展,本發(fā)明給出了相關(guān)函數(shù)和操作符的語義,使得擴(kuò)展類型后與類型相關(guān)的函數(shù)和運(yùn)算符與現(xiàn)有的MSVL語句相兼容。對(duì)于加框架的變量,自動(dòng)繼承上一個(gè)狀態(tài)的類型提高了賦值操作的效率。
權(quán)利要求
1.一種多類型MSVL語言解釋系統(tǒng),其特征在于,其包括, 變量類型聲明模塊,其設(shè)置有變量類型聲明命令以及類型聲明定義,所述變量類型聲明命令以MSVL變量聲明語句的形式規(guī)定了變量的類型,MSVL包括了 int,float,char以及string四種變量聲明語句,擴(kuò)展類型后MSVL中變量和常量的論域定義為DOMAIN,DOMAIN中的元素被定義為二元組,二元組的第一個(gè)分量表示變量的取值,而第二個(gè)分量標(biāo)記了變量的類型; 變量存儲(chǔ)模塊,其設(shè)置有變量類型標(biāo)記和變量取值,所述變量類型標(biāo)記根據(jù)變量聲明語句記錄該變量的類型,變量存儲(chǔ)變量的取值限制在其類型所對(duì)應(yīng)的論域內(nèi); 算術(shù)表達(dá)式處理模塊,其用于多種類型的數(shù)據(jù)構(gòu)造的算術(shù)表達(dá)式進(jìn)行運(yùn)算,其設(shè)置有:加法、減法、乘法、除法和取模運(yùn)算的定義和處理模塊,定義模塊規(guī)定了各項(xiàng)算術(shù)運(yùn)算的定義域和值域,算術(shù)運(yùn)算的處理模塊對(duì)操作數(shù)屬于定義域的表達(dá)式進(jìn)行解釋,返回結(jié)果為相應(yīng)值域中的一個(gè)常量; 賦值操作處理模塊,其對(duì)賦值操作進(jìn)行處理,賦值操作符的左操作數(shù)是變量,右操作數(shù)是算術(shù)表達(dá)式,調(diào)用算術(shù)表達(dá)式處理模塊對(duì)右操作數(shù)進(jìn)行解釋,然后將運(yùn)算結(jié)果賦給變量; 強(qiáng)制類型轉(zhuǎn)換命令處理模塊,其對(duì)算術(shù)表達(dá)式進(jìn)行強(qiáng)制類型轉(zhuǎn)換,強(qiáng)制類型轉(zhuǎn)換命令以MSVL強(qiáng)制類型轉(zhuǎn)換語句的形式修改變量的解釋結(jié)果的類型和取值;以及, 框架命令處理模塊,其控制變量在未賦值的情況下,自動(dòng)繼承上一狀態(tài)的取值。
2.一種使用權(quán)利要求1所述的一種多類型MSVL語言解釋方法,其特征在于:其包括以下步驟, 步驟1、用MSVL語言中的類型聲明語句對(duì)變量進(jìn)行聲明,規(guī)定變量的類型,并且依據(jù)變量的所聲明的類型及其語義,將所述變量保存在MSVL符號(hào)表中; 步驟2、對(duì)變量和常量進(jìn)行引用,對(duì)引用變量和常量的形式進(jìn)行判斷,如果變量和常量是算術(shù)表達(dá)式中的操作數(shù),則調(diào)用算術(shù)表達(dá)式處理模塊對(duì)算術(shù)表達(dá)式進(jìn)行運(yùn)算;如果變量出現(xiàn)在賦值操作中,則調(diào)·用賦值操作處理模塊完成對(duì)變量的賦值操作;如果變量由框架命令聲明,則調(diào)用框架命令處理模塊對(duì)變量增加框架性質(zhì);如果有強(qiáng)制類型轉(zhuǎn)換操作,則調(diào)用強(qiáng)制類型轉(zhuǎn)換命令處理模塊以MSVL強(qiáng)制類型轉(zhuǎn)換語句的形式修改變量的類型和取值。
3.根據(jù)權(quán)利要求2所述的多類型MSVL語言解釋方法,其特征在于:MSVL中變量定義為一個(gè)二元組,該二元組的第一·個(gè)分量表示變量的取值,第二個(gè)分量標(biāo)記變量的類型,變量聲明命令以MSVL語句的形式限制了變量類型,類型聲明的定義按如下方式進(jìn)行: Δ int X -- X -< "http://' IT > / υ ι V = Y -< "/7, Fi >char c = e =< nilA'T > A string s - s -< "http://, ST > 其中,int,float, char以及string分別為MSVL中的整型、浮點(diǎn)型、字符型和字符串型的類型聲明語句,nil表示當(dāng)前狀態(tài)上變量的取值不確定。
4.根據(jù)權(quán)利要求2所述的多類型MSVL語言解釋方法,其特征在于:所述算術(shù)表達(dá)式的處理方法按以下流程進(jìn)行: 步驟1、對(duì)算術(shù)表達(dá)式的兩個(gè)操作數(shù)進(jìn)行判斷,如果是常量或者變量,直接解釋獲取其類型和取值,則執(zhí)行步驟3,如果操作數(shù)為算術(shù)表達(dá)式,則執(zhí)行步驟2 ; 步驟2、分別對(duì)兩個(gè)操作數(shù)調(diào)用算術(shù)表達(dá)式處理模塊對(duì)操作對(duì)象進(jìn)行處理,如果返回一個(gè)論域內(nèi)的常量,執(zhí)行步驟3,否則執(zhí)行步驟5 ; 步驟3、對(duì)兩個(gè)操作數(shù)是否屬于所進(jìn)行的算術(shù)運(yùn)算的定義域,如果兩個(gè)操作數(shù)都屬于所進(jìn)行算術(shù)運(yùn)算的定義域,執(zhí)行步驟4,否則執(zhí)行步驟5 ; 步驟4、依據(jù)所進(jìn)行算術(shù)運(yùn)算的運(yùn)算規(guī)則,構(gòu)造一個(gè)新的常量作為運(yùn)算返回結(jié)果,執(zhí)行步驟6 ; 步驟5、語義不滿足,向用戶提示化簡(jiǎn)結(jié)果為false ; 步驟6、算術(shù)表達(dá)式的處理流程結(jié)束。
5.根據(jù)權(quán)利要求2所述的MSVL語言解釋方法,其特征在于:所述多類型MSVL包括了(int),(float)以及(string)三種強(qiáng)制類型轉(zhuǎn)換語句,整型強(qiáng)制類型轉(zhuǎn)換命令的調(diào)用形式如下:(int)e(float)e(string)e 操作對(duì)象為算術(shù)表達(dá)式,返回值為相應(yīng)論域內(nèi)的常量:其中(int)的定義域?yàn)镕LOAT U CHAR,值域?yàn)?INT,(float) e 的定義域?yàn)?INT U CHAR,值域?yàn)?FLOAT,(string)的定義域?yàn)镮NT U FLOAT U CHAR,值域?yàn)镾TR。
6.根據(jù)權(quán)利要求5所述的多類型MSVL語言解釋方法,其特征在于:強(qiáng)制類型轉(zhuǎn)換命令的處理方法按以下流程進(jìn)行: 步驟1、調(diào)用算術(shù)表達(dá)式處理模塊對(duì)操作對(duì)象進(jìn)行處理,如果算術(shù)表達(dá)式合法,則返回所述論域DOMAIN內(nèi)的常量,否則執(zhí)行步驟4 ; 步驟2、對(duì)該常量進(jìn)行判斷,如果常量屬于該強(qiáng)制類型轉(zhuǎn)換命令的定義域,那么執(zhí)行步驟3,否則執(zhí)行步驟4; 步驟3、構(gòu)造一個(gè)新的常量,其類型設(shè)置為強(qiáng)制類型轉(zhuǎn)換命令所對(duì)應(yīng)的類型,依據(jù)不同的強(qiáng)制轉(zhuǎn)換命令設(shè)置該常量的取值,將該常量作為強(qiáng)制類型轉(zhuǎn)換結(jié)果返回,執(zhí)行步驟5 ;步驟4、語義不滿足,向用戶提示化簡(jiǎn)結(jié)果為false ; 步驟5、強(qiáng)制類型轉(zhuǎn)換命令的處理流程結(jié)束。
7.根據(jù)權(quán)利要求2所述的多類型MSVL語言解釋方法,其特征在于:賦值語句處理模塊對(duì)賦值操作x=e進(jìn)行處理,規(guī)定賦值操作符左操作數(shù)X是變量,右操作數(shù)e是算術(shù)表達(dá)式,對(duì)于賦值操作符的執(zhí)行,流程如下: 步驟1、首先對(duì)于變量X和算術(shù)表達(dá)式e進(jìn)行解釋,判斷X和e的類型是否相等,如果類型相等,執(zhí)行步驟2,否則執(zhí)行步驟5 ; 步驟2、如果變量X和表達(dá)式e的類型相等,判斷表達(dá)式e的取值是否為論域DOMAIN中的一個(gè)常量,如果是,執(zhí)行步驟3,否則執(zhí)行步驟5 ; 步驟3、那么對(duì)變量X的取值進(jìn)行判斷,如果變量X的取值為nil時(shí),將e的取值賦給X,等式x=e滿足,賦值操作執(zhí)行成功;否則執(zhí)行步驟4 ; 步驟4、如果X的取值不為nil,那么判斷X的取值是否等于e的取值,如果相等,那么等式x=e滿足,賦值操作執(zhí)行成功賦值操作的執(zhí)行流程結(jié)束;如果取值不相等,進(jìn)行步驟5 ; 步驟5、I[x]幸I [e],向用戶提示等式x=e是不滿足的。
8.根據(jù)權(quán)利要求2所述的多類型MSVL語言解釋方法,其特征在于:在擴(kuò)展了內(nèi)置數(shù)據(jù)類型后,MSVL中的變量被解釋為取值和類型兩個(gè)部分,在每一個(gè)狀態(tài)上,對(duì)于加框架的變量的處理按照如下流程進(jìn)行: 步驟1、對(duì)于每一個(gè)加框架的變量,記錄其上一個(gè)狀態(tài)的類型標(biāo)記和取值。在當(dāng)前狀態(tài)上,將變量的類型標(biāo)記設(shè)置為上一個(gè)狀態(tài)上該變量的類型標(biāo)記,并且將該變量的取值置為nil,即不確定,執(zhí)行步驟2; 步驟2、調(diào)用變量賦值模塊,遍歷當(dāng)前狀態(tài)上的所有賦值語句,如果變量是某個(gè)賦值操作符的左操作數(shù),執(zhí)行步驟3,否則執(zhí)行步驟4 ; 步驟3、利用賦值操作符處理模塊完成對(duì)該變量的賦值,執(zhí)行步驟5 ; 步驟4、在當(dāng)前狀態(tài)上沒有被賦值,那么變量的取值自動(dòng)繼承該變量上一個(gè)狀態(tài)的取值,執(zhí)行步驟5 ; 步驟5、加框架變量的處 理流程結(jié)束。
全文摘要
一種多類型MSVL語言解釋系統(tǒng)其包括,變量類型聲明模塊、變量存儲(chǔ)模塊、算術(shù)表達(dá)式處理模塊、賦值操作處理模塊、強(qiáng)制類型轉(zhuǎn)換命令處理模塊及框架命令處理模塊。在投影時(shí)序邏輯中及其程序設(shè)計(jì)語言MSVL中擴(kuò)展了多種內(nèi)置數(shù)據(jù)類型,增強(qiáng)了MSVL的描述能力,拓展了MSVL的應(yīng)用領(lǐng)域,使MSVL可以更加靈活廣泛地對(duì)多數(shù)據(jù)類型的系統(tǒng)進(jìn)行建模和驗(yàn)證。本發(fā)明將變量的論域定義為取值和類型組成的二元組,將變量和常量的解釋定義為二元組,使得每一個(gè)變量的類型作為變量的固有性質(zhì),提高變量引用的效率。針對(duì)于變量和常量的論域以及解釋的擴(kuò)展,給出相關(guān)函數(shù)和操作符的語義,使擴(kuò)展類型后與類型相關(guān)的函數(shù)和運(yùn)算符與現(xiàn)有的MSVL語句相兼容。
文檔編號(hào)G06F9/45GK103150199SQ20131012018
公開日2013年6月12日 申請(qǐng)日期2013年4月8日 優(yōu)先權(quán)日2013年4月8日
發(fā)明者段振華, 李潔, 王小兵, 田聰, 張南, 于研, 楊凱 申請(qǐng)人:西安電子科技大學(xué)