国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

可逆編程語言R—JAVA與其語言處理系統(tǒng)設計分析

2017-07-14 06:09張應征
電腦知識與技術 2017年17期
關鍵詞:系統(tǒng)設計

張應征

摘要:在可逆計算機研究過程中,可逆編程語言是尤為重要的內容,通過可逆編程語言對程序進行編寫,能夠實現(xiàn)正反兩個方向的運行,以此不僅能夠獲得程序的結果,還能夠恢復輸入,所以對可逆編程語言的研究是非常有必要的?;诖?,該文就對可編程語言R-JAVA和其語言處理系統(tǒng)進行設計及分析。

關鍵詞:可逆編程語言;語言處理;系統(tǒng)設計

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)17-0063-02

可逆編程語言是可逆計算中的分支,通過其編寫的程序段不僅能夠獲得正向運行的結果,還能夠獲得方向運行恢復的輸入,現(xiàn)在對可逆計算的研究主要包括可逆邏輯綜合、邏輯門及電路等硬件方面,但是關于軟件方面的研究卻非常少??赡嫦到y(tǒng)的完整性主要包括硬件和軟件兩部分的可逆,但是目前流行的編程語言都是不可逆的,其編程程序在運行過程中能夠對信息進行擦除,并且計算過程只有正向確定,沒有方向確定,所以可逆計算不能夠在軟件層實現(xiàn)。目前,如何實現(xiàn)可逆硬件平臺中軟件系統(tǒng)的研究是尤為重要的內容。

1可逆編程語言R-JAVA的設計原則

1.1基本語句

1.2控制結構

結構化程序在設計過程中最常用的控制結構包括分支、順序及循環(huán),只要基本語句,那么就表示順序結構可逆,但是循環(huán)和分支不可逆,因為兩者的執(zhí)行流程圖具有執(zhí)行分支匯聚點,在逆向到匯聚點的時候,分支的選擇沒有依據(jù)。為了避免不可逆的出現(xiàn),就要在分支匯聚點出現(xiàn)添加條件進行判斷,在改造之后的可逆結構及循環(huán)結構見圖1。

1.3其他控制

可逆編程語言R-JAVA中不僅包括JAVA語言的傳統(tǒng)代碼,還包括R-JAVA定義的可逆代碼,兩者的形式為成員函數(shù)。成員函數(shù)還包括普通成員及可逆成員,為了避免將兩者弄混,那么就分別對兩者進行定義。首先對普通成員進行定義,之后對可逆成員進行定義,從“reverse”標識符定義可逆函數(shù),使用JAVA語言對普通成員函數(shù)進行編寫,其不需要遵守可逆的原則;使用R-JAVA語言對可逆成員函數(shù)進行編寫,其需要遵守可你的原則。普通成員能夠實現(xiàn)可逆成員的調用,但是可逆成員不能夠調用普通成員,可逆成員的不同函數(shù)能夠相互調用??赡娉蓡T要有兩個對應語義,分別為正向和反向兩種,調用可逆函數(shù)要以形式為基礎進行區(qū)分。

2可逆編程語言R-JAVA語言處理系統(tǒng)的設計

2.1文法設計

文法的類型選擇與語法的分析具有一定的聯(lián)系,可逆編程語言使用的是遞歸下降的分析方法,其不僅直觀簡單,還便于構造。但是遞歸下降要求文法為LL1型,也就是要在分析過程中向前預讀Token,從而決定使用哪種產(chǎn)生式,所以文法的規(guī)則不能夠具有左遞歸,并且還要具有文法可逆,這點是文法設計中尤為重要的內容??赡娉蓡T函數(shù)的開頭一般都是“reverse”,并且沒有返回值及形參,函數(shù)體中與運算變量有關的都是類成員變量,其中賦值右值的可逆運算只包括異或及加減。條件及當型兩個循環(huán)語句中的布爾條件有兩個,根據(jù)出現(xiàn)的順序分別對應。在函數(shù)調用過程中,反向調用的后綴為“_rev”。遞歸下降能夠實現(xiàn)語法分析器,其主要作用就是實現(xiàn)可逆成員的函數(shù)語法分析,并且生成中間代碼。語法分析器的代碼在Parser類中封裝,非終結符都具有對應的處理過程,通過可逆程序符號實現(xiàn)語法分析,在遇到非終結符的時候,對相應的處理進行調用。在遇到終結符的時候,判斷是否匹配。

2.2設計語法分析器

在可逆編程語言處理系統(tǒng)中設計語法分析器是文法設計的重要內容,兩者具有密切的聯(lián)系。語法分析器的主要目的就是分析可逆成員函數(shù)語法,并且生成賦值、調用及邊界等元語句,元語句的父類為Node原函數(shù),邊界原函數(shù)的父類為Bound-Node。以源程序的成分向元語句類型轉換規(guī)則為基礎,語句塊表示為stmts,主要包括賦值、分支及循環(huán)等語句,通過對豫劇的調用使其能夠和元語句進行轉換。通過可編程語言的文法規(guī)則可以看出來,文法的Parser中能夠處理非終結符,并且在Parser類中封裝語法分析器代碼。在進行處理的時候,從可逆程序進行語法分析,在遇到終結符的時候要和Token對比及匹配,判斷是否匹配;在遇到非終結符的時候,就要對相關的處理進行調用。在處理的時候通過相應的規(guī)則對元語句進行匹配,在其中添加元語句組具有重要的作用。

2.3設計翻譯器

因為可逆函數(shù)不僅具有正向語義,還具有方向語義,所以翻譯器也要具有這兩種元語句組。正向翻譯是非常容易的,只需要實現(xiàn)元語句組的遍歷,將元語句翻譯為等價代碼。但是反向翻譯不僅要具有上述過程,還要轉換每條元語句翻譯,從而實現(xiàn)語義的反轉。每個語義都具有相應的翻譯規(guī)則,每個翻譯規(guī)則的元語句翻譯都要通過正向及方向語義實現(xiàn)。翻譯器中的代碼都在Intepreter類中封裝,正向及方向的翻譯區(qū)別為正向翻譯的遍歷是從前到后實現(xiàn)的,反向翻譯則是相反。

3結束語

本文首先介紹了可逆編程語言的設計原則,之后對可逆編程語言R-JAVA處理系統(tǒng)的設計進行了分析,此系統(tǒng)能夠將可逆編程語言的源文件轉變?yōu)镴AVA目標文件,不僅能夠得到正向預算的結果,還能夠進行逆向的恢復輸入。為了給基于可逆邏輯綜合、可逆電路技術的可逆硬件平臺設計可逆軟件系統(tǒng),提出基于JDK的可逆編程語言RJAVA。首先總結可逆編程語言的設計原則然后為可逆語言R-JAVA設計文法規(guī)則和語言處理系統(tǒng),其語言處理系統(tǒng)提取源程序中的可逆代碼段并將其翻譯成分別對應正反語義的等價JAVA代碼,再將翻譯后的JA-VA代碼交由JDK解釋執(zhí)行。最后通過示例程序表明R-JAVA源程序中的可逆函數(shù)既可正向運行,又可反向運行,從軟件層次上實現(xiàn)了可逆計算。

猜你喜歡
系統(tǒng)設計
基于UML技術的高校貧困生管理系統(tǒng)建模分析