龍昱程,馬衛東
(1.西南科技大學 信息工程學院,四川 綿陽621010;2.中國工程物理研究院 電子工程研究所,四川 綿陽621010)
基于領域專用語言的數據幀解析研究
龍昱程1,2,馬衛東2
(1.西南科技大學 信息工程學院,四川 綿陽621010;2.中國工程物理研究院 電子工程研究所,四川 綿陽621010)
測控系統中存在著大量的通信協議和二進制數據,不同的協議使用不同的數據幀格式,為了能夠有效地判斷數據的正確性,需要對數據幀進行解析。討論了使用領域專用語言的方法實現定制不同的數據幀解析策略,使數據幀的解析和處理具有通用性和擴展性。
領域專用語言;數據幀;詞法分析;語法分析
隨著測控系統及測控設備的迅速發展,測控領域的應用范圍也越來越廣,與此同時,測控系統里存在著大量的通信協議和測控數據。這些數據對于判斷設備是否正常,以及分析各種異常現象有著重要作用。
在測控系統中,上位機與下位機之間通信,不同的通信協議使用不同的數據幀格式,在產生的數據量較大時,會對數據幀的正確讀取造成障礙。軟件工程師在進行上層應用開發時,通常需要對協議進行解析,從中提取出所需數據項的值,并進行相應處理,這就要求設計實現特定的通信接口。而設計這些通信接口程序,結構上經常非常類似,主要的區別在于對接收數據幀之后的解釋和理解不同。這往往容易造成整個測控系統的冗余和復雜。而且不利于排查數據中的錯誤信息。
針對以上問題定義了一種領域專用語言[1-2](Domain Specific Language)——dpDSL,應用于數據幀的解析與處理。領域專業語言為數據幀解析提出了一種靈活、適應性強且擴展性良好的解決方法[3-4]。
數據幀解析的總體設計方案如圖1所示,總體的解析流程分為前端和后端兩部分。

圖1 數據幀解析流程Fig.1 Process of data frame analysising
前端主要負責以下工作:用戶根據不同測控系統所采用通信協議的不同,編寫相應的dpDSL腳本,對數據幀格式和數據判讀方法進行描述。
后端主要負責:從文件里提取數據幀,并以二進制流的方式存入內存中,根據前端送來的dpDSL腳本信息,對數據幀進行解析識別,提取出數據,再根據數據判讀信息,對數據幀里的數據進行判讀,并返回幀解析和數據判讀的結果。
dpDSL是用于描述測控系統中數據幀解析策略的領域專用語言。dpDSL采用于擴展巴科斯范式描述語法規則。dpDSL語法定義如下:

dpDSL腳本解釋器要完成以下任務:
1)對用戶輸入的dpDSL腳本進行分析
2)將dpDSL描述的數據幀格式信息和數據判讀方法提取出來。
dpDSL腳本解釋器的軟件結構包括詞法分析模塊和語法分析模塊,首先加載腳本進行詞法分析,然后進行語法分析,如圖2所示。

圖2 dpDSL腳本解釋器的結構Fig.2 The structure of dpDSL script interpreter
詞法分析是dpDSL解釋器的第一個階段[10],詞法分析階段的主要任務是將源程序讀作字符文件并將其分為若干個記號,記號與單詞類似[5-6]。如果遇到無法識別的符號,則需要進行錯誤處理。
語法分析階段的任務包括:構件符號表、記錄聲明中建立的名字的含義、在表達式和語句中進行類型推斷和類型檢查以及在語言的類型規則作用域內判斷他們的正確性[7],識別dpDSL腳本程序中的語法成分并進行語法檢查。dpDSL解釋器設計了基于正則表達式的語法分析方法。正則表達式是描述字符串文法規則的一種方法,設計的規則可以作為模板,用來檢查相關字符串是否與此模板匹配[8-9]。正則表達式是由元字符和普通字符組成,元字符可以用來描述模板的構成規則,普通字符可為字符串的基本字符。使用正則表達式進行dpDSL腳本程序的語法分析,需要經過3個過程:正則表達式定義、初始化和匹配。在處理正則表達式的過程中,選擇使用Qt的正則表達式庫。
dpDSL腳本解釋器的軟件流程圖如圖3所示。

圖3 dpDSL解釋器Fig.3 Interpreter of dpDSL
解釋器工作過程中,經常要使用和收集出現在源程序中的各種信息,為了方便起見,常常用表格記錄這些信息,如標識符表、關鍵字表、和常量表等,這些都統稱為符號表。本文設計的解釋器在語義分析階段生成符號表,其數據結構設計如下:


腳本解釋器對需要解析的數據文件進行讀取,存入內存當中,并提取dpDSL對用戶輸入腳本的解析結果,通過對比內存中每個數據幀與腳本解析得出的數據幀格式信息,可以判斷數據文件中每個數據幀的正確性,數據幀處理器的軟件流程圖如圖4所示。

圖4 數據幀處理器Fig.4 Data frame processor
4.1 實驗目標
dpDSL為數據幀解析提供了一種規則描述策略,實驗主要考慮兩個方面的指標:一是dpDSL能否準確描述數據幀格式;二是dpDSL腳本能否被正確識別,并完成數據幀提取。
4.2 實驗環境
軟件環境:Windows7操作系統以及Qt4.7.4。
硬件環境:1臺計算機,基本配置為Intel Core2 i5 CPU 2.40GHz,內存為2G。
4.3 實驗數據
目前,有9幀數據,每3幀使用一種數據幀格式,共三種數據幀,如表1所示。
dpDSL的腳本編寫如下:

表1 數據幀格式Tab.1 Data-frame format

4.4 實驗結果分析
實驗結果如圖5所示。

圖5 實驗結果Fig.5 Experimental result
通過以上實驗可以得出以下結論:
1)dpDSL腳本可以準確的描述數據幀格式。
2)dpDSL腳本可以被正確的解析,并準確的識別數據幀。
本文提出了基于領域專業語言的數據幀解析和處理方法。將協議的解析和處理與協議的描述分離開來,建立了一種具有普適性的、與數據幀格式無關的協議解析與處理方法。領域專業語言正是一種能夠對各種協議進行描述的手段,對不同的通信協議,只需編寫其相應的dpDSL腳本,并進行詞法分析和語法分析,就能夠不改變協議解析和處理的程序,對該協議進行解析和處理。并且經過簡單地培訓,普通用戶也可以方便地使用dpDSL進行腳本編寫,從而減輕了研發人員的對整個應用程序的維護,使本方法具備良好的可通用性和可擴展性。
[1]Fowler M.領域特定語言[M].北京:機械工業出版社,2013.
[2]趙衛東,劉永紅.一種領域特定語言的研究與實現 [J].成都大學學報:自然科學版,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]周艷明.基于領域專用語言的應用軟件自動生成[J].計算機工程與應用,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的領域專用語言應用研究 [J].電腦開發與應用,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的服務組合語言[J].計算機工程,2011(9):107-109.HU Hai-tao,LIU Yin.Service composition language based on DSL[J].Computer Engineering,2011(9):107-109.
[6鄭炳坤,葉峰.工業機器人語言的詞法語法分析器研究[J].機械設計與制造,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].北京:機械工業出版社,2009.
[8]李曉帆,趙恒永.協議制導的數據幀數據提取技術 [J].計算機工程與應用,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]董立,尤楓,趙恒永.基于用戶定制的數據幀處理技術[J].計算機工程與設計,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
中國工程物理研究院發展基金(2013B0403064)
龍昱程(1990—),男,湖南衡陽人,碩士研究生。研究方向:信號與信息處理。