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

工業機器人解釋器的設計與實現

2018-07-04 05:58:14王福印呂常魁
機械制造與自動化 2018年3期
關鍵詞:指令語義分析

王福印,呂常魁

(南京航空航天大學 機電學院,江蘇 南京 210016)

0 引言

工業機器人解釋器是機器人軟件系統的關鍵組成部分。作為機器人控制系統與機器人語言的接口,解釋器負責讀取機器人源程序,并生成運動控制模塊所識別的目標數據。解釋器的效率與質量是影響機器人運行精度、實時性與穩定性的控制性因素[1]。

解釋器一般包括詞法分析、語法分析、語義分析3個基本邏輯環節。傳統詞法分析與語法分析一般是依次讀入單字符,將字符分成運算符、終結符和非終結符等,再按照一定的文法規則進行歸約,構造語法樹并識別語法錯誤;語義分析階段則通過遍歷語法樹來實現語法制導的翻譯過程[2],最終生成目標代碼。然而單字符讀取與語法樹遍歷的解釋模式往往導致解釋過程算法復雜,效率低下。

正則表達式采用直接匹配的解釋模式,具有開放性、高效性等特點,在機器人解釋器設計中被廣泛采用。如文獻[2]應用Linux系統自帶的regcomp()和regexec()正則表達式處理庫函數,完成機器人語言解釋器的語法分析;文獻[3]基于QT設計了機器人語言系統,采用QRegExp正則表達式規范機器人語言編輯格式,簡化了詞法分析、語法分析過程;文獻[4]在VC開發環境下,通過調用GREAT正則表達式模板類庫,對指令代碼進行語法分析。

本文基于PCRE正則表達式,提出兩遍掃描的解釋模式:在第一遍掃描中應用PCRE正則表達式完成程序指令的詞法、語法分析;第二遍掃描中采用雙向鏈表結構形式,管理程序中的每條指令,通過查關鍵字表跳轉到相應的處理函數,完成語義分析、信息提取及目標代碼的生成。實驗結果表明,解釋算法穩定可靠,具有較高的執行效率。

1 解釋器基本構架

動作級機器人語言以控制指令和尺寸信息為主,每一行程序即為一條指令,形式簡單,格式固定。這一特征可以直接通過匹配完成語法分析,通過查詢關鍵字表,直接轉入行指令對應的處理模塊,實現快速語義分析。鑒于此,在解釋器的實現過程中,綜合考慮程序結構、執行效率和內存消耗等因素,采用兩遍掃描的方式[2,5-6]。其流程如圖1所示。

第一遍掃描只進行詞法和語法分析即錯誤檢測,不進行有關數據的處理。解釋器逐行讀取源程序,與初始化后的正則表達式進行整行匹配,若匹配有誤,說明程序指令存在語法錯誤,則對該指令進行詞法匹配,輸出錯誤信息。若指令沒有錯誤則進行第二遍掃描,完成語義分析、信息提取和目標代碼生成。兩遍掃描相互獨立,可單獨調用。

圖1 解釋器整體流程圖

2 基于PCRE正則表達式的詞法、語法分析

2.1 PCRE正則表達式

正則表達式是由一系列普通字符和元字符組成的,能明確描述文本字符串的文字匹配模式[7]。PCRE是一個用C語言編寫的正則表達式函數庫,比Boost之類的正則表達式庫小得多,簡單易用,性能超過了POSIX正則表達式庫和一些經典的正則表達式庫。

PCRE在VS2010編譯環境下的配置過程十分方便,步驟如下:1) 新建篩選器,命名為pcre;2) 將PCRE軟件包頭文件及可執行文件添加至pcre文件夾;3) 將pcre中可執行文件屬性改為不使用預編譯頭;4) 修改工程屬性,添加宏“_DEBUG”和“HAVE_CONFIG_H”。

Pcre正則表達式提供了19個接口函數。本文采用PCRE進行語法、詞法分析時只需調用現有的IsMathch(const char *szPattern,const char *szSrc)函數,參數szPattern為宏定義的指令代碼字符串,參數szSrc為要匹配的指令代碼。若匹配成功,函數返回值>0,反之<0。該函數中已封裝了PCRE正則表達式的pcre_compile()和pcre_exec()接口函數,與傳統調用正則表達式的過程相比,實現方式簡單、編程難度明顯減小。

2.2 詞法、語法分析

研究的語言屬于動作級機器人語言,結構清晰固定,如運動指令MOVJ P* ,V20 ,Z0 ;流程控制指令JUMP LAB0。此外,在工業機器人實際編程中通常以“選擇題式”輸入的方式編程,每一行的程序格式由指令編輯器軟件嚴格設定,這種形式有效避免了非字符及非法語法的產生。本文設計的指令窗口,如圖2所示。指令代碼由樹形控件管理,當雙擊選中的指令,指令將顯示在程序編輯窗口中。為檢查在參數修改過程中,人為因素帶來的詞法語法錯誤,本文提出利用PCRE正則表達式進行先語法后詞法的的快速檢查方法,其流程圖如圖3所示。

首先,解釋器根據PCRE正則表達式規則建立指令代碼的語法和詞法匹配表達式,并定義成宏的形式,再將語法匹配表達式裝載到數組中以備循環匹配。以運動指令MOVJ為例,定義其語法匹配的正則表達式如下:

#define PCRE_MOVJ “MOVJ (\s+)P\d{1,3}(\s*),(\s*)V(\d{1,2}|100)(\s+),\s*Z[0-4](\s+)”;對應的詞法匹配正則表達式為:#define PCRE_P “P\d{1,3}(\s+)”、#define PCRE_V “V(\d{1,2}|100)(\s+)”、#define PCRE_Z “Z[0-4](\s+);”。

圖2 指令窗口

圖3 第一遍掃描流程圖

初始化后,程序讀取一行代碼進行整體匹配。若匹配正確,則說明此行代碼語法正確,程序跳出循環進行下一行代碼匹配;若整體匹配有誤,則程序跳轉到該指令對應的處理函數完成詞法分析,并在輸出窗口輸出發生錯誤的行號和類型。然后讀取下一行代碼繼續匹配,直至代碼行為空,完成對全部指令程序的錯誤檢查。

3 語義分析與信息提取

第一遍掃描如果沒有錯誤則進行第二遍掃描完成語義分析、信息提取和目標代碼的生成。在此采用一個雙向鏈表結構管理源程序段,即鏈表中每一節點對應一行指令;鏈表結構如下:

Struct SProc_Codelist

{

int rowNum;

char comName[100];//指令代碼

int nType;// 指令關鍵字的宏定義

struct SProc_Codelist *front;

struct SProc_Codelist *next;

};

雙鏈表結構的特點是從雙鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和后驅結點,使得上下級存在制約關系的指令代碼的分析變得簡單方便。語義檢查、信息提取和目標代碼的生成均通過讀取鏈表實現,分析流程圖如圖4所示。

圖4 第二遍掃描流程圖

nType用于存儲宏形式定義的指令關鍵字,如運動指令MOVJ的宏定義為:#define MOVJ 1。nType的值通過查找關鍵字數組表獲得。若讀取指令不為空,根據關鍵字調用相應的語義分析函數,若語義分析正確,則進行該指令代碼的信息提取并生成目標代碼;若語義分析有誤,則輸出錯誤信息,程序停止運行。本文對于每一種指令類型,都設計了對應的分析處理函數接口。結構形式如下:

switch(Codelist_p->nType)

{

case MOVJ:deal_Motion_MOVJ();break;

case MOVL:deal_Motion_MOVL();break;

case MOVC:deal_Motion_MOVC();break;

default:break;

}

4 實驗結果

圖5以VS2010作為開發工具實現的離線編程系統主界面,含三維視圖顯示窗口、指令選擇窗口、程序編輯窗口、運動控制窗口和信息輸出窗口。可以通過離線編程或導入源程序文件實現運動模擬。

為驗證該解釋器的有效性,應用上述系統對機器人指令進行了大量解釋試驗。結果顯示該解釋器能夠正確解釋機器人指令,當代碼出錯時,能夠正確輸出錯誤信息。在指令信息提取的正確性方面,以圖5所示的編輯代碼為例,結果顯示,機器人能夠正確按照指令實現運動模擬。在DOS環境下輸出解釋器提取的示教點信息和生成的目標代碼(圖6),與實際數據吻合。

圖5 離線仿真系統

圖6 指令代碼信息提取結果

5 結語

針對工業機器人語言形式簡單、格式固定等特點,提出了兩遍掃描的解釋模式。基于PCRE正則表達式,采用先整體后局部的匹配方法完成首次掃描,實現了語法、詞法的快速檢測;為每一指令建立了相應處理函數,并生成了關鍵字表以便于函數查詢。二次掃描過程中,采用雙向鏈表結構形式進行指令管理,通過關鍵字表查詢快速跳轉至相應處理函數,完成語義分析、信息提取及目標代碼的生成。程序結構清晰,解釋算法簡單且各模塊相互獨立,易于維護。實驗結果表明,該解釋器能夠快速完成錯誤檢測,并可靠提取指令相關信息。

[1] 周澤湘, 丁躍澆,張敏. 工業機器人解釋器的研究與設計[J]. 機械設計與制造, 2012(12): 154-156.

[2] 郭顯金. 工業機器人編程語言的設計與實現[D]. 武漢:華中科技大學,2013.

[3] 楊杏,陳富林,周霏. 基于Qt的工業機器人語言系統的設計[J]. 組合機床與自動化加工技術,2015(3):71-74.

[4] 何嘉健,李偉光. 基于GRETA正則表達式的機器人解釋器的研究[J]. 組合機床與自動化加工技術,2012(1):17-19,24.

[5] 王浩,謝存禧. 開放式機器人解釋器的研究[J]. 機械設計與制造,2010(8) :167-168.

[6] 王浩. 基于XML的開放式工業機器人解釋器的研究[D]. 廣州:華南理工大學,2010.

[7] Jeffrey E.F.Friedl. 精通正則表達式[M]. 北京:電子工業出版社,2007.

猜你喜歡
指令語義分析
聽我指令:大催眠術
隱蔽失效適航要求符合性驗證分析
語言與語義
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統及其自動化發展趨勢分析
“上”與“下”語義的不對稱性及其認知闡釋
現代語文(2016年21期)2016-05-25 13:13:44
認知范疇模糊與語義模糊
坐標系旋轉指令數控編程應用
機電信息(2014年27期)2014-02-27 15:53:56
主站蜘蛛池模板: 亚洲VA中文字幕| 国产黑人在线| 尤物视频一区| 欧美亚洲激情| 国产精品一线天| 亚洲色无码专线精品观看| 久久精品视频亚洲| 成年看免费观看视频拍拍| 国产超碰一区二区三区| 日韩欧美91| 免费在线国产一区二区三区精品| 91破解版在线亚洲| 亚洲IV视频免费在线光看| 国产精品爽爽va在线无码观看 | 亚洲人成在线免费观看| 国产精品免费电影| 亚洲天堂免费| 亚洲天堂视频在线播放| 国产成人做受免费视频| 精品夜恋影院亚洲欧洲| 欧美一级高清免费a| 久久精品国产精品一区二区| 国产女人综合久久精品视| 亚洲精品午夜天堂网页| 欧美亚洲一二三区| 91小视频在线| 国产在线精彩视频二区| 国产男女免费完整版视频| 国产人成在线观看| 高清免费毛片| 91久久大香线蕉| 亚洲成人免费在线| 一本一道波多野结衣一区二区 | 国产麻豆91网在线看| 国产永久在线视频| 亚洲天堂首页| 99久久亚洲综合精品TS| 国产素人在线| 欧美成人免费| 亚洲色图欧美一区| 无码高潮喷水专区久久| 国产污视频在线观看| 欧美日韩国产系列在线观看| 久久人人爽人人爽人人片aV东京热| 色天堂无毒不卡| 国产大片喷水在线在线视频| 欧美福利在线观看| 国产真实二区一区在线亚洲| 中文字幕一区二区视频| 成年免费在线观看| 日本不卡视频在线| 国产精品福利在线观看无码卡| vvvv98国产成人综合青青| 欧美a级在线| 美女无遮挡免费网站| 美女视频黄频a免费高清不卡| 手机成人午夜在线视频| 久久亚洲AⅤ无码精品午夜麻豆| 日韩av手机在线| 国产哺乳奶水91在线播放| 亚洲精品成人福利在线电影| 超薄丝袜足j国产在线视频| 亚洲水蜜桃久久综合网站| 亚洲天堂.com| 国产成人综合亚洲欧美在| 欧美激情视频二区| 国产黄网永久免费| 国产精品私拍99pans大尺度| jizz在线免费播放| 91午夜福利在线观看| 久久久噜噜噜久久中文字幕色伊伊| 欧美性色综合网| 五月丁香伊人啪啪手机免费观看| 日韩AV无码免费一二三区| 日韩欧美国产成人| 思思热在线视频精品| jizz国产视频| 亚洲无码熟妇人妻AV在线| 亚洲美女一区二区三区| 亚洲第一视频网| 热re99久久精品国99热| 欧美成人精品在线|