999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于編譯技術的協議自動化解析程序的設計

2012-07-13 06:28:58
電子設計工程 2012年13期
關鍵詞:定義

鄧 偉 , 石 煒

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

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

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

筆者針對上述解決方案的不足,提出了一種接近于幀協議文本的幀協議描述語言,并利用編譯技術實現了一種自動化解析器,該解析器將幀協議描述語言自動轉換為標準C語言的數據類型,并生成相應的解析函數和釋放函數。利用該方案,開發人員只需要針對協議文本中的幀結構編寫相應的幀協議描述說明,自動化解析器可根據幀協議描述說明自動生成相應的解析程序。開發人員調用生成的解析函數,即可提取出幀數據中包含的信息。該方案相對于RPC機制,減少了對系統環境的需求,極大地擴展了該方案的適用性。

1 總體設計方案

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

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

協議自動解析器首先對幀格式描述語言進行詞法分析和語法分析,根據分析結果生成標準C語言的數據結構定義和幀數據的解析函數。由于在幀數據的解析的過程中,需要動態的分配系統內存,因此自動化解析器還生成了對應的內存釋放函數。這樣避免了開發人員手工編寫內存釋放代碼可能存在的內存泄露問題。將自動化解析器生成的C代碼通過C編譯器編譯變為可執行代碼。當某幀數據到達時,利用可執行代碼即可完成幀協議的解析,并提取相應的信息,復制到幀數據C語言結構體相關域,應用程序通過訪問該結構體即可完成信息的訪問。

2 設計方案概述

2.1 幀協議描述語言

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

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

幀協議描述語言語法部分采用了常見的上下文無關文法來定義。文中設計的幀協議描述語言的主要語法元素包括幀、域、變量和數組,具體的語法結構定義如表2所示。

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

2.2 基于Flex工具的詞法分析

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

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

上述程序通過flex工具編譯并生成詞法分析程序后,即可對幀協議語言進行詞法分析,該程序遇到int等關鍵字,會返回該關鍵字屬性;在遇到合法標志符時,會將yytext中該標志字符串復制到yylval.idName域中,返回變量屬性;在遇到整型字符串時,會將yytext中的字符串轉為整型,賦值到yylval.iVal域中,返回整型屬性。

2.3 基于Bison工具的語法分析

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

幀協議描述語言的bison文件的規則部分是主要構成部分。bison文件的規則部分將幀協議語法描述為一套產生規則,每條規則都由

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

Bison語法分析程序采用LALR分析方法[5-6]將詞法分析程序返回的token序列與給定的語法規則匹配,并依據匹配的語法部分構建成相應的語法樹。在幀語言文件分析結束后,相對應的語法樹也已建立,此時語法分析階段結束,由主程序調用語義分析函數完成幀協議分析函數的生成。

幀協議描述語言的語義分析部分主要是從根節點遍歷語法部分構成的語法樹,并根據樹中每個節點的不同類型,產生相應的標準C代碼。語義部分通過3次遍歷語法樹,分別產生幀結構定義,幀數據解析函數和幀數據釋放函數。

3 試驗驗證

將文中設計的協議自動化解析器應用到某通信系統單元中,該單元的授時幀格式如表3所示。

表3 授時協議Tab.3 Time sync protocol

根據表3,可采用協議描述語言將授時幀描述如下:

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

4 結束語

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

[1]Iseminger D.網絡連接服務開發人員參考庫RPC與WNet[M].3卷.北京:機械工業出版社,2001.

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

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

[3]董立,趙恒永.基于編譯技術的協議解析方法[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].中文版.南京:東南大學出版社,2011.

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

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

猜你喜歡
定義
以愛之名,定義成長
活用定義巧解統計概率解答題
例談橢圓的定義及其應用
題在書外 根在書中——圓錐曲線第三定義在教材和高考中的滲透
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
嚴昊:不定義終點 一直在路上
華人時刊(2020年13期)2020-09-25 08:21:32
定義“風格”
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
有壹手——重新定義快修連鎖
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 波多野结衣在线se| 日韩福利在线视频| 国产亚洲欧美日本一二三本道| 日韩在线欧美在线| 欧美国产在线一区| 亚洲男人在线天堂| 久久黄色免费电影| 波多野结衣久久精品| 亚洲综合二区| 呦视频在线一区二区三区| 欧美色视频日本| 真实国产精品vr专区| 亚洲国产日韩在线成人蜜芽| 亚洲天堂视频在线观看免费| 久久婷婷国产综合尤物精品| 巨熟乳波霸若妻中文观看免费 | 美女视频黄频a免费高清不卡| 亚洲成aⅴ人在线观看| 欧美一级在线看| 久久综合色天堂av| 在线无码私拍| 无码精油按摩潮喷在线播放| 香蕉久人久人青草青草| 精品视频在线观看你懂的一区| 中国国产一级毛片| 国产一区二区精品高清在线观看| 国产欧美精品午夜在线播放| 毛片一级在线| 免费一级毛片在线观看| 久久久久无码国产精品不卡| 色综合天天操| 国产丰满成熟女性性满足视频| 亚洲天堂高清| 精品無碼一區在線觀看 | 少妇被粗大的猛烈进出免费视频| 国产91色在线| 日韩欧美成人高清在线观看| 狼友视频一区二区三区| 欧美日一级片| 欧美69视频在线| 在线综合亚洲欧美网站| 色九九视频| 99视频全部免费| 1级黄色毛片| 欧美日韩va| AV天堂资源福利在线观看| 中国毛片网| 国产日韩久久久久无码精品| 亚洲男人的天堂网| 久久久久久尹人网香蕉| 中文字幕无码中文字幕有码在线| 亚洲激情区| 国产一级二级三级毛片| 亚洲第一黄色网| 国产成人91精品| 国产成人av一区二区三区| 欧美午夜视频在线| 亚洲综合色区在线播放2019| 伊人国产无码高清视频| 久热99这里只有精品视频6| 久久精品一品道久久精品| 成人在线欧美| 国产精品自拍合集| 91成人在线观看视频| 国产精品偷伦视频免费观看国产| 97se亚洲综合不卡 | 国产午夜福利亚洲第一| 亚洲男女在线| 色窝窝免费一区二区三区| 国产网站免费观看| 国产在线麻豆波多野结衣| 少妇人妻无码首页| 国产一区二区三区日韩精品| 亚洲第一成年免费网站| 无码一区中文字幕| 免费国产小视频在线观看| 国产浮力第一页永久地址| 人人爱天天做夜夜爽| 国产精品女熟高潮视频| 色噜噜综合网| 欧美日韩综合网| 97无码免费人妻超级碰碰碰|