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
主站蜘蛛池模板: 亚洲人精品亚洲人成在线| 欧美激情综合一区二区| 拍国产真实乱人偷精品| 99九九成人免费视频精品| 99热这里只有精品久久免费| 日本尹人综合香蕉在线观看| 88国产经典欧美一区二区三区| 亚洲av无码人妻| 香蕉网久久| 欧美中文一区| 亚洲日本中文字幕天堂网| 日韩无码真实干出血视频| 中文天堂在线视频| 无码区日韩专区免费系列| 国产人妖视频一区在线观看| 日韩无码黄色| 91视频区| 日韩中文无码av超清| 2020最新国产精品视频| 曰韩人妻一区二区三区| 日韩无码黄色| 国产91特黄特色A级毛片| 国产区人妖精品人妖精品视频| 欧美不卡视频一区发布| AV网站中文| 亚洲美女一区| 69av免费视频| 91小视频在线| 日韩国产精品无码一区二区三区| 一边摸一边做爽的视频17国产| 一级爱做片免费观看久久| 亚洲 欧美 偷自乱 图片| 亚洲一区二区在线无码| 伊在人亚洲香蕉精品播放| 亚洲天堂成人| 日韩高清中文字幕| 欧美成人综合视频| 正在播放久久| 亚洲国产理论片在线播放| AV无码一区二区三区四区| 天堂网国产| 欧美a在线| 国产网站黄| 好紧好深好大乳无码中文字幕| 丰满人妻中出白浆| 国产区在线观看视频| 亚洲福利视频网址| 国产白浆在线| 精品亚洲国产成人AV| 91亚洲国产视频| 一本大道视频精品人妻| 香蕉eeww99国产在线观看| 中文字幕啪啪| 国产熟女一级毛片| 亚洲第一天堂无码专区| 国产主播一区二区三区| 午夜免费小视频| 亚洲人妖在线| 国产乱子伦精品视频| 国产免费好大好硬视频| 国产成人一区| 中文字幕在线日本| 青青青视频免费一区二区| 亚洲黄网在线| 国产色伊人| 免费女人18毛片a级毛片视频| 国产免费自拍视频| 亚洲美女一区| 亚洲国产精品日韩专区AV| 午夜综合网| 亚洲一区精品视频在线| 成人福利免费在线观看| AV无码国产在线看岛国岛| 久久一级电影| 欧美一区福利| 国产激爽爽爽大片在线观看| 日韩欧美国产成人| 国产亚洲视频免费播放| 国产成人精品免费视频大全五级| 黄色网页在线观看| 一本一道波多野结衣一区二区 | 丰满人妻一区二区三区视频|