[发明专利]一种高级语言转换成其它高级语言的方法及转换器无效
申请号: | 200910080311.2 | 申请日: | 2009-03-18 |
公开(公告)号: | CN101499015A | 公开(公告)日: | 2009-08-05 |
发明(设计)人: | 施波;赵雅囡;刘金龙;王沿海 | 申请(专利权)人: | 北京和利时系统工程有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 龙 洪;霍育栋 |
地址: | 100096北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 高级 语言 转换 其它 方法 转换器 | ||
技术领域
本发明涉及数据处理领域,尤其涉及一种高级语言转换成其它高级语言的方法及转换器。
背景技术
工业控制算法组态软件都涉及到一个问题:把IEC61131-3中的五种标准语言(以下简称IEC语言)转换成处理器可以识别的机器指令,这一过程称为编译,完成这一个过程的模块称为编译器。IEC61131-3规定了五种语言,每一种语言都需要一个特定的编译器完成这一过程;一般来说,每一种处理器都有不同的体系结构和指令集,因此还需要编译器要有不同的后端,以便生成不同处理器的指令序列。因此,要实现IEC五种语言的编译器是一个复杂过程,而且这一过程本身是高风险的;如果能够找到一种方法可以减少其中的工作量和降低风险是令人欣喜的;一种可行的方案是,首先把IEC语言转换成C语言,然后调用通用的C编译器转换成处理器指令,因为C语言是一种通用的语言,目前已知的各种体系结构的处理器都对其进行了支持,可以很方便地获得对应的C编译器。
IEC61131-3规定了五种语言,分别为两种文本语言ST、IL,三种图形语言LD、SFC、FBD;每种语言各有不同特点和用途,不同的用户会有不同的偏好。把IEC语言转换成C语言,完成这一过程的模块称为转换器。ST语言(structural text language,结构化文本语言)是一种类PASCAL的高级语言,在IEC五种语言中具有代表性。
转换器完成IEC语言到C语言的转换的一种做法是默认源语言是正确的,一旦发现错误,转换就会停止;产生的目标语言描述直接通过C编译器处理,不具有可读性和可维护性。
该做法的缺陷在于:由于用户希望尽可能多报告出编写的源语言的错误,怎么修改,如果每次只能报告一个错误,用户会很容易不耐烦;另外,源语言和目标语言具有不同的属性,特别是细节方面,如果生成的目标语言不具有可读性和可维护性,则会难以找到细节上的不同之处,并解决问题。
发明内容
本发明要解决的技术问题是提供一种高级语言转换成其它高级语言的方法及转换器,能够转换成规范的、格式化的,具有可读性和可维护性的目标语言描述。
为了解决上述问题,本发明提供了一种高级语言的转换器,包括:
词法分析装置,用于接收源语言编辑器输出的ASCII码序列,并输出带有属性的ASCII序列组合;
语法分析装置,用于接收所述词法分析装置输出的带有属性的ASCII序列组合,根据源语言语法结构,生成语法分析树并输出;
语义分析装置,用于验证所述语法分析装置输出的语法分析树的有效性,输出验证合格的语法分析树;
目标语言生成装置,用于保存源语言语法分析树中不同类型的节点和目标语言描述片段之间的对应关系,以及各类型节点对应的目标语言描述片段中,各条目标语言描述之间的层次关系;
所述目标语言生成装置当接收所述语义分析装置输出的验证合格的语法分析树后,对该语法分析树进行后序遍历,根据所述对应关系生成语法分析树中每一个节点所对应的目标语言描述片段,所生成的目标语言描述片段共同构成目标语言描述;当生成目标语言描述片段时,根据所述层次关系确定各条目标语言描述的层次,在该目标语言描述左边添加相应数目的特定字符。
进一步地,所述的转换器还包括:错误处理装置;
所述语法分析装置还用于当在处理中发现错误时暂停处理,将发现的错误报告给错误处理装置;根据错误处理装置的指示调整本装置的内部状态后继续处理;
所述语义分析装置还用于当在处理中发现错误时暂停处理,将发现的错误报告给错误处理装置;根据错误处理装置的指示调整本装置的内部状态后继续处理;
错误处理装置,用于当收到所述语法分析装置或所述语义分析装置报告的错误后,根据所报告的错误指示报告错误的装置调整内部状态。
进一步地,所述语法分析装置,或者所述语义分析装置将发现的错误报告给错误处理装置是指:
将所发现错误的错误状态传递给所述错误处理装置;所述错误状态指示错误发生部分所在节点的类型;
所述错误处理装置根据所报告的错误指示报告错误的装置调整内部状态具体是指:
所述错误处理装置根据预存的错误状态与跳出标志的对应关系,确定所述错误状态对应的跳出标志,然后将所找到的跳出标志告知报告错误的装置。
进一步地,所述语法分析装置根据错误处理装置的指示调整本装置的内部状态后继续处理具体是指:
所述语法分析装置在待处理的ASCII序列组合中,顺序查找第一个跳出标志,找到后继续处理该跳出标志之后的ASCII序列组合;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京和利时系统工程有限公司,未经北京和利时系统工程有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910080311.2/2.html,转载请声明来源钻瓜专利网。