一种基于Web端的文本类编程语言代码编辑器构建方法技术

技术编号:38424336 阅读:10 留言:0更新日期:2023-08-07 11:23
本发明专利技术涉及一种基于Web端的文本类编程语言代码编辑器构建方法,采用全新架构设计,首先描述目标文本类编程语言的语法结构,获得目标语法描述文件;然后针对对目标语法描述文件进行解析,获得抽象语法树、以及携带文本信息的虚拟树;最后通过递归检查,构建用于实现预设各代码操作功能的各插件、以及组件,配置于目标web端在线编辑器,即构成用于目标文本类编程语言的代码编辑器,集成到web项目中,即可在应用中通过浏览器调用相应Web项目,实现对目标硬件关于目标文本类编程语言的代码编程,有效提高硬件编码的效率。有效提高硬件编码的效率。有效提高硬件编码的效率。

【技术实现步骤摘要】
一种基于Web端的文本类编程语言代码编辑器构建方法


[0001]本专利技术涉及一种基于Web端的文本类编程语言代码编辑器构建方法,属于工业PLC编程


技术介绍

[0002]PLC(Programmable Logic Controller, 可编程逻辑控制器)是以微处理器为基础,综合通信技术、计算机技术、自动控制技术,形成的新型通用自动控制装置,目前广泛应用于工业控制领域。
[0003]在国际电工委员会制定的IEC61131

3标准中,提供了5种PLC标准编程语言,分别是结构化文本(ST)、指令表(IL)、梯形图(LAD)、功能块图(FBD)及顺序功能图(SFC),目前很多厂商都为PLC开发提供了IDE集成开发软件,如德国CODESYS、西门子、国内和利时等等。
[0004]但是上述提到的集成开发软件都是桌面端应用,需要通过软件包安装,由于平台差异性,软件为了适配不同系统、不同平台,需要昂贵的开发成本,并且用户操作界面老旧,用户体验较差,大大影响实际工作效率。

技术实现思路

[0005]本专利技术所要解决的技术问题是提供一种基于Web端的文本类编程语言代码编辑器构建方法,采用全新架构设计创建代码编辑器,通过Web端实现对硬件的高效编码。
[0006]本专利技术为了解决上述技术问题采用以下技术方案:本专利技术设计了一种基于Web端的文本类编程语言代码编辑器构建方法,执行如下步骤A至步骤D,构建基于Web端、并用于目标文本类编程语言的代码编辑器;步骤A. 按预设描述规则,应用Lezer语法解析系统中对应LR解析器的文法描述目标文本类编程语言的语法结构,获得目标语法描述文件,然后进入步骤B;步骤B. 应用Lezer语法解析系统中的LR解析器,针对目标语法描述文件进行解析,获得抽象语法树、以及携带文本信息的虚拟树,然后进入步骤C;步骤C. 递归检查抽象语法树、以及携带文本信息的虚拟树,构建用于实现预设各代码操作功能的各插件、以及组件,然后进入步骤D;步骤D. 在目标web端在线编辑器配置各插件、以及组件,即构成用于目标文本类编程语言的代码编辑器,集成到web项目中。
[0007]作为本专利技术的一种优选技术方案:所述步骤A中,按预设描述规则,应用Lezer语法解析系统中对应LR解析器的文法,描述程序声明、类型声明、变量声明、IF语句、CASE语句、FOR循环语句、WHILE语句、REPEAT语句、赋值语句、定义内部关键字,完成对目标文本类编程语言的语法结构的描述,获得目标语法描述文件。
[0008]作为本专利技术的一种优选技术方案:所述步骤A中的预设描述规则包括如下:(1)基于预设各优先级分别对应的标志,针对目标文本类编程语言的语法结构中关于各数据的各处理动作,分别应用相应优先级对应的标志进行标记,满足语法结构中关
于各数据的各处理动作的执行顺序;(2)关于目标文本类编程语言的语法结构的内置关键字,基于枚举26位英文字母token的方式,通过VAR{var}形式定义所有目标文本类编程语言的语法结构的内置关键字;关于目标文本类编程语言的语法结构中除内置关键字以外、所使用的各个对象名,通过后续的语法检查阶段与语法高亮阶段,判断对象名是否已由用户声明,是则表示对象名已由用户声明,使用正确;否则表示对象名未由用户声明,使用不正确;(3)关于目标文本类编程语言的语法结构中、由用户声明的各个简写特殊关键字,按照VariableDeclaration { VariableName ":" TypeName ":=" VariableValue";"}进行描述,实现对该各个简写特殊关键字的赋值;其中,当用户所声明简写特殊关键字匹配为TypeName时,则该简写特殊关键字作为类型简写;当用户所声明简写特殊关键字匹配为VariableValue时,若该简写特殊关键字为变量名,则该简写特殊关键字作为已被用户声明的变量名,若该简写特殊关键字为数据值类型的值,那么该简写特殊关键字作为数据值的类型;(4)关于目标文本类编程语言的语法结构中的变量赋值,首先将赋予值推导为基础Number类型使其被成功匹配,然后在后续语法检查阶段,通过回溯语法树,根据被赋予变量在用户声明中所指定的类型,获得赋予值向被赋予变量进行赋值的类型,实现变量赋值。
[0009]作为本专利技术的一种优选技术方案:所述对象名包括程序名、类型名、变量名、参数名。
[0010]作为本专利技术的一种优选技术方案:所述步骤C中,递归检查抽象语法树、以及携带文本信息的虚拟树,构建用于实现如下预设各代码操作功能的各插件、以及组件;(1)语法检查插件,用于检查虚拟树,消除在语法描述阶段未处理的词法歧义,判断树节点类型的合法性,当出现异常时,定位异常节点并标记;(2)语法高亮插件,用于为不同的节点类型分配css类名,区分节点的样式;(3)代码提示插件,用于检查节点的上下文,推断用户接下来可能会输入的内容,并向用户进行提示;(4)设置断点插件,用于为点击的代码行设置断点;(5)变量列表模式切换组件,用于根据IEC61131

3编程语言标准中所描述的变量属性,生成相应的数组数据,支持变量部分的目标文本类编程语言和数组之间相互转换。
[0011]作为本专利技术的一种优选技术方案:关于所述语法检查插件对虚拟树的检查,基于对虚拟树的缓存,对已经闭合未发生变化的代码段,不进行语法解析,由语法检查插件针对已经缓存的语法树执行语法检查;当用户停止输入预设时长后,基于语法解析处理,进一步由语法检查插件执行语法检查。
[0012]作为本专利技术的一种优选技术方案:所述目标web端在线编辑器为CodeMirror编辑器。
[0013]本专利技术所述一种基于Web端的文本类编程语言代码编辑器构建方法,采用以上技术方案与现有技术相比,具有以下技术效果:(1)本专利技术所设计基于Web端的文本类编程语言代码编辑器构建方法,采用全新架构设计,首先描述目标文本类编程语言的语法结构,获得目标语法描述文件;然后针对对目标语法描述文件进行解析,获得抽象语法树、以及携带文本信息的虚拟树;最后通过递归检
查,构建用于实现预设各代码操作功能的各插件、以及组件,配置于目标web端在线编辑器,即构成用于目标文本类编程语言的代码编辑器,集成到web项目中,即可在应用中通过浏览器调用相应Web项目,实现对目标硬件关于目标文本类编程语言的代码编程,有效提高硬件编码的效率;(2)本专利技术所设计基于Web端的文本类编程语言代码编辑器构建方法,得益于web端跨平台的优势,开发者不再需要关注平台的差异性,能够更专注于业务逻辑的开发,仅需使用Javascript语言维护一套代码,经webpack等编译工具压缩混淆后,根据需求灵活的选择部署方案,如采用B/S(浏览器/服务器)架构将前端资源文件(html、css、编译后的Javascript代码等)部署至服务器上、或使用Electron构建工具将前端资源文件打包为桌面端应用(本质是chrome开源版本浏览器),即可实现高效的硬件编码操作;(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Web端的文本类编程语言代码编辑器构建方法,其特征在于:执行如下步骤A至步骤D,构建基于Web端、并用于目标文本类编程语言的代码编辑器;步骤A. 按预设描述规则,应用Lezer语法解析系统中对应LR解析器的文法描述目标文本类编程语言的语法结构,获得目标语法描述文件,然后进入步骤B;步骤B. 应用Lezer语法解析系统中的LR解析器,针对目标语法描述文件进行解析,获得抽象语法树、以及携带文本信息的虚拟树,然后进入步骤C;步骤C. 递归检查抽象语法树、以及携带文本信息的虚拟树,构建用于实现预设各代码操作功能的各插件、以及组件,然后进入步骤D;步骤D. 在目标web端在线编辑器配置各插件、以及组件,即构成用于目标文本类编程语言的代码编辑器,集成到web项目中。2.根据权利要求1所述一种基于Web端的文本类编程语言代码编辑器构建方法,其特征在于:所述步骤A中,按预设描述规则,应用Lezer语法解析系统中对应LR解析器的文法,描述程序声明、类型声明、变量声明、IF语句、CASE语句、FOR循环语句、WHILE语句、REPEAT语句、赋值语句、定义内部关键字,完成对目标文本类编程语言的语法结构的描述,获得目标语法描述文件。3.根据权利要求1或2所述一种基于Web端的文本类编程语言代码编辑器构建方法,其特征在于:所述步骤A中的预设描述规则包括如下:基于预设各优先级分别对应的标志,针对目标文本类编程语言的语法结构中关于各数据的各处理动作,分别应用相应优先级对应的标志进行标记,满足语法结构中关于各数据的各处理动作的执行顺序;关于目标文本类编程语言的语法结构的内置关键字,基于枚举26位英文字母token的方式,通过VAR{var}形式定义所有目标文本类编程语言的语法结构的内置关键字;关于目标文本类编程语言的语法结构中除内置关键字以外、所使用的各个对象名,通过后续的语法检查阶段与语法高亮阶段,判断对象名是否已由用户声明,是则表示对象名已由用户声明,使用正确;否则表示对象名未由用户声明,使用不正确;关于目标文本类编程语言的语法结构中、由用户声明的各个简写特殊关键字,按照VariableDeclaration { VariableName ":" TypeName ":=" Variable...

【专利技术属性】
技术研发人员:周笑
申请(专利权)人:寂山智工苏州科技有限公司
类型:发明
国别省市:

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

1