CN109918081A - 一种编译方法及编译器 - Google Patents

一种编译方法及编译器 Download PDF

Info

Publication number
CN109918081A
CN109918081A CN201910155464.2A CN201910155464A CN109918081A CN 109918081 A CN109918081 A CN 109918081A CN 201910155464 A CN201910155464 A CN 201910155464A CN 109918081 A CN109918081 A CN 109918081A
Authority
CN
China
Prior art keywords
language
program
section
file
source program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910155464.2A
Other languages
English (en)
Other versions
CN109918081B (zh
Inventor
马锦宝
李志刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongan Zhilian Future Co Ltd
Original Assignee
Zhongan Zhilian Future Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongan Zhilian Future Co Ltd filed Critical Zhongan Zhilian Future Co Ltd
Priority to CN201910155464.2A priority Critical patent/CN109918081B/zh
Publication of CN109918081A publication Critical patent/CN109918081A/zh
Application granted granted Critical
Publication of CN109918081B publication Critical patent/CN109918081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种编译方法及编译器,该方法包括:获取待编译的源程序;判断待编译的源程序中的语言类型以得到源程序类型,源程序类型包括IL语言程序和非IL语言程序,类型不符时,进行语言转换后,再采用词法分析方法检查程序中的错误;直到无错误信息后,则对程序进行语义分析;通过语义分析后,将程序转换成机器语言文件,并将所述机器语言文件进行分段存储;其效果是:可将源程序中的所有语言都转成IL语言,用户使用起来也更加灵活,当扩展其它语言时,修改范围被压缩到很小的范围内,这样充分提高了编译器的健壮性,此外生成文件采用段式存储方式,也可以很方便的扩展其他功能。

Description

一种编译方法及编译器
技术领域
本发明涉及计算机技术领域,具体涉及一种编译方法及编译器。
背景技术
编译过程是指将高级语言编写的源程序翻译成目标程序的过程,该目标程序是有计算机可识别的低级语言(汇编语言或机器语言)编写的,并且翻译得到目标程序的功能与原有的源程序功能相同。最后计算机通过执行目标程序得到处理结果。
目前的PLC编译器大多数都被国外的企业垄断,然而这些国外的软件在使用过程中,会存在使用习惯差异的问题、价格问题,使用过程中遇到问题不能及时解决,不支持定制等缺点。
发明内容
针对现有技术中的缺陷,本发明实施例提供一种使用灵活的编译方法及编译器。
第一方面,本发明实施例提供的一种编译方法,包括:
获取用户输入的待编译的源程序;
判断所述待编译的源程序中的语言类型以得到源程序类型,所述源程序类型包括IL语言程序和非IL语言程序,所述语言类型包括IL语言和非IL语言;
非IL语言程序时,将所述源程序中语言类型为非IL语言的进行转换以得到IL语言程序,再采用词法分析方法检查所述IL语言程序中的错误;
IL语言程序时,则直接采用所述词法分析方法检查所述IL语言程序中的错误;
将各错误信息进行汇总并通过错误信息列表进行显示;
判断所述错误信息列表中是否存在所述错误信息,存在,则停止编译,不存在,则对所述IL语言程序进行语义分析;
判断是否存在语义错误,存在,则停止编译,不存在,则执行编译,将所述IL语言程序转换成机器语言文件,并将所述机器语言文件进行分段存储。
可选地,所述方法还包括:
查找整个局域网中的控制器列表,通过选中某个控制器来查看其运行状态,读取其用户程序,并进行在线调试、修改和编译。
可选地,所述方法还包括:
将所述源程序中的变量表数据转换为预设文件格式的文件。
可选地,所述机器语言文件进行分段存储具体包括:
将所述机器语言文件分成10段,其中,段0存放的是硬件的规格信息、用户权限信息;段1存放的是变量与硬件资源的对应表格;段2存放与应硬件资源无关的变量信息表;段3预留;段4存放的是优先级为0任务的代码段信息;段5存放的是有优先级为1任务的代码段信息,段6存放的是优先级为2任务的代码段信息;段7存放的是优先级为3任务的代码段信息;段8存放优先级为4任务的代码段信息;段9存放事件处理任务的代码段信息。
第二方面,本发明实施例提供的一种编译器,包括文本编辑器、处理模块、转换组件、词法分析模块、错误信息列表和语义分析模块;
所述文本编辑器用于获取用户输入的待编译的源程序;
所述处理模块用于判断所述待编译的源程序中的语言类型以得到源程序类型,所述源程序类型包括IL语言程序和非IL语言程序,所述语言类型包括IL语言和非IL语言;
所述转换组件用于将所述源程序中语言类型为非IL语言的进行转换以得到IL语言程序;
所述词法分析模块用于采用所述词法分析方法检查所述IL语言程序中的错误;
所述错误信息列表用于将各错误信息进行汇总并进行显示;
所述处理模块还用于判断所述错误信息列表中是否存在所述错误信息,存在,则停止编译,不存在,则对所述IL语言程序进行语义分析;
所述语义分析模块用于对所述IL语言程序进行语义分析;
所述处理模块还用于判断是否存在语义错误,存在,则停止编译,不存在,则执行编译,将所述IL语言程序转换成机器语言文件,并将所述机器语言文件进行分段存储。
可选地,所述的一种编译器,还包括通信组件,所述通信组件用于查找整个局域网中的控制器列表,通过选中某个控制器来查看其运行状态,读取其用户程序,并进行在线调试、修改和编译。
可选地,所述的一种编译器,还包括画面组态开发工具,所述画面组态开发工具用于将所述源程序中的变量表数据转换为预设文件格式的文件。
可选地,所述机器语言文件进行分段存储具体包括:
将所述机器语言文件分成10段,其中,段0存放的是硬件的规格信息、用户权限信息;段1存放的是变量与硬件资源的对应表格;段2存放与应硬件资源无关的变量信息表;段3预留;段4存放的是优先级为0任务的代码段信息;段5存放的是优先级为1任务的代码段信息,段6存放的是优先级为2任务的代码段信息;段7存放的是优先级为3任务的代码段信息;段8存放优先级为4任务的代码段信息;段9存放事件处理任务的代码段信息。
本发明的有益效果:本发明实施例提出的一种编译方法及编译器,可将源程序中的所有语言都转成IL语言,用户使用起来也更加灵活,可对多种语言进行编译,当扩展其它语言时,修改范围被压缩到很小的范围内,这样充分提高了编译器的健壮性,此外生成文件采用段式存储方式,也可以很方便的扩展其他功能。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1示出了本发明实施例所提供的一种编译方法的流程图;
图2示出了本发明实施例中转换组件中支持可转换的语言种类;
图3示出了本发明实施例所提供的一种编译器的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
图1示出了本发明实施例所提供的一种编译方法,包括:
S101,获取用户输入的待编译的源程序。
具体地,待编译的源程序即为用户程序,也就是通常所说的PLC(ProgrammableLogic Controller,可编程逻辑控制器)程序,其程序的获取通过编译器中所设有的功能模块来实现,例如,可采用编译器中的文本编辑器来获取用户输入的待编译的源程序。
S102,判断所述待编译的源程序中的语言类型以得到源程序类型,所述源程序类型包括IL语言程序和非IL语言程序,所述语言类型包括IL语言和非IL语言。
具体地,编译器中的处理模块执行该步骤,由于在编程时,采用的是符合IEC61131-3国际标准规范的编程语言,这样就形成了不同的编程语言所编写的源程序,IEC61131-3规范下的语言包括5种,顺序功能图(Sequential function chart);梯形图(Ladder diagram);功能块图(Function block diagram);指令表(Instruction list)和结构文本(Structured text)。其中,顺序功能图(SFC)、梯形图(LD)和功能块图(FBD)是图形编程语言,指令表(IL)和结构文本(ST)是文字语言。
S103,非IL语言程序时,将所述源程序中语言类型为非IL语言的进行转换以得到IL语言程序,再采用词法分析方法检查所述IL语言程序中的错误。
具体地,编译器中的转换组件执行该步骤,其具体过程以梯形图(LD)为例进行说明:
梯形图的编译过程,编译器不会将梯形图直接编译成二进制文件,梯形图的编译几乎全部集中在编译器的内部,梯形图的各个程序组件在编译器中已经预先做成了一个组件(即转换组件),当用梯形图的组件进行编程时,除了梯形图文件之外还有一个影子文件,这个影子文件是将梯形图文件对应为IL指令文件,在编译时是直接针对所述IL指令文件进行编译的,参照图2所示。
另外其他几种编程语言采用同样的方式,都是编译器内部将其定义成等价的IL语言,当编译时直接针对IL语言来进行编译。这样不仅能减少编程的工作量,并且也能增强代码的健壮性。
S104,IL语言程序时,则直接采用所述词法分析方法检查所述IL语言程序中的错误。
具体地,IL语言为编译器处理的基本语言,编译器判定待编译的源程序中是IL语言时,就直接调用词法分析源程序。
S105,将各错误信息进行汇总并通过错误信息列表进行显示。
具体地,所述错误信息包括错误的类型,根据错误类型确定错误提示信息,以及错误出现的代码行号,并将错误信息放入错误信息列表中,从而便于让用户进行修改。
S106,判断所述错误信息列表中是否存在所述错误信息,存在,则停止编译,不存在,则对所述IL语言程序进行语义分析。
具体地,直到用户将所有错误修改完后,可再次编译直到判断无错误信息后将对源程序进行语义分析。
S107,判断是否存在语义错误,存在,则停止编译,不存在,则执行编译,将所述IL语言程序转换成机器语言文件,并将所述机器语言文件进行分段存储。
具体地,语义分析,即用来确定程序中的语义是否正确,这个过程和词法分析过程基本相同,不同的是对错误的判断规则,在此不再赘述,通过语义分析后,将完成转码工作,也就是将待编译的源程序转换成编译器和PLC约定好的指令编码,形成一个二进制文件(即机器语言文件),同时将其进行分段存储,将所述机器语言文件分成10段,其中,段0存放的是硬件的规格信息、用户权限信息;段1存放的是变量与硬件资源的对应表格;段2存放与硬件资源无关的变量信息表;段3预留;段4存放的是优先级为0任务的代码段信息;段5存放的是有优先级为1任务的代码段信息,段6存放的是优先级为2任务的代码段信息;段7存放的是优先级为3任务的代码段信息;段8存放优先级为4任务的代码段信息;段9存放事件处理任务的代码段信息。
通过上述实施例所提供的方法,可将源程序中的所有语言都转成IL语言,用户使用起来也更加灵活,可对多种语言进行编译,当扩展其他语言时,修改范围被压缩到很小的范围内,这样充分提高了编译器的健壮性,此外生成文件采用段式存储方式,也可以很方便的扩展其他功能。
进一步地,为了能最大限度的方便工程调试人员,并节省大量的宝贵时间,所述方法还包括:
查找整个局域网中的控制器列表,通过选中某个控制器来查看其运行状态,读取其用户程序,并进行在线调试、修改和编译。
具体地,将运行编译器的PC接入到局域中,编译器充分考虑了分布式系统的开发应用,它可以同时连接多个控制器,并且同时编辑、编译他们的程序,编译器通过IP地址来区分不同的控制器。
进一步地,为了提高用户使用的便利性,所述方法还包括:
将所述源程序中的变量表数据转换为预设文件格式的文件。
具体地,编译器集成的画面组态开发工具执行该操作,由于画面组态和PLC程序共用相同的变量表,通过该方法可减少画面开发时定义变量的时间,操作时,可以将该文件烧写到GUI设备上,就可以在GUI设备上显示画面,并能实时的显示PLC的控制状态。
基于与上述的一种编译方法相同的发明构思,图3示出了本发明实施例所提供的一种编译器,包括文本编辑器、处理模块、转换组件、词法分析模块、错误信息列表和语义分析模块。
所述文本编辑器用于获取用户输入的待编译的源程序;
具体地,待编译的源程序即为用户程序,也就是通常所说的PLC程序。
所述处理模块用于判断所述待编译的源程序中的语言类型以得到源程序类型,所述源程序类型包括IL语言程序和非IL语言程序,所述语言类型包括IL语言和非IL语言。
具体地,由于在编程时,采用的是符合IEC 61131-3国际标准规范的编程语言,这样就形成了不同的编程语言所编写的源程序,IEC 61131-3规范下的语言包括5种,顺序功能图(Sequential function chart);梯形图(Ladder diagram);功能块图(Functionblock diagram);指令表(Instruction list)和结构文本(Structured text)。其中,顺序功能图(SFC)、梯形图(LD)和功能块图(FBD)是图形编程语言,指令表(IL)和结构文本(ST)是文字语言。
所述转换组件用于将所述源程序中语言类型为非IL语言的进行转换以得到IL语言程序。
具体地,非IL语言程序时,都会进行该转换操作,具体过程以梯形图(LD)为例进行说明:
梯形图的编译过程,编译器不会将梯形图直接编译成二进制文件,梯形图的编译几乎全部集中在编译器的内部,梯形图的各个程序组件在编译器中已经预先做成了一个组件(即转换组件),当用梯形图的组件进行编程时,除了梯形图文件之外还有一个影子文件,这个影子文件是将梯形图文件对应为IL指令文件,在编译时是直接针对所述IL指令文件进行编译的,参照图2所示。
另外其他几种编程语言采用同样的方式,都是编译器内部将其定义成等价的IL语言,当编译时直接针对IL语言来进行编译。这样不仅能减少编程的工作量,并且也能增强代码的健壮性。
所述词法分析模块用于采用所述词法分析方法检查所述IL语言程序中的错误。
具体地,IL语言为编译器处理的基本语言,编译器判定待编译的源程序中是IL语言时,就直接调用词法分析源程序。
所述错误信息列表用于将各错误信息进行汇总并进行显示。
具体地,所述错误信息包括错误的类型,根据错误类型确定错误提示信息,以及错误出现的代码行号,并将错误信息放入错误信息列表中,从而便于让用户进行修改。
所述处理模块还用于判断所述错误信息列表中是否存在所述错误信息,存在,则停止编译,不存在,则对所述IL语言程序进行语义分析。
具体地,直到用户将所有错误修改完后,可再次编译直到判断无错误信息后将对源程序进行语义分析。
所述语义分析模块用于对所述IL语言程序进行语义分析。
具体地,语义分析,即用来确定程序中的语义是否正确,这个过程和词法分析过程基本相同,不同的是对错误的判断规则,在此不再赘述。
所述处理模块还用于判断是否存在语义错误,存在,则停止编译,不存在,则执行编译,将所述IL语言程序转换成机器语言文件,并将所述机器语言文件进行分段存储。
具体地,通过语义分析后,将完成转码工作,也就是将待编译的源程序转换成编译器和PLC约定好的指令编码,形成一个二进制文件(即机器语言文件),同时将其进行分段存储,将所述机器语言文件分成10段,其中,段0存放的是硬件的规格信息、用户权限信息;段1存放的是变量与硬件资源的对应表格;段2存放与硬件资源无关的变量信息表;段3预留;段4存放的是优先级为0任务的代码段信息;段5存放的是有优先级为1任务的代码段信息,段6存放的是优先级为2任务的代码段信息;段7存放的是优先级为3任务的代码段信息;段8存放优先级为4任务的代码段信息;段9存放事件处理任务的代码段信息。
通过上述方案的应用,其编译器功能丰富,可同时支持多种编程语言,编译器易于扩展,所有语言都可转成IL语言,用户使用起来也更加灵活,可对多种语言进行编译,当扩展其他语言时,修改范围被压缩到很小的范围内,这样充分提高了编译器的健壮性,此外生成文件采用段式存储方式,也可以很方便的扩展其他功能。
进一步地,为了能最大限度的方便工程调试人员,并节省大量的宝贵时间,所述的一种编译器,还包括通信组件,所述通信组件用于查找整个局域网中的控制器列表,通过选中某个控制器来查看其运行状态,读取其用户程序,并进行在线调试、修改和编译。
具体地,将运行编译器的PC接入到局域中,编译器充分考虑了分布式系统的开发应用,它可以同时连接多个控制器,并且同时编辑、编译他们的程序,编译器通过IP地址来区分不同的控制器。
进一步地,为了提高用户使用的便利性,所述的一种编译器,还包括画面组态开发工具,所述画面组态开发工具用于将所述源程序中的变量表数据转换为预设文件格式的文件。
具体地,编译器集成的画面组态开发工具执行该操作,由于画面组态和PLC程序共用相同的变量表,通过该方法可减少画面开发时定义变量的时间,操作时,可以将该文件烧写到GUI设备上,就能可以在GUI设备上显示画面,并能实时的显示PLC的控制状态。
在本发明实施例还提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执上述实施例描述的方法。
所述计算机可读存储介质可以是前述实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (8)

1.一种编译方法,其特征在于,包括:
获取用户输入的待编译的源程序;
判断所述待编译的源程序中的语言类型以得到源程序类型,所述源程序类型包括IL语言程序和非IL语言程序,所述语言类型包括IL语言和非IL语言;
非IL语言程序时,将所述源程序中语言类型为非IL语言进行转换以得到IL语言程序,再采用词法分析方法检查所述IL语言程序中的错误;
IL语言程序时,则直接采用所述词法分析方法检查所述IL语言程序中的错误;
将各错误信息进行汇总并通过错误信息列表进行显示;
判断所述错误信息列表中是否存在所述错误信息,存在,则停止编译,不存在,则对所述IL语言程序进行语义分析;
判断是否存在语义错误,存在,则停止编译,不存在,则执行编译,将所述IL语言程序转换成机器语言文件,并将所述机器语言文件进行分段存储。
2.根据权利要求1所述的一种编译方法,其特征在于,所述方法还包括:
查找整个局域网中的控制器列表,通过选中某个控制器来查看其运行状态,读取其用户程序,并进行在线调试、修改和编译。
3.根据权利要求1所述的一种编译方法,其特征在于,所述方法还包括:
将所述源程序中的变量表数据转换为预设文件格式的文件。
4.根据权利要求1所述的一种编译方法,其特征在于,所述机器语言文件进行分段存储具体包括:
将所述机器语言文件分成10段,其中,段0存放的是硬件的规格信息、用户权限信息;段1存放的是变量与硬件资源的对应表格;段2存放与硬件资源无关的变量信息表;段3预留;段4存放的是优先级为0任务的代码段信息;段5存放的是有优先级为1任务的代码段信息,段6存放的是优先级为2任务的代码段信息;段7存放的是优先级为3任务的代码段信息;段8存放优先级为4任务的代码段信息;段9存放事件处理任务的代码段信息。
5.一种编译器,其特征在于,包括文本编辑器、处理模块、转换组件、词法分析模块、错误信息列表和语义分析模块;
所述文本编辑器用于获取用户输入的待编译的源程序;
所述处理模块用于判断所述待编译的源程序中的语言类型以得到源程序类型,所述源程序类型包括IL语言程序和非IL语言程序,所述语言类型包括IL语言和非IL语言;
所述转换组件用于将所述源程序中语言类型为非IL语言的进行转换以得到IL语言程序;
所述词法分析模块用于采用所述词法分析方法检查所述IL语言程序中的错误;
所述错误信息列表用于将各错误信息进行汇总并进行显示;
所述处理模块还用于判断所述错误信息列表中是否存在所述错误信息,存在,则停止编译,不存在,则对所述IL语言程序进行语义分析;
所述语义分析模块用于对所述IL语言程序进行语义分析;
所述处理模块还用于判断是否存在语义错误,存在,则停止编译,不存在,则执行编译,将所述IL语言程序转换成机器语言文件,并将所述机器语言文件进行分段存储。
6.根据权利要求5所述的一种编译器,其特征在于,还包括通信组件,所述通信组件用于查找整个局域网中的控制器列表,通过选中某个控制器来查看其运行状态,读取其用户程序,并进行在线调试、修改和编译。
7.根据权利要求5所述的一种编译器,其特征在于,还包括画面组态开发工具,所述画面组态开发工具用于将所述源程序中的变量表数据转换为预设文件格式的文件。
8.根据权利要求5所述的一种编译器,其特征在于,所述机器语言文件进行分段存储具体包括:
将所述机器语言文件分成10段,其中,段0存放的是硬件的规格信息、用户权限信息;段1存放的是变量与硬件资源的对应表格;段2存放与硬件资源无关的变量信息表;段3预留;段4存放的是优先级为0任务的代码段信息;段5存放的是有优先级为1任务的代码段信息,段6存放的是优先级为2任务的代码段信息;段7存放的是优先级为3任务的代码段信息;段8存放优先级为4任务的代码段信息;段9存放事件处理任务的代码段信息。
CN201910155464.2A 2019-03-01 2019-03-01 一种编译方法及编译器 Active CN109918081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910155464.2A CN109918081B (zh) 2019-03-01 2019-03-01 一种编译方法及编译器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910155464.2A CN109918081B (zh) 2019-03-01 2019-03-01 一种编译方法及编译器

Publications (2)

Publication Number Publication Date
CN109918081A true CN109918081A (zh) 2019-06-21
CN109918081B CN109918081B (zh) 2022-06-03

Family

ID=66962911

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910155464.2A Active CN109918081B (zh) 2019-03-01 2019-03-01 一种编译方法及编译器

Country Status (1)

Country Link
CN (1) CN109918081B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111209005A (zh) * 2020-01-06 2020-05-29 腾讯科技(深圳)有限公司 程序文件的编译方法、装置和计算机可读存储介质
CN111522556A (zh) * 2020-04-29 2020-08-11 铁道警察学院 一种分组密码编程语言及编译基础设施的设计方法
CN113253992A (zh) * 2020-02-11 2021-08-13 Ls电气株式会社 用于支持多种编程语言的plc控制方法
CN113360142A (zh) * 2021-06-24 2021-09-07 广东工贸职业技术学院 一种数控内嵌plc中间文件的设计与编译方法
CN113553061A (zh) * 2021-09-22 2021-10-26 西安芯瞳半导体技术有限公司 一种提升源程序执行性能的方法、装置及计算机存储介质
CN113687833A (zh) * 2021-08-09 2021-11-23 深圳市汇川技术股份有限公司 混合编译方法、混合编译系统、编译器及存储介质
CN116301906A (zh) * 2023-05-22 2023-06-23 安徽华可智能科技有限公司 一种模块化的c语言通用编译器

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1613054A (zh) * 2002-01-02 2005-05-04 英特尔公司 控制指令集体系结构之间的二进制编码翻译的兼容水平
CN101681366A (zh) * 2007-03-02 2010-03-24 E-曼纽尔系统私人有限公司 一种数据存储和管理方法
CN102541751A (zh) * 2010-11-18 2012-07-04 微软公司 用于数据去重复的可缩放块存储
CN102710524A (zh) * 2012-06-15 2012-10-03 大连梯耐德网络技术有限公司 一种多协议网络报文传输保序系统的实现方法
US20120304156A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Reducing network trips for remote expression evaluation
US20130139135A1 (en) * 2010-08-26 2013-05-30 Freescale Semiconductor ,Inc. Optimization method for compiler, optimizer for a compiler and storage medium storing optimizing code
CN103279377A (zh) * 2013-05-09 2013-09-04 北京百度网讯科技有限公司 代码差异度比较方法及装置
CN103514027A (zh) * 2013-11-12 2014-01-15 北京深思数盾科技有限公司 一种增强软件保护易用性的方法
CN103885770A (zh) * 2014-01-21 2014-06-25 唐道成 单片机从可执行文件找回汇编文件的实现方法
CN104239115A (zh) * 2014-07-24 2014-12-24 汕头大学 一种plc编程语言的编译方法
US20150309779A1 (en) * 2014-04-29 2015-10-29 Reservoir Labs, Inc. Systems and methods for power optimization of processors
CN105579955A (zh) * 2013-09-27 2016-05-11 慧与发展有限责任合伙企业 应用控制流模型
CN109254776A (zh) * 2018-09-29 2019-01-22 深圳市雷赛控制技术有限公司 多语言代码编译方法及编译器

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1613054A (zh) * 2002-01-02 2005-05-04 英特尔公司 控制指令集体系结构之间的二进制编码翻译的兼容水平
CN101681366A (zh) * 2007-03-02 2010-03-24 E-曼纽尔系统私人有限公司 一种数据存储和管理方法
US20130139135A1 (en) * 2010-08-26 2013-05-30 Freescale Semiconductor ,Inc. Optimization method for compiler, optimizer for a compiler and storage medium storing optimizing code
CN102541751A (zh) * 2010-11-18 2012-07-04 微软公司 用于数据去重复的可缩放块存储
US20120304156A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Reducing network trips for remote expression evaluation
CN102710524A (zh) * 2012-06-15 2012-10-03 大连梯耐德网络技术有限公司 一种多协议网络报文传输保序系统的实现方法
CN103279377A (zh) * 2013-05-09 2013-09-04 北京百度网讯科技有限公司 代码差异度比较方法及装置
CN105579955A (zh) * 2013-09-27 2016-05-11 慧与发展有限责任合伙企业 应用控制流模型
CN103514027A (zh) * 2013-11-12 2014-01-15 北京深思数盾科技有限公司 一种增强软件保护易用性的方法
CN103885770A (zh) * 2014-01-21 2014-06-25 唐道成 单片机从可执行文件找回汇编文件的实现方法
US20150309779A1 (en) * 2014-04-29 2015-10-29 Reservoir Labs, Inc. Systems and methods for power optimization of processors
CN104239115A (zh) * 2014-07-24 2014-12-24 汕头大学 一种plc编程语言的编译方法
CN109254776A (zh) * 2018-09-29 2019-01-22 深圳市雷赛控制技术有限公司 多语言代码编译方法及编译器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANDREA LANZI: "Reverse engineering: executable file format", 《HTTPS://SECURITY.DI.UNIMI.IT/SICUREZZA1819/SLIDES/SICUREZZA2/REVERSE1.PDF》 *
大空新一: "Linux系统ELF文件二进制格式分析(三)", 《HTTPS://BLOG.CSDN.NET/GONGTXY/ARTICLE/DETAILS/44313105》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111209005A (zh) * 2020-01-06 2020-05-29 腾讯科技(深圳)有限公司 程序文件的编译方法、装置和计算机可读存储介质
CN113253992A (zh) * 2020-02-11 2021-08-13 Ls电气株式会社 用于支持多种编程语言的plc控制方法
CN113253992B (zh) * 2020-02-11 2024-05-10 Ls电气株式会社 用于支持多种编程语言的plc控制方法
CN111522556A (zh) * 2020-04-29 2020-08-11 铁道警察学院 一种分组密码编程语言及编译基础设施的设计方法
CN111522556B (zh) * 2020-04-29 2023-11-24 铁道警察学院 一种分组密码编程语言及编译基础设施的设计方法
CN113360142A (zh) * 2021-06-24 2021-09-07 广东工贸职业技术学院 一种数控内嵌plc中间文件的设计与编译方法
CN113687833A (zh) * 2021-08-09 2021-11-23 深圳市汇川技术股份有限公司 混合编译方法、混合编译系统、编译器及存储介质
CN113687833B (zh) * 2021-08-09 2024-06-21 深圳市汇川技术股份有限公司 混合编译方法、混合编译系统、编译器及存储介质
CN113553061A (zh) * 2021-09-22 2021-10-26 西安芯瞳半导体技术有限公司 一种提升源程序执行性能的方法、装置及计算机存储介质
CN113553061B (zh) * 2021-09-22 2021-12-17 西安芯瞳半导体技术有限公司 一种提升源程序执行性能的方法、装置及计算机存储介质
CN116301906A (zh) * 2023-05-22 2023-06-23 安徽华可智能科技有限公司 一种模块化的c语言通用编译器

Also Published As

Publication number Publication date
CN109918081B (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
CN109918081A (zh) 一种编译方法及编译器
CN109254776B (zh) 多语言代码编译方法及编译器
CN109976760A (zh) 一种图形语言的交叉编译方法及交叉编译器
EP2169547B1 (en) Compilation model for programmable logic controllers (PLC).
CN111488154A (zh) St语言源代码编译方法、装置、计算机设备及介质
CN104820613B (zh) 一种异构多核程序的编译方法
JP2002099312A (ja) プログラマブルコントローラおよび制御プログラム開発支援装置
JPH0760326B2 (ja) 第二プログラム可能論理制御器上で使用するための第一プログラム可能論理制御器上で使用するためのプログラム可能論理制御器ハードウエア形態及び対応する制御プログラムの変換方法
JPH02272627A (ja) デイジタル・コンピユータ・システムとその手続呼び出し方法
JP2007531946A (ja) データ処理装置におけるデータ整合性
CN116540986A (zh) 一种基于Web端的文本类编程语言代码编辑器构建方法
CN117075909B (zh) 用于实现并行编程的编译方法、电子设备和介质
CN109634572A (zh) 一种流程图编程方法及系统
CN104881396A (zh) 图形化程序的编译文件形成方法
Waddington et al. High-fidelity C/C++ code transformation
CN102566481B (zh) 一种基于c语言的plc控制系统及其实现方法
CN117573132A (zh) 一种面向不同体系架构控制器的一体化编译下装方法
US5560010A (en) Method for automatically generating object declarations
CN115509607B (zh) 一种iOS端打包工程向打包脚本跨环境传递指令的方法
CN114327490B (zh) 国产操作系统适配Ceph的方法
CN115658140A (zh) 一种sdk的打包方法、装置、终端以及存储介质
JP2007122187A (ja) プログラム・コード生成装置
Fujiwara et al. Reverse engineering from mainframe assembly to C codes in legacy migration
CN111796867A (zh) 着色器的转换方法、装置及电子设备
JPH07271631A (ja) デバッガ

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant