多语言代码编译方法及编译器技术

技术编号:20176233 阅读:18 留言:0更新日期:2019-01-23 00:14
本申请提供一种多语言代码编译方法及编译器,涉及语言编译技术领域。该编译方法包括:根据预设词法分析规则对源程序代码进行词法分析处理,生成词法分析结果,其中,所述源程序代码包括多种不同语言的源程序代码;根据预设语语义法分析规则对所述词法分析结果进行语法语义分析,生成语法语义分析结果;根据预设目标代码的生成规则对所述语法语义分析结果进行目标代码的分析,生成目标代码。该编译方法基于IEC61131‑3标准,将语言无关性模块进行整合,使得多语言编译器的结构得到很大简化,提升代码效率和减少代码的维护,并且在IEC61131‑3编程语言的基础上再增加BASIC语言的支持。

Multilingual Code Compiling Method and Compiler

This application provides a multilingual code compiling method and compiler, which relates to the technical field of language compilation. The compilation method includes: lexical analysis and processing of source code according to presupposition lexical analysis rules, generating lexical analysis results, in which the source code includes source code of many different languages; grammatical and semantic analysis of the lexical analysis results based on presupposition lexical analysis rules, generating grammatical and semantic analysis results; and presupposition objective code. Generation rules analyze the parsing results of grammar and semantics and generate the target code. Based on IEC61131 3 standard, this compilation method integrates language-independent modules, simplifies the structure of multilingual compiler, improves code efficiency and reduces code maintenance, and adds BASIC language support on the basis of IEC61131 3 programming language.

【技术实现步骤摘要】
多语言代码编译方法及编译器
本申请涉及语言编译
,特别涉及一种多语言代码编译方法及编译器。
技术介绍
IEC61131-3标准是有关可编程控制器的硬件、安装、试验、编程、通讯等方面的国际标准。其中IEC61131-3是PLC编程语言标准,详细的说明了五种编程语言,其中,包括梯形图(LadderDiagram,LD)、顺序功能流程图(SequentialFunctionChart,SFC)、功能区块图(FunctionBlockDiagram,FBD)、三种图形化语言;还包括指令表(InstructionList,IL)、结构化文本(StructuredText,ST)两种文本化语言。而IEC61131-3标准则作为工控领域的软逻辑编程的行业标准,被广泛应用在各大PLC厂商。现有的基于IEC61131-3标准语言的多语言编译器,较简化的编译器是通过增加语言转换器,将多种语言翻译成一种或者少数几种语言源程序,然后由一种或少数几种单语言编译器编译实现,虽然该编译器有所简化,但各功能模块仍有很多冗余,在提升代码效率方面和代码维护方面用户体验不是很好。申请内容本申请的目的在于,针对上述现有技术中的不足,提供一种多语言代码编译方法及编译器,提升代码效率和减少代码的维护,并且在IEC61131-3编程语言的基础上再增加BASIC语言的支持。为实现上述目的,本申请实施例采用的技术方案如下:第一方面,本申请实施例提供了一种多语言代码编译方法,所述方法包括:根据预设词法分析规则对源程序代码进行词法分析处理,生成词法分析结果,其中,源程序代码包括多种不同语言的源程序代码;根据预设语法语义分析规则对词法分析结果进行语法语义分析,生成语法语义分析结果;根据预设目标代码的生成规则对语法语义分析结果进行目标代码的分析,生成目标代码。进一步地,源程序代码包括下述至少2种源程序代码:梯形图语言、顺序功能流程图语言、功能区块图语言、指令表语言、结构化文本语言及BASIC语言。进一步地,根据预设词法分析规则对源程序代码进行词法分析处理,生成词法分析结果,包括:将源程序代码编译所需的头文件代码添加至源程序代码,得到新的源程序代码;根据预设词法分析规则对新的源程序代码进行词法分析处理并生成词法分析结果;其中,预设词法分析规则包括下述一种或多种组合:分界符类别、运算符类别、标识符类别、注释类别、常量类别或关键字类别规则。进一步地,根据预设语法语义分析规则对词法分析结果进行语法语义分析,生成语法语义分析结果,包括:采用变量模型对源程序代码的所述词法分析结果进行语法语义分析,生成变量模型的语法语义分析结果,其中,变量模型包括:单个变量和变量段的定义,变量段的定义包括输入变量段、输出变量段、局部变量段及全局变量段的定义;采用软件模型对变量模型的语法语义分析结果进行软件模型的语法语义分析,生成软件模型的语法语义分析结果,其中,软件模型的定义包括:软件配置、软件资源及软件任务的定义;采用程序组织单元模型对所述软件模型的语法语义分析结果进行程序组织单元模型的语法语义分析,生成程序组织单元模型的语法语义分析结果,其中,程序组织单元模型的定义包括:功能、功能块以及程序的定义。进一步地,根据变量模型的语法语义分析结果进行程序组织单元模型的语法语义分析,生成程序组织单元模型的语法语义分析结果,包括:对所述软件模型的语法语义分析结果进行划分处理,得到至少2种语言的分析结果;对所述至少2种语言的分析结果分别进行程序组织单元模型的语法语义分析;其中,所述至少2种语言包括下述至少2种:梯形图语言、顺序功能流程图语言、功能区块图语言、指令表语言、结构化文本语言及BASIC语言。第二方面,本申请实施例还提供多语言代码编译器,包括词法分析器、语法语义分析器及目标代码生成器;词法分析器,用于根据预设词法分析规则对源程序代码进行词法分析处理,生成词法分析结果,其中,源程序代码包括多种不同语言的源程序代码;语法语义分析器,用于根据预设语法语义分析规则对所述词法分析结果进行语法语义分析,生成语法语义分析结果;目标代码生成器,用于根据预设目标代码的生成规则对所述语法语义分析结果进行目标代码的分析,生成目标代码。进一步地,源程序代码包括下述至少2种源程序代码,梯形图语言、顺序功能流程图语言、功能区块图语言、指令表语言、结构化文本语言及BASIC语言的编译。进一步地,词法分析器,具体用于将源程序代码编译所需的头文件代码添加至源程序代码,得到新的源程序代码;根据预设词法分析规则对新的源程序代码进行进行词法分析处理并生成词法分析结果;其中,预设词法分析规则包括下述一种或多种组合:分界符类别、运算符类别、标识符类别、注释类别、常量类别或关键字类别规则。进一步地,语法语义分析器,具体用于采用变量模型对源程序代码的词法分析结果进行语法语义分析,生成变量模型的语法语义分析结果,其中,变量模型包括:单个变量和变量段的定义,变量段的定义包括输入变量段、输出变量段、局部变量段及全局变量段的定义;采用软件模型对变量模型的语法语义分析结果进行软件模型的语法语义分析,生成软件模型的语法语义分析结果,其中,软件模型的定义包括:软件配置、软件资源及软件任务的定义;采用程序组织单元模型对软件模型的语法语义分析结果进行程序组织单元模型的语法语义分析,生成程序组织单元模型的语法语义分析结果,其中,程序组织单元模型的定义包括:功能、功能块以及程序的定义。进一步地,语法语义分析器,具体用于对软件模型的语法语义分析结果进行划分处理,得到至少2种语言的分析结果;对至少2种语言的分析结果分别进行程序组织单元模型的语法语义分析;其中,至少2种语言包括下述至少2种:梯形图语言、顺序功能流程图语言、功能区块图语言、指令表语言、结构化文本语言及BASIC语言。本申请的有益效果是:本申请实施例提供的多语言代码编译方法及编译器中,基于IEC61131-3标准,使用该编译方法可以对多种不同语言的源程序代码进行编译,将“源语言无关”部分进行整合,使得多语言编译器的结构得到很大简化,提升代码效率和减少代码的维护,并且在IEC61131-3编程语言的基础上增加了BASIC语言编译的支持。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本申请实施例提供的IEC61131-3编程标准的层次结构示意图;图2为本申请实施例提供的多语言编译方法的流程示意图;图3为本申请实施例提供的多语言编译器的架构示意图一;图4为本申请实施例提供的多语言编译器的架构示意图二。图标:201-词法分析器;202-语法语义分析器;203-目标代码生成器;204-变量模型分析器;205-软件模型分析器;206-程序组织单元模型分析器;207-中间代码生成器;208-环境监测分析器;209-错误管理器。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所本文档来自技高网...

【技术保护点】
1.一种多语言代码编译方法,其特征在于,所述方法包括:根据预设词法分析规则对源程序代码进行词法分析处理,生成词法分析结果,其中,所述源程序代码包括多种不同语言的源程序代码;根据预设语法语义分析规则对所述词法分析结果进行语法语义分析,生成语法语义分析结果;根据预设目标代码的生成规则对所述语法语义分析结果进行目标代码的分析,生成目标代码。

【技术特征摘要】
1.一种多语言代码编译方法,其特征在于,所述方法包括:根据预设词法分析规则对源程序代码进行词法分析处理,生成词法分析结果,其中,所述源程序代码包括多种不同语言的源程序代码;根据预设语法语义分析规则对所述词法分析结果进行语法语义分析,生成语法语义分析结果;根据预设目标代码的生成规则对所述语法语义分析结果进行目标代码的分析,生成目标代码。2.根据权利要求1所述的方法,其特征在于,所述源程序代码包括下述至少2种源程序代码:梯形图语言、顺序功能流程图语言、功能区块图语言、指令表语言、结构化文本语言及BASIC语言。3.根据权利要求1所述的方法,其特征在于,所述根据预设词法分析规则对源程序代码进行词法分析处理,生成词法分析结果,包括:将所述源程序代码编译所需的头文件代码添加至所述源程序代码,得到新的源程序代码;根据预设词法分析规则对所述新的源程序代码进行词法分析处理并生成词法分析结果;其中,所述预设词法分析规则包括下述一种或多种组合:分界符类别、运算符类别、标识符类别、注释类别、常量类别或关键字类别规则。4.根据权利要求1所述的方法,其特征在于,所述根据预设语法语义分析规则对所述词法分析结果进行语法语义分析,生成语法语义分析结果,包括:采用变量模型对所述源程序代码的所述词法分析结果进行语法语义分析,生成变量模型的语法语义分析结果,其中,所述变量模型包括:单个变量和变量段的定义,变量段的定义包括输入变量段、输出变量段、局部变量段及全局变量段的定义;采用软件模型对所述变量模型的语法语义分析结果进行软件模型的语法语义分析,生成软件模型的语法语义分析结果,其中,所述软件模型的定义包括:软件配置、软件资源及软件任务的定义;采用程序组织单元模型对所述软件模型的语法语义分析结果进行程序组织单元模型的语法语义分析,生成程序组织单元模型的语法语义分析结果,其中,所述程序组织单元模型的定义包括:功能、功能块以及程序的定义。5.根据权利要求4所述的方法,其特征在于,所述根据所述变量模型的语法语义分析结果进行程序组织单元模型的语法语义分析,生成程序组织单元模型的语法语义分析结果,包括:对所述软件模型的语法语义分析结果进行划分处理,得到至少2种语言的分析结果;对所述至少2种语言的分析结果分别进行程序组织单元模型的语法语义分析;其中,所述至少2种语言包括下述至少2种:梯形图语言、顺序功能流程图语言、功能区块图语言、指令表语言、结构化...

【专利技术属性】
技术研发人员:张建飞王立松冯庆枝
申请(专利权)人:深圳市雷赛控制技术有限公司
类型:发明
国别省市:广东,44

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

1