一种ST语言转换为C++语言的转换系统及方法技术方案

技术编号:38198095 阅读:8 留言:0更新日期:2023-07-21 16:36
本发明专利技术公开了一种ST语言转换为C++语言的转换系统及方法,该系统包括:预处理器,词法分析器,语法分析器和语义分析器;预处理器读取ST文件,扫描ST语言的变量定义部分,并保存扫描到的数据;词法分析器扫描ST语言的程序正文部分,对扫描到的所有文本标记为对应的符号,根据正则表达式的规则规定识别到的词法;语法分析器根据词法分析器返回的符号以及规则,将返回的符号按照正则表达式的规则进行整理,构建得到语法树;语义分析器根据语法树中各符号与实际的关键字进行匹配,查找实际的字面值,将语法匹配成对应的语义,完成对整个语句语义的分析。本发明专利技术通过遍历构建的语法树完成程序的解释运行,具有解释速度快,拓展性强的特点。拓展性强的特点。拓展性强的特点。

【技术实现步骤摘要】
一种ST语言转换为C++语言的转换系统及方法


[0001]本专利技术涉及工业自动化控制
,具体涉及一种ST语言转换为C++语言的转换系统及方法。

技术介绍

[0002]传统的PLC表面是一个硬件模块。硬件主要是指它的电路板、各种芯片及接口等实体;软件是指它内部运行的系统程序(包括操作系统及一些操作系统上层的系统软件)。PLC的系统程序是出厂时固化在硬件内部的,因此也被称为固件,整个系统要依赖于固件才可以运行。
[0003]除了常规的PLC,还有一种称为软PLC。软PLC也被称为软件控制器,它是一套软件系统,可以根据需要安装到不同的硬件环境中,其实就相当于把常规PLC的软件部分单独拿出来,适配到不同的硬件中,从而形成新的PLC,软PLC能够适配不同的硬件,并且随着现代计算机技术的发展,软PLC系统有着更强的处理能力,更好的适应性。
[0004]软PLC要基于某种操作系统(比如Windows或Linux),它至少包括两个部分:编程开发环境和运行时(runtime)。软PLC的编程开发环境一般是使用符合IEC61131

3标准的几种语言,其中最常用的是ST语言。ST语言是一种结构化文本编程语言,其他几种语言可以通过开源软件转化为ST语言,因此ST语言是这几种中的基础语言。
[0005]传统的IEC 61131

3编程语言的缺陷是在体系结构上和硬件上依赖于传统的PLC,而软PLC可以克服这种缺点。常见的软PLC运行环境有机器人、CNC等,当他们有软PLC运行环境时,使用通用的语言便可以实现对不同平台的设备的控制。一般软PLC运行环境是使用C++语言开发的,因此亟需一种能将ST语言快速转换到C++语言的技术。

技术实现思路

[0006]为了克服现有技术存在的缺陷与不足,本专利技术提供一种ST语言转换为C++语言的转换系统及方法,本专利技术能够使得ST语言不通过编译的方式进行解释执行,能够执行大部分的ST语言数据类型和功能块,同时可以根据个人需求对功能块进行拓展。
[0007]为了达到上述目的,本专利技术采用以下技术方案:
[0008]本专利技术提供一种ST语言转换为C++语言的转换系统,包括:预处理器、词法分析器、语法分析器和语义分析器;
[0009]所述预处理器用于读取ST文件,对ST语言的变量定义部分进行扫描,对扫描到的数据进行保存;
[0010]所述词法分析器用于扫描ST语言的程序正文部分,对扫描到的所有文本标记为对应的符号,根据正则表达式的规则规定识别到的词法;
[0011]所述语法分析器用于根据词法分析器返回的符号以及正则表达式的规则,将返回的符号按照正则表达式的规则进行整理,构建得到语法树;
[0012]所述语义分析器用于根据语法树中各符号与实际的关键字进行匹配,查找实际的
字面值,将语法匹配成对应的语义,完成对整个语句语义的分析。
[0013]作为优选的技术方案,所述ST文件以文本的形式进行存储,包括变量定义部分和程序部分,所述变量定义部分的赋值号左边为变量名,右边为变量类型,每行对应一个变量的定义,按行扫描的变量定义部分的变量标记为全局变量,以一一对应的方式存储在C++程序的存储区,程序部分定义的变量标记为局部变量。
[0014]作为优选的技术方案,所述对扫描到的数据进行保存,扫描到的数据包括:整型变量、布尔变量和字符串。
[0015]作为优选的技术方案,所述构建得到语法树,具体包括:
[0016]所述语法分析器将分散的符号组合成语法,对每个符号建立树节点,树状连接方式为孩子兄弟表示法,同一层的为兄弟,上下层为父子,当判定为同一句语法时,建立为上个节点的兄弟节点并连接;当判定一句语法已经结束时,建立为上个节点的子节点并连接。
[0017]作为优选的技术方案,所述词法分析器用于扫描ST语言的程序正文部分,当判定为无法识别的词法时,报告词法分析错误;
[0018]所述语法分析器用于根据词法分析器返回的符号以及正则表达式的规则,将返回的符号按照正则表达式的规则进行整理,当判定为没有按照正则表达式的规则填写时,报告语法分析错误;
[0019]语义分析器用于根据构建的语法树对语义进行分析,当判定为语义不匹配时,报告语义分析错误。
[0020]本专利技术还提供一种ST语言转换为C++语言的转换方法,包括下述步骤:
[0021]预处理器读取ST文件,对ST语言的变量定义部分进行扫描,对扫描到的数据进行保存;
[0022]词法分析器对ST语言的程序正文部分进行扫描,对扫描到的所有文本标记为对应的符号,根据正则表达式的规则规定识别到的词法;
[0023]语法分析器根据词法分析器返回的符号以及正则表达式的规则,将返回的符号按照正则表达式的规则进行整理,构建得到语法树;
[0024]语义分析器根据语法树中各符号与实际的关键字进行匹配,查找实际的字面值,将语法匹配成对应的语义,完成对整个语句语义的分析;
[0025]对语法树进行遍历扫描,纵向方向为程序运行方向,横向方向为程序单句语法,将实际语义与实际的C++关键字一一对应;
[0026]对应为实际的关键字后,由C++程序调用生产运行环境中的接口执行命令。
[0027]作为优选的技术方案,所述ST文件以文本的形式进行存储,包括变量定义部分和程序部分,所述变量定义部分的赋值号左边为变量名,右边为变量类型,每行对应一个变量的定义,按行扫描的变量定义部分的变量标记为全局变量,以一一对应的方式存储在C++程序的存储区,程序部分定义的变量标记为局部变量。
[0028]作为优选的技术方案,所述对扫描到的数据进行保存,扫描到的数据包括:整型变量、布尔变量和字符串。
[0029]作为优选的技术方案,所述构建得到语法树,具体包括:
[0030]所述语法分析器将分散的符号组合成语法,对每个符号建立树节点,树状连接方式为孩子兄弟表示法,同一层的为兄弟,上下层为父子,当判定为同一句语法时,建立为上
个节点的兄弟节点并连接;当判定一句语法已经结束时,建立为上个节点的子节点并连接。
[0031]作为优选的技术方案,所述词法分析器扫描ST语言的程序正文部分,当判定为无法识别的词法时,报告词法分析错误;
[0032]所述语法分析器根据词法分析器返回的符号以及正则表达式的规则,将返回的符号按照正则表达式的规则进行整理,当判定为没有按照正则表达式的规则填写时,报告语法分析错误;
[0033]语义分析器根据构建的语法树对语义进行分析,当判定为语义不匹配时,报告语义分析错误。
[0034]本专利技术与现有技术相比,具有如下优点和有益效果:
[0035](1)本专利技术不需要通过编译,可以边解释边运行,借助现代计算机的处理性能,运行速度更快,
[0036](2)本专利技术可以根据实际的生产情况添加自己的功能块,在词法分析器和语法分析器中使用对应的工具添加正则本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ST语言转换为C++语言的转换系统,其特征在于,包括:预处理器、词法分析器、语法分析器和语义分析器;所述预处理器用于读取ST文件,对ST语言的变量定义部分进行扫描,对扫描到的数据进行保存;所述词法分析器用于扫描ST语言的程序正文部分,对扫描到的所有文本标记为对应的符号,根据正则表达式的规则规定识别到的词法;所述语法分析器用于根据词法分析器返回的符号以及正则表达式的规则,将返回的符号按照正则表达式的规则进行整理,构建得到语法树;所述语义分析器用于根据语法树中各符号与实际的关键字进行匹配,查找实际的字面值,将语法匹配成对应的语义,完成对整个语句语义的分析。2.根据权利要求1所述的ST语言转换为C++语言的转换系统,其特征在于,所述ST文件以文本的形式进行存储,包括变量定义部分和程序部分,所述变量定义部分的赋值号左边为变量名,右边为变量类型,每行对应一个变量的定义,按行扫描的变量定义部分的变量标记为全局变量,以一一对应的方式存储在C++程序的存储区,程序部分定义的变量标记为局部变量。3.根据权利要求1所述的ST语言转换为C++语言的转换系统,其特征在于,所述对扫描到的数据进行保存,扫描到的数据包括:整型变量、布尔变量和字符串。4.根据权利要求1所述的ST语言转换为C++语言的转换系统,其特征在于,所述构建得到语法树,具体包括:所述语法分析器将分散的符号组合成语法,对每个符号建立树节点,树状连接方式为孩子兄弟表示法,同一层的为兄弟,上下层为父子,当判定为同一句语法时,建立为上个节点的兄弟节点并连接;当判定一句语法已经结束时,建立为上个节点的子节点并连接。5.根据权利要求1所述的ST语言转换为C++语言的转换系统,其特征在于,所述词法分析器用于扫描ST语言的程序正文部分,当判定为无法识别的词法时,报告词法分析错误;所述语法分析器用于根据词法分析器返回的符号以及正则表达式的规则,将返回的符号按照正则表达式的规则进行整理,当判定为没有按照正则表达式的规则填写时,报告语法分析错误;语义分析器用于根据构建的语法树对语义进行分析,当判定为语义不匹配时,报告语义分析错误。6.一种ST语言转换为C++语言的转换方法,其特征在于,包括下述步...

【专利技术属性】
技术研发人员:张增贵李迪程铭浩谢颖熙曹俊杰
申请(专利权)人:华南理工大学
类型:发明
国别省市:

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

1