【CN109918081A】一种编译方法及编译器【专利】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201910155464.2
(22)申请日 2019.03.01
(71)申请人 中安智联未来有限公司
地址 450000 河南省郑州市自贸试验区郑
州片区(郑东)商务内环路9号楼11层
1106号
(72)发明人 马锦宝 李志刚
(74)专利代理机构 北京酷爱智慧知识产权代理
有限公司 11514
代理人 占丽君
(51)Int.Cl.
G06F 8/41(2018.01)
(54)发明名称
一种编译方法及编译器
(57)摘要
本发明公开了一种编译方法及编译器,该方
法包括:获取待编译的源程序;判断待编译的源
程序中的语言类型以得到源程序类型,源程序类
型包括IL语言程序和非IL语言程序,类型不符
时,进行语言转换后,再采用词法分析方法检查
程序中的错误;直到无错误信息后,则对程序进
行语义分析;通过语义分析后,将程序转换成机
器语言文件,并将所述机器语言文件进行分段存
储;其效果是:可将源程序中的所有语言都转成
IL语言,用户使用起来也更加灵活,当扩展其它
语言时,修改范围被压缩到很小的范围内,这样
充分提高了编译器的健壮性,此外生成文件采用
段式存储方式,
也可以很方便的扩展其他功能。权利要求书2页 说明书7页 附图2页CN 109918081 A 2019.06.21
C N 109918081
A
权 利 要 求 书1/2页CN 109918081 A
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所述的一种编译器,其特征在于,还包括通信组件,所述通信组件用
2