一种应用于工业机器人编程语言的语法检查方法技术

技术编号:26790144 阅读:47 留言:0更新日期:2020-12-22 17:05
本发明专利技术公开了一种应用于工业机器人编程语言的语法检查方法,针对由计算机通用语言改进而来的机器人语言,将指令语法分类归纳为一个语法说明文档,读取程序变量数据和程序语句,按照指令详细说明中程序流控制指令将程序进行分割,计算每行语句的嵌套层级指数,最后逐行查找指令,检查指令的参数个数和参数类型、检查指令的分隔符等;将每行的检查结果汇总,形成语法检查的结果。本发明专利技术定制化机器人语言语法,可以快速完成指令的新增、删除和更改;按照层级指数将程序进行分割,快速检查。

【技术实现步骤摘要】
一种应用于工业机器人编程语言的语法检查方法
本专利技术涉及语法词法分析领域,特别是一种工业机器人编程语言的语法检查方法。
技术介绍
高效准确的词法语法分析是实现工业机器人语言程序向可执行目标代码翻译的关键之一。从国内外研发的各种机器人语言来看,机器人语法的发展方式分为三种:1)产生一种全新的语言;2)对计算机通用语言进行修改和增加一些句法或者规则;3)在原计算机编程语言上增加新的子程序。现有的语法检查方法,主要存在以下缺点:1)可扩展性较低:没有将机器人编程指令抽象归纳为统一形式的指令说明文档,增加指令时工作量较大;2)检查效率低:按照从上到下的顺序依次检查每行指令语句,没有将编程语句分块检查。
技术实现思路
本专利技术的目的在于提供一种应用于工业机器人编程语言的语法检查方法。实现本专利技术目的的技术方案为:一种应用于工业机器人编程语言的语法检查方法,包括以下步骤:步骤1、设计并编写语法详细说明文档;步骤2、读取机器人程序内容,读取机器人指令语法说明;步骤3、提取嵌套结构,计算层级指数;步骤4、按照语法说明逐行语句进行检查。进一步的,语法详细说明文档的设计方法为:将指令名称、指令类型、指令参数、指令参数类型、依赖指令、伙伴指令填充到XML节点树中,指令的通用形式如下:进一步的,步骤2读取程序内容和指令说明,具体为:读取机器人程序的内容,包括机器人语言的代码语句Sentences[0:n]和变量信息Vars[0:m];读取机器人语言文档中的指令说明CmdInfos[0:k];根据指令说明CmdInfos,逐行查找每行语句中的指令名称;语句的指令名称查找结果分为三种:无指令、一个指令、多个指令;其中,机器人程序包括编程语句文本和编程语句中变量信息文本;Sentences[0:n]表示n行编程语句组成的数组;Vars[0:m]表示n行编程中包含的m个变量信息,包括机器人位置姿态变量、数字量IO控制变量、模拟量IO控制变量等;CmdInfos[0:k]表示权利要求2中语法详细说明文档包含的k个指令说明数组。进一步的,计算层级指数的递归算法,其步骤如下:Step1:语句段所有语句遍历完毕,返回本语句段的层级指数并结束;Step2:当前语句不是控制流起始语句时,当前行语句的层级指数为level,存储该结果,索引指向下一行语句,继续Step1;否则,执行Step3;Step3:查找控制流终止语句;控制流起始和终止语句的层级指数均为level,并将控制流起始语句和控制流终止语句之间的子语句段SubSentences[j:k]分割,递归调用alg_sentence_level,将SubSentences[j:k]作为参数输入,该子语句段的初始指数为level+1;Step4:按照存储顺序,先存储控制流起始语句的层级指数,再存储语句段SubSentences[j:k]的层级指数列表,最后存储控制流终止语句的层级指数。其中,算法名称:alg_sentence_level;输入:语句Sentences[0:n]、初始指数level;输出:按照行号依次存储的语句层级指数列表;SubSentences[j:k]表示当前控制流指令包含的子语句段,j,k分别代表子语句段在编程语句数组中的起始索引和终止索引。本专利技术与现有技术相比,其显著优点为:(1)定制化机器人语言语法,可以快速完成指令的新增、删除和更改。(2)按照层级指数将程序进行分割,快速检查。下面结合附图对本专利技术作进一步详细描述。附图说明图1是本专利技术进行语法检查的流程图。图2是本专利技术计算语句层级指数的流程图。具体实施方式本专利技术针对
技术介绍
中方式2)的机器人语言,将指令语法分类归纳为一个语法说明文档,读取程序变量数据和程序语句,按照指令详细说明中程序流控制指令将程序进行分割,计算每行语句的嵌套层级指数,最后逐行查找指令,检查指令的参数个数和参数类型、检查指令的分隔符等。将每行的检查结果汇总,形成语法检查的结果。XML是(ExtentsibleMarkupLanguage)可扩展标记语言的缩写,XML文档用来描述数据。本专利技术使用XML文档来存储机器人语言的指令说明。递归是一种分析和解决问题的方法和思想,从形式上来看它是函数直接或间接地调用自己。当待解决的问题满足以下两个条件,则可用递归方法求解:1)问题可以分解为规模更小但与原问题性质相同的子问题;2)具备递归终止条件。如图1所示,本专利技术提出一种应用于工业机器人编程语言的语法检查方法,包括以下步骤:步骤1:设计机器人语言的指令说明文档将指令按照运动控制、控制流、IO信号控制、系统设置、运算等指令功能进行分类,在XML中进行详细地书写。指令的通用形式:其中,<key>与</key>作为一组标签且成对出现,代表着两个标签之间的多行文本内容为一个完整的机器人编程指令描述;<key>标签内的name表示指令的名称,type表示指令的类型;<param/>作为单独出现的标签,描述了机器人编程指令的一个参数,标签内的name表示当前参数的名称,标签内的type表示当前参数的类型;对于多种多样的机器人编程指令,部分指令不包含参数则没有<param/>标签;部分指令包含一个或多个<param/>标签。本专利技术中创新地使用这种通用形式将机器人编程指令进行详细描述,指令名称、指令类型、指令参数更加直观。将机器人语言中的所有指令都按照上述形式,将指令信息填写到XML文件中。步骤2:读取程序和指令说明读取机器人程序的文本内容,包括机器人语言的代码语句Sentences[0:n]和变量信息Vars[0:m]。读取机器人语言文档中的指令说明CmdInfos[0:k]。根据指令说明CmdInfos,逐行查找每行语句中的指令名称。语句的指令名称查找结果分为三种:无指令、一个指令、多个指令。所有语句包含的指令名称组成了机器人程序的指令名称列表Cmds。步骤3:计算层级指数对于机器人编程语言,控制流指令是一类特殊的指令,是从通用计算机语言中的if条件语句和循环语句等语句变化而来。为了达到精简的目的,去除了通用计算机语言中的花括号“{”、“}”等分隔符,控制流指令演变为四个组成部分:1)控制流起始语句及条件表达式;2)执行语句;3)子结构(非必需,可缺省);4)控制流终止语句。为了形象地展示控制流起始指令、终止语句与执行语句、子语句的层次结构,对执行语句和子语句采用语句起始位置添加缩进的方法。本专利技术定义层级指数来代表语句之间嵌套关系。若机器人程序包含控制流指令时,控制流指令语句段(记为语句段1)可作为机器人程序的子结构,语句段1中也可能包含新的控制流指令段(记为语句段2)。因为语本文档来自技高网
...

【技术保护点】
1.一种应用于工业机器人编程语言的语法检查方法,其特征在于,包括以下步骤:/n步骤1、设计并编写语法详细说明文档;/n步骤2、读取机器人程序内容,读取机器人指令语法说明;/n步骤3、提取嵌套结构,计算层级指数;/n步骤4、按照语法说明逐行语句进行检查。/n

【技术特征摘要】
1.一种应用于工业机器人编程语言的语法检查方法,其特征在于,包括以下步骤:
步骤1、设计并编写语法详细说明文档;
步骤2、读取机器人程序内容,读取机器人指令语法说明;
步骤3、提取嵌套结构,计算层级指数;
步骤4、按照语法说明逐行语句进行检查。


2.如权利要求1所述的应用于工业机器人编程语言的语法检查方法,其特征在于,语法详细说明文档的设计方法为:将指令名称、指令类型、指令参数、指令参数类型、依赖指令、伙伴指令填充到XML节点树中。


3.如权利要求2所述的应用于工业机器人编程语言的语法检查方法,其特征在于,指令的通用形式如下:
<keyname=”name”type=”type”>
<paramname=”name1”type=”type1”/>

<paramname=”nameN”type=”typeN”/>
</key>
其中,<key>与</key>作为一组标签且成对出现,代表着两个标签之间的多行文本内容为一个完整的机器人编程指令描述;<key>标签内的name表示指令的名称,type表示指令的类型;<param/>作为单独出现的标签,描述了机器人编程指令的一个参数,标签内的name表示当前参数的名称,标签内的type表示当前参数的类型。


4.如权利要求1所述的应用于工业机器人编程语言的语法检查方法,其特征在于,步骤2读取程序内容和指令说明,具体为:
读取机器人程序的内容,包括机器人语言的代码语句Sentences[0:n]和变量信息Vars[0:m];读取机器人语言文档中的指令说明CmdInfos[0:k];根据指令说明CmdIn...

【专利技术属性】
技术研发人员:张乐乐李萌萌廖良闯马韬孙宏伟张本顺李凡杨哲王传生邹金欣
申请(专利权)人:中国船舶重工集团公司第七一六研究所江苏杰瑞科技集团有限责任公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1