• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于編譯技術(shù)的協(xié)議自動化解析程序的設(shè)計

      2012-07-13 06:28:58,
      電子設(shè)計工程 2012年13期
      關(guān)鍵詞:解析器詞法開發(fā)人員

      鄧 偉 , 石 煒

      (1.通信信息控制和安全技術(shù)重點實驗室 浙江 嘉興 314033;2.中國電子科技集團公司第三十六研究所 浙江 嘉興 314033)

      在復(fù)雜的通信系統(tǒng)設(shè)計過程中,設(shè)計者通常會將系統(tǒng)劃分為獨立的功能單元,單元之間通過接口相互連接,實現(xiàn)系統(tǒng)功能。一般來說,單元之間的物理連接會盡量采用同一種物理接口,但建立在物理接口之上的通信協(xié)議卻因單元提供功能的差別而各不相同。開發(fā)人員必須為每個單元開發(fā)相應(yīng)的協(xié)議解析程序,從協(xié)議數(shù)據(jù)中提取出所需要的信息加以處理,完成單元的控制。

      這些通信協(xié)議的構(gòu)成通常很類似,其主要構(gòu)成為幀數(shù)據(jù),并且?guī)瑪?shù)據(jù)的格式內(nèi)容大都包含地址、命令、參數(shù)、數(shù)據(jù)等信息。傳統(tǒng)的手工開發(fā)方式需要針對每條協(xié)議編寫相應(yīng)的解析程序,使得系統(tǒng)開發(fā)人員的主要精力無法集中在系統(tǒng)功能本身。針對這種情況,研究人員提出了遠程過程調(diào)用(RPC)機制試圖解決這一問題,但RPC的實現(xiàn)通常需要系統(tǒng)提供操作系統(tǒng)和TCP/IP協(xié)議棧[1-2],這無疑增加了系統(tǒng)開發(fā)的難度;此外,一些簡單的單元的接口控制邏輯通常是由低端的單片機構(gòu)成,無法提供RPC機制所需的運行環(huán)境。這極大地限制了RPC機制的應(yīng)用范圍。相關(guān)文獻[3]指出,可以通過采用編譯技術(shù)來完成協(xié)議的解析和識別,但該文獻提出的方案的需要宿主機提供解釋性語言的支持,如VB、Python等語言,這些解釋性語言通常在大多數(shù)單元中并不存在。

      筆者針對上述解決方案的不足,提出了一種接近于幀協(xié)議文本的幀協(xié)議描述語言,并利用編譯技術(shù)實現(xiàn)了一種自動化解析器,該解析器將幀協(xié)議描述語言自動轉(zhuǎn)換為標(biāo)準(zhǔn)C語言的數(shù)據(jù)類型,并生成相應(yīng)的解析函數(shù)和釋放函數(shù)。利用該方案,開發(fā)人員只需要針對協(xié)議文本中的幀結(jié)構(gòu)編寫相應(yīng)的幀協(xié)議描述說明,自動化解析器可根據(jù)幀協(xié)議描述說明自動生成相應(yīng)的解析程序。開發(fā)人員調(diào)用生成的解析函數(shù),即可提取出幀數(shù)據(jù)中包含的信息。該方案相對于RPC機制,減少了對系統(tǒng)環(huán)境的需求,極大地擴展了該方案的適用性。

      1 總體設(shè)計方案

      文中設(shè)計的協(xié)議自動化解析器主要包括幀協(xié)議語言、詞法分析器、語法分析器、語義分析等,協(xié)議自動化解析器的工作流程如圖1所示。

      圖1 協(xié)議自動化解析器工作流程Fig.1 Working flow of automatic protocol analyzer

      協(xié)議自動解析器首先對幀格式描述語言進行詞法分析和語法分析,根據(jù)分析結(jié)果生成標(biāo)準(zhǔn)C語言的數(shù)據(jù)結(jié)構(gòu)定義和幀數(shù)據(jù)的解析函數(shù)。由于在幀數(shù)據(jù)的解析的過程中,需要動態(tài)的分配系統(tǒng)內(nèi)存,因此自動化解析器還生成了對應(yīng)的內(nèi)存釋放函數(shù)。這樣避免了開發(fā)人員手工編寫內(nèi)存釋放代碼可能存在的內(nèi)存泄露問題。將自動化解析器生成的C代碼通過C編譯器編譯變?yōu)榭蓤?zhí)行代碼。當(dāng)某幀數(shù)據(jù)到達時,利用可執(zhí)行代碼即可完成幀協(xié)議的解析,并提取相應(yīng)的信息,復(fù)制到幀數(shù)據(jù)C語言結(jié)構(gòu)體相關(guān)域,應(yīng)用程序通過訪問該結(jié)構(gòu)體即可完成信息的訪問。

      2 設(shè)計方案概述

      2.1 幀協(xié)議描述語言

      文中設(shè)計的幀協(xié)議描述語言是為了描述常用的通信協(xié)議而提出的一種專用描述語言,通過該語言可使設(shè)計人員方便的描述通信幀結(jié)構(gòu)。幀協(xié)議描述語言主要包括詞法部分和語法部分。詞法主要包括對幀協(xié)議語言所使用的關(guān)鍵字和保留符號的描述。為了使設(shè)計的描述語言符合開發(fā)人員慣用的方式,文中定義了6類關(guān)鍵字和4類保留符號,如表1所示。

      表1 幀描述語言中的關(guān)鍵字和保留符號Tab.1 Keywords and reserved symbols in frame description language

      幀協(xié)議描述語言語法部分采用了常見的上下文無關(guān)文法來定義。文中設(shè)計的幀協(xié)議描述語言的主要語法元素包括幀、域、變量和數(shù)組,具體的語法結(jié)構(gòu)定義如表2所示。

      表2 幀描述語言的語法元素Tab.2 Syntax element in frame description language

      2.2 基于Flex工具的詞法分析

      Flex是lex工具的開源版本[4],它的主要功能是根據(jù)用戶定義的詞法規(guī)則,生成面向字符流的自動掃描程序,將字符流分解為獨立的token和token所對應(yīng)的詞法屬性。采用flex編寫的詞法分析程序主要包括3部分,每一部分用%%號分開。其中第一部分為引用的頭文件,變量聲明等;第二部分為詞法規(guī)則定義的部分;第三部分為用戶定義的函數(shù)。每個詞法規(guī)則都由模式和動作兩部分構(gòu)成。其中模式部分采用正則表達式來定義,當(dāng)字符流中出現(xiàn)了符合該正則表達式的部分時,詞法掃描程序?qū)?zhí)行該模式對應(yīng)的動作。

      幀協(xié)議描述語言詞法分析主要包括對描述語言所定義的關(guān)鍵字、保留符號和合法標(biāo)志符的識別,其部分flex程序如下:

      上述程序通過flex工具編譯并生成詞法分析程序后,即可對幀協(xié)議語言進行詞法分析,該程序遇到int等關(guān)鍵字,會返回該關(guān)鍵字屬性;在遇到合法標(biāo)志符時,會將yytext中該標(biāo)志字符串復(fù)制到y(tǒng)ylval.idName域中,返回變量屬性;在遇到整型字符串時,會將yytext中的字符串轉(zhuǎn)為整型,賦值到y(tǒng)ylval.iVal域中,返回整型屬性。

      2.3 基于Bison工具的語法分析

      Bison工具作為yacc的開源版本[4],主要功能是根據(jù)用戶定義的上下文無關(guān)文法來描述語言規(guī)則,從而生成語法分析的程序。Bison程序的結(jié)構(gòu)與flex類似,同樣采用%%將文件分為3部分,第一部分包含頭文件聲明、函數(shù)聲明等;第二部分包括所有的語法規(guī)則表達式,也是語法分析的主要部分;第三部分是用戶自定義函數(shù),主要包含幀協(xié)議描述文件的打開、關(guān)閉,輸出文件的創(chuàng)建等工作。

      幀協(xié)議描述語言的bison文件的規(guī)則部分是主要構(gòu)成部分。bison文件的規(guī)則部分將幀協(xié)議語法描述為一套產(chǎn)生規(guī)則,每條規(guī)則都由

      它表示一個通信幀由幀名稱和一個或多個域構(gòu)成,對應(yīng)的動作是生成這條通信幀的C語言結(jié)構(gòu)體的定義。幀描述語言完整的規(guī)則部分如下:

      Bison語法分析程序采用LALR分析方法[5-6]將詞法分析程序返回的token序列與給定的語法規(guī)則匹配,并依據(jù)匹配的語法部分構(gòu)建成相應(yīng)的語法樹。在幀語言文件分析結(jié)束后,相對應(yīng)的語法樹也已建立,此時語法分析階段結(jié)束,由主程序調(diào)用語義分析函數(shù)完成幀協(xié)議分析函數(shù)的生成。

      幀協(xié)議描述語言的語義分析部分主要是從根節(jié)點遍歷語法部分構(gòu)成的語法樹,并根據(jù)樹中每個節(jié)點的不同類型,產(chǎn)生相應(yīng)的標(biāo)準(zhǔn)C代碼。語義部分通過3次遍歷語法樹,分別產(chǎn)生幀結(jié)構(gòu)定義,幀數(shù)據(jù)解析函數(shù)和幀數(shù)據(jù)釋放函數(shù)。

      3 試驗驗證

      將文中設(shè)計的協(xié)議自動化解析器應(yīng)用到某通信系統(tǒng)單元中,該單元的授時幀格式如表3所示。

      表3 授時協(xié)議Tab.3 Time sync protocol

      根據(jù)表3,可采用協(xié)議描述語言將授時幀描述如下:

      將輸出的文件通過C編譯器編譯,編譯順利通過。該試驗結(jié)果顯示,協(xié)議自動化解析器生成的C代碼可以取代手工代碼開發(fā),應(yīng)用程序通過調(diào)用time_sync_frame_anaylze_fn函數(shù)即可完成授時幀的解析,并在函數(shù)返回后可直接訪問返回變量中的域,提取相關(guān)信息。如果授時幀協(xié)議有修改,開發(fā)人員只需要修改幀協(xié)議描述文件,自動化解析器將自動完成C代碼的生成,這極大地減少了開發(fā)人員的負擔(dān)。

      4 結(jié)束語

      文中開發(fā)自動化解析器可減少大量的代碼編寫工作,并且編碼的準(zhǔn)確性有很大提高。針對通信幀協(xié)議的更新,開發(fā)人員只需要修改幀協(xié)議描述文件,這簡化了幀協(xié)議代碼的維護工作,降低了幀協(xié)議開發(fā)的難度,在通信協(xié)議軟件開發(fā)方面具有很強的實用性。

      [1]Iseminger D.網(wǎng)絡(luò)連接服務(wù)開發(fā)人員參考庫RPC與WNet[M].3卷.北京:機械工業(yè)出版社,2001.

      [2]許瓊,蔡文皓.一種嵌入式RPC的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2011(5):127-129.

      XU Qiong,CAI Wen-hao.Design and implementation of embedded RPC[J].Electronic Design Engineering,2011(5):127-129.

      [3]董立,趙恒永.基于編譯技術(shù)的協(xié)議解析方法[J].計算機工程,2007(11):66-68.

      DONG Li,ZHAO Heng-yong.Protocol parsing method based on compiling technology[J].Computer Engineering,2007(11):66-68.

      [4]利文.flex與bison[M].中文版.南京:東南大學(xué)出版社,2011.

      [5]丁文魁,杜淑敏.編譯原理和技術(shù)[M].北京:電子工業(yè)出版社,2008.

      [6]劉堅.編譯原理基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2008.

      猜你喜歡
      解析器詞法開發(fā)人員
      基于多解析器的域名隱私保護機制
      基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實現(xiàn)
      Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
      如何防御DNS陷阱?常用3種DNS欺騙手法
      一種基于無關(guān)DNS的通信隱私保護技術(shù)研究
      電子世界(2018年14期)2018-04-15 16:14:25
      應(yīng)用于詞法分析器的算法分析優(yōu)化
      談對外漢語“詞法詞”教學(xué)
      讓W(xué)indows 10進入開發(fā)者模式
      電腦迷(2015年12期)2015-04-29 23:22:51
      后悔了?教你隱藏開發(fā)人員選項
      電腦愛好者(2015年6期)2015-04-03 01:20:56
      2010年高考英語“相似”考題例析
      南康市| 土默特左旗| 宝应县| 阜新市| 大邑县| 高平市| 青州市| 桦南县| 秦皇岛市| 托克托县| 铜陵市| 临西县| 新昌县| 托里县| 八宿县| 河西区| 大竹县| 闽侯县| 吴忠市| 大石桥市| 娄烦县| 贺州市| 安阳县| 潜江市| 犍为县| 丰镇市| 石柱| 石棉县| 肃宁县| 饶河县| 阿城市| 龙里县| 台北县| 浙江省| 屏山县| 东乌珠穆沁旗| 大荔县| 东方市| 河东区| 聊城市| 武宣县|