龍昱程,馬衛(wèi)東
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽621010;2.中國工程物理研究院 電子工程研究所,四川 綿陽621010)
基于領(lǐng)域?qū)S谜Z言的數(shù)據(jù)幀解析研究
龍昱程1,2,馬衛(wèi)東2
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽621010;2.中國工程物理研究院 電子工程研究所,四川 綿陽621010)
測控系統(tǒng)中存在著大量的通信協(xié)議和二進制數(shù)據(jù),不同的協(xié)議使用不同的數(shù)據(jù)幀格式,為了能夠有效地判斷數(shù)據(jù)的正確性,需要對數(shù)據(jù)幀進行解析。討論了使用領(lǐng)域?qū)S谜Z言的方法實現(xiàn)定制不同的數(shù)據(jù)幀解析策略,使數(shù)據(jù)幀的解析和處理具有通用性和擴展性。
領(lǐng)域?qū)S谜Z言;數(shù)據(jù)幀;詞法分析;語法分析
隨著測控系統(tǒng)及測控設(shè)備的迅速發(fā)展,測控領(lǐng)域的應(yīng)用范圍也越來越廣,與此同時,測控系統(tǒng)里存在著大量的通信協(xié)議和測控數(shù)據(jù)。這些數(shù)據(jù)對于判斷設(shè)備是否正常,以及分析各種異?,F(xiàn)象有著重要作用。
在測控系統(tǒng)中,上位機與下位機之間通信,不同的通信協(xié)議使用不同的數(shù)據(jù)幀格式,在產(chǎn)生的數(shù)據(jù)量較大時,會對數(shù)據(jù)幀的正確讀取造成障礙。軟件工程師在進行上層應(yīng)用開發(fā)時,通常需要對協(xié)議進行解析,從中提取出所需數(shù)據(jù)項的值,并進行相應(yīng)處理,這就要求設(shè)計實現(xiàn)特定的通信接口。而設(shè)計這些通信接口程序,結(jié)構(gòu)上經(jīng)常非常類似,主要的區(qū)別在于對接收數(shù)據(jù)幀之后的解釋和理解不同。這往往容易造成整個測控系統(tǒng)的冗余和復(fù)雜。而且不利于排查數(shù)據(jù)中的錯誤信息。
針對以上問題定義了一種領(lǐng)域?qū)S谜Z言[1-2](Domain Specific Language)——dpDSL,應(yīng)用于數(shù)據(jù)幀的解析與處理。領(lǐng)域?qū)I(yè)語言為數(shù)據(jù)幀解析提出了一種靈活、適應(yīng)性強且擴展性良好的解決方法[3-4]。
數(shù)據(jù)幀解析的總體設(shè)計方案如圖1所示,總體的解析流程分為前端和后端兩部分。
圖1 數(shù)據(jù)幀解析流程Fig.1 Process of data frame analysising
前端主要負責(zé)以下工作:用戶根據(jù)不同測控系統(tǒng)所采用通信協(xié)議的不同,編寫相應(yīng)的dpDSL腳本,對數(shù)據(jù)幀格式和數(shù)據(jù)判讀方法進行描述。
后端主要負責(zé):從文件里提取數(shù)據(jù)幀,并以二進制流的方式存入內(nèi)存中,根據(jù)前端送來的dpDSL腳本信息,對數(shù)據(jù)幀進行解析識別,提取出數(shù)據(jù),再根據(jù)數(shù)據(jù)判讀信息,對數(shù)據(jù)幀里的數(shù)據(jù)進行判讀,并返回幀解析和數(shù)據(jù)判讀的結(jié)果。
dpDSL是用于描述測控系統(tǒng)中數(shù)據(jù)幀解析策略的領(lǐng)域?qū)S谜Z言。dpDSL采用于擴展巴科斯范式描述語法規(guī)則。dpDSL語法定義如下:
dpDSL腳本解釋器要完成以下任務(wù):
1)對用戶輸入的dpDSL腳本進行分析
2)將dpDSL描述的數(shù)據(jù)幀格式信息和數(shù)據(jù)判讀方法提取出來。
dpDSL腳本解釋器的軟件結(jié)構(gòu)包括詞法分析模塊和語法分析模塊,首先加載腳本進行詞法分析,然后進行語法分析,如圖2所示。
圖2 dpDSL腳本解釋器的結(jié)構(gòu)Fig.2 The structure of dpDSL script interpreter
詞法分析是dpDSL解釋器的第一個階段[10],詞法分析階段的主要任務(wù)是將源程序讀作字符文件并將其分為若干個記號,記號與單詞類似[5-6]。如果遇到無法識別的符號,則需要進行錯誤處理。
語法分析階段的任務(wù)包括:構(gòu)件符號表、記錄聲明中建立的名字的含義、在表達式和語句中進行類型推斷和類型檢查以及在語言的類型規(guī)則作用域內(nèi)判斷他們的正確性[7],識別dpDSL腳本程序中的語法成分并進行語法檢查。dpDSL解釋器設(shè)計了基于正則表達式的語法分析方法。正則表達式是描述字符串文法規(guī)則的一種方法,設(shè)計的規(guī)則可以作為模板,用來檢查相關(guān)字符串是否與此模板匹配[8-9]。正則表達式是由元字符和普通字符組成,元字符可以用來描述模板的構(gòu)成規(guī)則,普通字符可為字符串的基本字符。使用正則表達式進行dpDSL腳本程序的語法分析,需要經(jīng)過3個過程:正則表達式定義、初始化和匹配。在處理正則表達式的過程中,選擇使用Qt的正則表達式庫。
dpDSL腳本解釋器的軟件流程圖如圖3所示。
圖3 dpDSL解釋器Fig.3 Interpreter of dpDSL
解釋器工作過程中,經(jīng)常要使用和收集出現(xiàn)在源程序中的各種信息,為了方便起見,常常用表格記錄這些信息,如標識符表、關(guān)鍵字表、和常量表等,這些都統(tǒng)稱為符號表。本文設(shè)計的解釋器在語義分析階段生成符號表,其數(shù)據(jù)結(jié)構(gòu)設(shè)計如下:
腳本解釋器對需要解析的數(shù)據(jù)文件進行讀取,存入內(nèi)存當(dāng)中,并提取dpDSL對用戶輸入腳本的解析結(jié)果,通過對比內(nèi)存中每個數(shù)據(jù)幀與腳本解析得出的數(shù)據(jù)幀格式信息,可以判斷數(shù)據(jù)文件中每個數(shù)據(jù)幀的正確性,數(shù)據(jù)幀處理器的軟件流程圖如圖4所示。
圖4 數(shù)據(jù)幀處理器Fig.4 Data frame processor
4.1 實驗?zāi)繕?/p>
dpDSL為數(shù)據(jù)幀解析提供了一種規(guī)則描述策略,實驗主要考慮兩個方面的指標:一是dpDSL能否準確描述數(shù)據(jù)幀格式;二是dpDSL腳本能否被正確識別,并完成數(shù)據(jù)幀提取。
4.2 實驗環(huán)境
軟件環(huán)境:Windows7操作系統(tǒng)以及Qt4.7.4。
硬件環(huán)境:1臺計算機,基本配置為Intel Core2 i5 CPU 2.40GHz,內(nèi)存為2G。
4.3 實驗數(shù)據(jù)
目前,有9幀數(shù)據(jù),每3幀使用一種數(shù)據(jù)幀格式,共三種數(shù)據(jù)幀,如表1所示。
dpDSL的腳本編寫如下:
表1 數(shù)據(jù)幀格式Tab.1 Data-frame format
4.4 實驗結(jié)果分析
實驗結(jié)果如圖5所示。
圖5 實驗結(jié)果Fig.5 Experimental result
通過以上實驗可以得出以下結(jié)論:
1)dpDSL腳本可以準確的描述數(shù)據(jù)幀格式。
2)dpDSL腳本可以被正確的解析,并準確的識別數(shù)據(jù)幀。
本文提出了基于領(lǐng)域?qū)I(yè)語言的數(shù)據(jù)幀解析和處理方法。將協(xié)議的解析和處理與協(xié)議的描述分離開來,建立了一種具有普適性的、與數(shù)據(jù)幀格式無關(guān)的協(xié)議解析與處理方法。領(lǐng)域?qū)I(yè)語言正是一種能夠?qū)Ω鞣N協(xié)議進行描述的手段,對不同的通信協(xié)議,只需編寫其相應(yīng)的dpDSL腳本,并進行詞法分析和語法分析,就能夠不改變協(xié)議解析和處理的程序,對該協(xié)議進行解析和處理。并且經(jīng)過簡單地培訓(xùn),普通用戶也可以方便地使用dpDSL進行腳本編寫,從而減輕了研發(fā)人員的對整個應(yīng)用程序的維護,使本方法具備良好的可通用性和可擴展性。
[1]Fowler M.領(lǐng)域特定語言[M].北京:機械工業(yè)出版社,2013.
[2]趙衛(wèi)東,劉永紅.一種領(lǐng)域特定語言的研究與實現(xiàn) [J].成都大學(xué)學(xué)報:自然科學(xué)版,2013(2):142-144.ZHAO Wei-dong,LIU Yong-hong.Research and implementation of domain specific language[J].Journal of Chengdu University:Natural Science,2013(2):142-144.
[3]周艷明.基于領(lǐng)域?qū)S谜Z言的應(yīng)用軟件自動生成[J].計算機工程與應(yīng)用,2003(10):124-127.ZHOU Yan-ming.Auto generating application software based on domain specific language[J].Computer Engineering and Applications,2003(10):124-127.
[4]鄧偉.基于Drools的領(lǐng)域?qū)S谜Z言應(yīng)用研究 [J].電腦開發(fā)與應(yīng)用,2012,25(2):8-11.DENG Wei.Research on domain specific language based on drools[J].Computer Development&Applications,2012,25(2):8-11.
[5]胡海濤,劉穎.一種基于DSL的服務(wù)組合語言[J].計算機工程,2011(9):107-109.HU Hai-tao,LIU Yin.Service composition language based on DSL[J].Computer Engineering,2011(9):107-109.
[6鄭炳坤,葉峰.工業(yè)機器人語言的詞法語法分析器研究[J].機械設(shè)計與制造,2014(1):209-212.ZHENG Bing-kun,YE Feng,et al.Study on the lexical and syntactic analyzer for industrial robot language[J].Machinery Design&Manufacture,2014(1):209-212.
[7]Knneth C.Louden.編譯原理及實踐[M].北京:機械工業(yè)出版社,2009.
[8]李曉帆,趙恒永.協(xié)議制導(dǎo)的數(shù)據(jù)幀數(shù)據(jù)提取技術(shù) [J].計算機工程與應(yīng)用,2003(25):144-145.LI Xiao-fan,ZHAO Huan-yong.A protocol driven communication technology[J].Computer Engneering and Applcations, 2003(25):144-145.
[9]董立,尤楓,趙恒永.基于用戶定制的數(shù)據(jù)幀處理技術(shù)[J].計算機工程與設(shè)計,2007(12):3003-3005.DONG Li,YOU Feng,ZHAO Huan-yong.Technology of dataframe processing based on user's customization[J].Computer Engineering and Design,2007(12):3003-3005.
[10]Headrick W J,Davis T W,Bodkin M A,et al.Signal Based Domain Specific Language (SBDSL)a proposal for a next generation test[C]//AUTOTESTCON,2011 IEEE.IEEE, 2011:240-244.
Research on data-frame analysis based on domain specific language
LONG Yu-cheng1,2,MA Wei-dong2
(1.School of Information Engineering,Southwest University of Science and Technology,Mianyang 621010,China;2.Institute of Electronic Engineering,China Academy of Engineering Physics,Mianyang 621010,China)
There are lots of communication protocols and binary data in measurement and control system.Different protocols use different data-frame.In order to judge the accuracy of the data effectively,we need to parse the data-frame.We use domain-specific language to describe data-frame and design a domain specific language for user to coding and they can custom their own strategy.This implementation can avoid coding parse and process program for different data-frame format separately,and make the program more flexible and adaptable.
domain specific language;data-frame;lexical analysis;parsing
TN91
A
1674-6236(2015)10-0130-03
2014-09-15 稿件編號:201409119
中國工程物理研究院發(fā)展基金(2013B0403064)
龍昱程(1990—),男,湖南衡陽人,碩士研究生。研究方向:信號與信息處理。