[发明专利]一种计算机程序语言的编译方法和编译器有效
申请号: | 201710365323.4 | 申请日: | 2017-05-22 |
公开(公告)号: | CN107301079B | 公开(公告)日: | 2020-02-04 |
发明(设计)人: | 陈宏君;张磊;周磊;文继锋;谭良良;刘克金;吴波;徐卫峰 | 申请(专利权)人: | 南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 11270 北京派特恩知识产权代理有限公司 | 代理人: | 张振伟;姚开丽 |
地址: | 211102 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 计算机 程序语言 编译 方法 编译器 | ||
本发明实施例公开了一种计算机程序语言的编译方法,包括:对结构化文本ST语言的循环语句进行预处理后,至少获取循环语句的初始值表达式、终止值表达式、循环增量表达式和循环执行语句;对初始值表达式和终止值表达式分别进行编译,得到初始值表达式的值和终止值表达式的值;将初始值表达式的值确定为循环语句的索引值;基于循环增量表达式的类型,从初始值表达式的值和终止值表达式的值中确定出循环语句的上界和循环语句的下界;基于循环语句的上界、循环语句的下界、循环语句的索引值和循环增量表达式,对循环执行语句进行编译,得到循环语句的编译结果。本发明实施例还同时公开了一种编译器。
技术领域
本发明涉及编译器领域,尤其涉及一种计算机程序语言的编译方法和编译器。
背景技术
在工业控制领域中,IEC61131-3是通用的国际标准,其定义了结构化文本(ST,Structured Text)语言的语法和文法,通常预处理器先对ST语言程序进行预处理,然后编译器在将预处理之后的ST语言程序编译为二进制中间指令,解析器和处理器分别进行解析执行。
在ST语言中,FOR语句是使用频率较高的语句,ST语言定义的FOR语句文法为:
FOR<Index:=expr1>TO<expr2>BY<expr3>DO
<statement list>
END_FOR;
其中,Index为索引值,expr1为初始值表达式,expr2为终止值表达式,expr3为循环增量表达式,statement list为循环执行语句。
由于该文法中的expr3为表达式,和PASCAL的for语句、C语言的for语句在文法定义方面有较大差别,无法使用已经成熟的循环语句编译方法。在现有的ST语言的FOR语句中,由于无法预知上下界和循环增量表达式是实际递增还是递减,在每次循环前计算expr1、expr2、expr3,比较并判断循环条件是否继续,具体地,分别比较expr3大于等于expr1并且expr3小于expr2,expr3大于等于expr2并且expr3小于expr1,可见,上述方法需要进行4次比较,这样,势必会影响指令的运行效率,也就是说,现有的ST语言FOR语句的编译方法会导致指令的运行效率低下的技术问题。
发明内容
有鉴于此,本发明实施例期望提供一种计算机程序语言的编译方法和编译器,能够解决ST语言FOR语句的编译方法会导致指令的运行效率低下的技术问题,提高ST语言FOR语句的编译效率,进而提高了ST语言的运行效率。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面,本发明实施例提供一种计算机程序语言的编译方法,包括:对结构化文本ST语言的循环语句进行预处理后,至少获取所述循环语句的初始值表达式、终止值表达式、循环增量表达式和循环执行语句;对所述初始值表达式和所述终止值表达式分别进行编译,得到初始值表达式的值和终止值表达式的值;将所述初始值表达式的值确定为所述循环语句的索引值;基于所述循环增量表达式的类型,从所述初始值表达式的值和所述终止值表达式的值中确定出所述循环语句的上界和所述循环语句的下界;基于所述循环语句的上界、所述循环语句的下界、所述循环语句的索引值和所述循环增量表达式,对所述循环执行语句进行编译,得到所述循环语句的编译结果。
在上述方案中,所述基于所述循环增量表达式的类型,从所述初始值表达式的值和所述终止值表达式的值中确定出所述循环语句的上界和所述循环语句的下界,包括:当所述循环增量表达式的类型为常量时,从所述初始值表达式的值和所述终止值表达式的值中,确定出所述循环语句的上界预测值和所述循环语句的下界预测值;比较所述下界预测值是否大于所述上界预测值;若为是,终止所述循环语句;若为否,将所述上界预测值确定为所述循环语句的上界,且将所述下界预测值确定为所述循环语句的下界。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司,未经南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710365323.4/2.html,转载请声明来源钻瓜专利网。