一种基于解耦架构的文本类编程语言编译方法技术

技术编号:38333742 阅读:22 留言:0更新日期:2023-08-02 09:14
本发明专利技术涉及一种基于解耦架构的文本类编程语言编译方法,针对目标文本类编程语言的目标源代码,首先执行词法分析获得对应符号流,接着执行语法分析获得对应语法解析树,然后创建相对应的抽象语法树AST,再进行语义分析更新抽象语法树AST,最后将抽象语法树AST转换为目标编程语言代码进行编译,实现执行;整个方案设计编译器前后端解耦架构,编译器前端只需关注目标文本类编程语言的语法规则,执行效率至少提高两倍,实现了高效编译。实现了高效编译。实现了高效编译。

【技术实现步骤摘要】
一种基于解耦架构的文本类编程语言编译方法


[0001]本专利技术涉及一种基于解耦架构的文本类编程语言编译方法,属于编程语言编译


技术介绍

[0002]IEC61131

3编程语言标准是第一个为工业控制系统提供标准化编程语言的国际标准,该标准规定三种可视化编程语言和两种文本类编程语言。指定表(IL)语言和结构化文本(ST)语言属于文本类编程语言;梯形图(LD)语言、功能块图(FBD)语言和顺序功能图(SFC)语言属于可视化编程语言。其中只有ST编程语言属于高级编程语言,适用于在大型PLC系统中编写功能复杂的PLC程序。
[0003]ST编程语言采用高度压缩化的表达形式,因此,程序紧凑,结构清楚;ST语言具有强有力的控制命令流结构,有选择语句,循环语句,其他模块调用语句等;ST语言格式自由,可以在关键字与标识符之间任何地方插入制表符,换行符,空格或者注释等;但ST语言对编程人员的技能有一定的要求,需要有高级编程语言知识和编程技巧。好在PLC编程中,其他四种语言都可以转换为ST语言,因此实现ST语言编译器就可以编本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于解耦架构的文本类编程语言编译方法,其特征在于:执行如下步骤A至步骤E,对目标PLC程序对应目标文本类编程语言的目标源代码实现编译执行;步骤A. 基于IEC61131

3编程语言标准下目标文本类编程语言所对应的词法规则,针对目标源代码进行词法分析,获得目标源代码所对应由各个词法单元组成的符号流,然后进入步骤B;步骤B. 基于IEC61131

3编程语言标准下目标文本类编程语言所对应的语法规则,针对符号流进行语法分析,获得符号流所对应的语法解析树,然后进入步骤C;步骤C. 基于预设编译要求定义的抽象语法树AST数据结构,创建语法解析树所对应的抽象语法树AST,然后进入步骤D;步骤D. 针对抽象语法树AST进行语义分析,填充抽象语法树AST中各节点的节点数据类型、以及常量值,更新抽象语法树AST,然后进入步骤E;步骤E. 将抽象语法树AST转换为目标编程语言代码,并应用目标编译器针对目标编程语言代码进行编译,获得用于在相应硬件上执行的应用程序实现执行。2.根据权利要求1所述一种基于解耦架构的文本类编程语言编译方法,其特征在于:还包括步骤DE如下,执行完步骤D之后进入步骤DE;步骤DE. 应用优化器针对抽象语法树AST进行包括常量折叠和无用代码消除的优化更新处理,获得优化更新后的抽象语法树AST,然后进入步骤E。3.根据权利要求1所述一种基于解耦架构的文本类编程语言编译方法,其特征在于:所述步骤A包括步骤A1至步骤A2;步骤A1. 根据IEC61131

3编程语言标准,应用ANTLR4工具编写目标文本类编程语言对应的词法规则,并生成该词法规则对应的词法分析器,并进入步骤A2;步骤A2. 应用词法分析器针对目标源代码进行词法分析,获得源代码所对应包含各个词法单元的符号流。4.根据权利要求1所述一种基于解耦架构的文本类编程语言编译方法,其特征在于:所述步骤B包括步骤B1至步骤B2;步骤B1. 根据IEC61131

3编程语言标准,应用ANTLR4工具编写目标文本类编程语言对应的语法规则,并生成该语法规则对应包含预设文法分析手段与预设语法解析规则的语法分析器,并进入步骤B2;步骤B2. 应用语法分析器针对符号流进行语法分析,获得符号流所对应的语法解析树。5.根据权利要求4所述一种基于解耦架构的文本类编程语言编译方法,其特征在于:所述语法分析器包含的预设文法分析手段为上下文无关文法分析手段,语法分析器包含的预设语法解析规则为LL(k)递归下降语法。6.根据权利要求1所述一种基于解耦架构的文本类编程语言编译方法,其特征在于:所述步骤C包括步骤C1至步骤C3;步骤C1. 基于预设编译要求,创建由抽象语法树AST中各节点之间预设相同各属性组成的基类CS...

【专利技术属性】
技术研发人员:尹志威王一凡贺银增任大明徐晨周笑
申请(专利权)人:寂山智工苏州科技有限公司
类型:发明
国别省市:

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

1