亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        工業(yè)機器人解釋器的設(shè)計與實現(xiàn)

        2018-07-04 05:58:14王福印呂???/span>
        機械制造與自動化 2018年3期
        關(guān)鍵詞:指令語義分析

        王福印,呂???/p>

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

        0 引言

        工業(yè)機器人解釋器是機器人軟件系統(tǒng)的關(guān)鍵組成部分。作為機器人控制系統(tǒng)與機器人語言的接口,解釋器負(fù)責(zé)讀取機器人源程序,并生成運動控制模塊所識別的目標(biāo)數(shù)據(jù)。解釋器的效率與質(zhì)量是影響機器人運行精度、實時性與穩(wěn)定性的控制性因素[1]。

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

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

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

        1 解釋器基本構(gòu)架

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

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

        圖1 解釋器整體流程圖

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

        2.1 PCRE正則表達式

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

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

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

        2.2 詞法、語法分析

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

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

        #define PCRE_MOVJ “MOVJ (\s+)P\d{1,3}(\s*),(\s*)V(\d{1,2}|100)(\s+),\s*Z[0-4](\s+)”;對應(yīng)的詞法匹配正則表達式為:#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 第一遍掃描流程圖

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

        3 語義分析與信息提取

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

        Struct SProc_Codelist

        {

        int rowNum;

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

        int nType;// 指令關(guān)鍵字的宏定義

        struct SProc_Codelist *front;

        struct SProc_Codelist *next;

        };

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

        圖4 第二遍掃描流程圖

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

        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 實驗結(jié)果

        圖5以VS2010作為開發(fā)工具實現(xiàn)的離線編程系統(tǒng)主界面,含三維視圖顯示窗口、指令選擇窗口、程序編輯窗口、運動控制窗口和信息輸出窗口??梢酝ㄟ^離線編程或?qū)朐闯绦蛭募崿F(xiàn)運動模擬。

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

        圖5 離線仿真系統(tǒng)

        圖6 指令代碼信息提取結(jié)果

        5 結(jié)語

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

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

        [2] 郭顯金. 工業(yè)機器人編程語言的設(shè)計與實現(xiàn)[D]. 武漢:華中科技大學(xué),2013.

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

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

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

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

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

        猜你喜歡
        指令語義分析
        聽我指令:大催眠術(shù)
        隱蔽失效適航要求符合性驗證分析
        語言與語義
        ARINC661顯控指令快速驗證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        電力系統(tǒng)不平衡分析
        電子制作(2018年18期)2018-11-14 01:48:24
        電力系統(tǒng)及其自動化發(fā)展趨勢分析
        “上”與“下”語義的不對稱性及其認(rèn)知闡釋
        認(rèn)知范疇模糊與語義模糊
        坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
        機電信息(2014年27期)2014-02-27 15:53:56
        国产黄色三级一区二区三区四区| 亚洲成人观看| 四虎无码精品a∨在线观看| 精品麻豆一区二区三区乱码| 吃奶摸下高潮60分钟免费视频| 国产熟妇高潮呻吟喷水| 亚洲另类激情综合偷自拍图| 四虎在线中文字幕一区| 国产成人av一区二区三区不卡| 欧美一区二区三区红桃小说| 亚洲AV无码成人网站久久精品| 亚洲综合网中文字幕在线| 精品国产一区二区三区不卡在线| 女人让男人桶爽30分钟| 亚洲一区综合精品狠狠爱| 亚洲一本之道高清在线观看| av影院在线免费观看不卡| 久久久日韩精品一区二区三区| 国产一级免费黄片无码AV| 中文字幕人妻乱码在线| 国产精品无码制服丝袜| 亚洲男人的天堂网站| 国产视频在线一区二区三区四区 | 中文字幕有码在线人妻| 欧美乱大交xxxxx潮喷| 国产亚洲美女精品久久久| 无码伊人久久大蕉中文无码| 国产的自拍av免费的在线观看 | 国产va免费精品观看精品| 99久久久无码国产精品免费砚床| 亚洲中文字幕无码不卡电影| 亚洲天堂av福利在线| 亚洲中文字幕久久无码精品| 久久国产自偷自免费一区100| 亚洲麻豆av一区二区| 亚洲中国精品精华液| 国产成人综合在线视频| 久久AⅤ天堂Av无码AV| 亚洲av综合色区一区二区| 欧美日韩精品一区二区三区高清视频| 亚洲国产成人精品福利在线观看|