将程序码于不同程序语言间进行转换及优化的方法技术

技术编号:35157146 阅读:31 留言:0更新日期:2022-10-12 17:14
本发明专利技术涉及一种将程序码于不同程序语言间进行转换及优化的方法。一种程序码的转换及优化方法,包括:取得来源程序片段;取得来源程序片段对应的抽象语法树;通过语法标记解析器递回巡访抽象语法树中的多个节点;依据被巡访的节点查询语法标记对应表以产生对应至目的程序语言的语法标记;通过语意组合器递回巡访抽象语法树中的多个区块;将区块的内容及语法标记与上一个被巡访的区块的内容及语法标记进行组合以产生并更新中间结果;于递回结束后基于中间结果产生目的程序片段;及,通过语意优化器巡访目的程序片段中的复数语意组合,并对复数语意组合进行化简以产生优化后目的程序片段。序片段。序片段。

【技术实现步骤摘要】
将程序码于不同程序语言间进行转换及优化的方法


[0001]本专利技术涉及程序语言,尤其涉及一种将程序码于不同的程序语言架构之间进行转换并且进行优化的方法。

技术介绍

[0002]目前在工业自动化领域中,开发人员可以使用多种不同的程序语言来进行开发,而各种程序语言是分别针对不同学科背景人士与不同产业领域所各别提供的。
[0003]具体地,工业自动化领域中一般常见的程序语言,包括有传统阶梯图(Ladder Diagram)、功能块图(Function Block Diagram)、连续功能图(Continuous Function Chart)、顺序功能图(Sequential Function Chart)、结构化文字(Structured Text)、PASCAL、Java、C/C++/C#、Python、Objective

C、Lua等,并且一般可被区分为图形程序语言及文字程序语言。
[0004]如上所述,各种不同的程序语言是分别具有不同的使用族群,因此并非所有的开发人员都会使用全部的程序语言。为了克服上述问题,目前市面上有部分的工控产品提供了可将程序码在少数图形程序语言之间进行转换的转换程序。
[0005]然而,现今市面上可见的转换程序主要仅针对图形程序语言所设计,无法将基于图形程序语言架构所编写完成的程序码逻辑转换为符合文字程序语言的架构并且具有同质性语意的程序码,无法将基于文字程序语言架构所编写完成的程序码逻辑转换为符合图形程序语言的架构并且具有同质性语意的程序码,并且也无法将程序码在不同的文字程序语言架构之间进行互换。
[0006]再者,上述转换程序仅能以一个完整的程序单元(Program Organization Units,POU)做为一个转换单位,而无法进行程序片段的转换,并且亦无法在转换后对目的程序码进行优化。因此,可能在语言转换后产生较不恰当的程序码,造成可编程逻辑控制器(Programmable Logic Controller,PLC)的暂存器、I/O点或存储器的浪费,并且使得所产生的PLC文件容量过大,进而提高了工业自动化产线整体的开发成本。

技术实现思路

[0007]本专利技术的主要目的,在于提供一种将程序码于不同程序语言间进行转换及优化的方法,可令使用者获取程序片段并在图形程序语言与文字程序语言之间任意进行转换以产生目的程序码,并于转换后自动对目的程序码执行优化。
[0008]为了实现上述的目的,本专利技术的转换及优化方法主要是应用于程序语言编辑器,并且包括下列步骤:
[0009]a)取得基于一来源程序语言所编写的一程序片段,其中该来源程序语言为图形程序语言或文字程序语言;
[0010]b)取得该程序片段对应的一抽象语法树(Abstract Syntax Tree,AST),其中该抽象语法树包括多个区块;
[0011]c)通过一语法标记解析器巡访该抽象语法树中的该多个区块的其中之一;
[0012]d)依据该被巡访的区块查询一语法标记对应表,以为该区块产生对应至一目的程序语言的一语法标记,其中该语法标记对应表记录该来源程序语言的复数语法与该目的程序语言的复数语法间的一对应关系,该目的程序语言为图形程序语言或文字程序语言;
[0013]e)于该多个区块皆被该语法标记解析器巡访并且产生该语法标记前,重复执行该步骤c及该步骤d;
[0014]f)于该多个区块皆被该语法标记解析器巡访并且产生该语法标记后,通过一语意组合器巡访该抽象语法树中的该多个区块的其中之一;
[0015]g)将该被巡访的区块的内容及该语法标记与上一个被巡访的区块的内容及该语法标记进行组合以产生一中间结果;
[0016]h)于该多个区块皆被该语意组合器巡访前,重复执行该步骤f及该步骤g以更新该中间结果;
[0017]i)于该多个区块皆被该语意组合器巡访后,依据更新后的该中间结果产生一目的程序片段;
[0018]j)通过一语意优化器巡访该目的程序片段中的多个语意组合,于该多个语意组合符合一条件等式时执行一等价置换程序并产生一优化后目的程序片段;及
[0019]k)于该程序语言编辑器上输出该优化后目的程序片段,其中该优化目的程序片段符合该目的程序语言。
[0020]相较于相关技术,本专利技术可将基于图形程序语言或文字程序语言编写的来源程序片段直接转换为符合其他程序语言的架构的目的程序片段,并且令目的程序片段与来源程序片段具有同质性的语意。借此,可大幅降低不同学科背景的人士进入工业自动化产业中的程序设计领域的门限,并且,提高可编程逻辑控制器(Programmable Logic Controller,PLC)的编程效率,同时益于缩短专案的整合时间整本。
[0021]并且,本专利技术自动对转换后的目的程序片段执行优化,借此还可有效节省PLC的暂存器、I/O点的使用量以及存储器的空间,缩小所产生的PLC配置文件的容量,降低了工业自动化产线整体的开发成本。
附图说明
[0022]图1为本专利技术的转换及优化流程图的第一具体实施例。
[0023]图2为本专利技术的转换情境示意图。
[0024]图3为程序语言的区块示意图。
[0025]图4A为程序语言的条件陈述示意图。
[0026]图4B为程序语言的条件运算示意图。
[0027]图4C为程序语言的一般陈述示意图。
[0028]图5为本专利技术的转换及优化流程图的第二具体实施例。
[0029]图6为本专利技术的递回巡访示意图的第一具体实施例。
[0030]图7为本专利技术的抽象语法树的示意图的第一具体实施例。
[0031]图8A为本专利技术的语法标记的第一流程图的第一具体实施例。
[0032]图8B为本专利技术的语法标记的第二流程图的第一具体实施例。
[0033]图9A为本专利技术的语意组合的第一流程图的第一具体实施例。
[0034]图9B为本专利技术的语意组合的第二流程图的第一具体实施例。
[0035]图10为本专利技术的转换示意图的第一具体实施例。
[0036]图11为不同程序语言的转换示意图。
[0037]图12为本专利技术的优化流程图的第一具体实施例。
[0038]图13为本专利技术的优化示意图的第一具体实施例。
[0039]图14A为本专利技术的优化流程图的第二具体实施例。
[0040]图14B为本专利技术的优化流程图的第三具体实施例。
[0041]图14C为本专利技术的优化流程图的第四具体实施例。
[0042]附图标记说明:
[0043]1…
来源程序片段
[0044]11

第一巡访区块
[0045]12

第二巡访区块
[0046]13

第三巡访区块
[0047]14

语法标记
[0048]2…
目的程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将程序码于不同程序语言间进行转换及优化的方法,应用于一程序语言编辑器,包括:a)取得基于一来源程序语言所编写的一程序片段,其中该来源程序语言为图形程序语言或文字程序语言;b)取得该程序片段对应的一抽象语法树,其中该抽象语法树包括多个区块;c)通过一语法标记解析器巡访该抽象语法树的该多个区块的其中之一;d)依据该被巡访的区块的一物件内容及与相邻区块的连接关系查询一语法标记对应表,以产生对应至一目的程序语言的一语法标记,其中该语法标记对应表记录该来源程序语言的复数语法与该目的程序语言的复数语法间的一对应关系,该目的程序语言为图形程序语言或文字程序语言;e)于该多个区块皆被该语法标记解析器巡访并且产生该语法标记前,重复执行该步骤c及该步骤d;f)于该多个区块皆被该语法标记解析器巡访后,通过一语意组合器巡访该抽象语法树中的该多个区块的其中之一;g)将该被巡访的区块的该物件内容及该语法标记与上一个被巡访的区块的该物件内容及该语法标记进行组合以产生一中间结果;h)于该多个区块皆被该语意组合器巡访前,重复执行该步骤f及该步骤g以更新该中间结果;i)于该多个区块皆被该语意组合器巡访后,依据更新后的该中间结果产生一目的程序片段,其中该目的程序片段符合该目的程序语言的架构;j)通过一语意优化器巡访该目的程序片段中的一或多个语意组合,并且于该一或多个语意组合符合一条件等式时执行一等价置换程序并产生一优化后目的程序片段;及k)于该程序语言编辑器上输出该优化后目的程序片段。2.如权利要求1所述的方法,其中该抽象语法树中的该多个区块包括一分支区块、一连续区块或一般区块,该分支区块包括至少两个并联的区块,该连续区块包括至少两个串联的区块,该一般区块记录一条件物件、一功能物件或一结尾物件,并且各该区块分别对应一个节点暂存器,各该区块的该物件内容及该语法标记记录于该节点暂存器中。3.如权利要求2所述的方法,其中该步骤c于该来源程序语言为文字程序语言时,以一正向递回方式巡访该抽象语法树中的该多个区块,并于该来源程序语言为图形程序语言时,以一反向递回方式巡访该抽象语法树中的该多个区块。4.如权利要求2所述的方法,其中该步骤d包括下列步骤:d11)于当前巡访的该区块为该分支区块,并且该分支区块为上层区块中最后一个具有条件执行的区块时,依据该分支区块与相邻区块的连接关系取得对应的一条件陈述,依据该条件陈述查询该语法标记对应表以取得对应至该目的程序语言的该条件陈述的该语法标记,并将该语法标记记录于该分支区块的该节点暂存器中;及d11)于当前巡访的该区块为该分支区块时,依据一OR条件运算查询该语法标记对应表以取得对应至该目的程序语言的该OR条件运算的该语法标记,并将该语法标记记录于该分支区块的该节点暂存器中。5.如权利要求4所述的方法,其中该步骤d更一步骤d21):
于当前巡访的该区块为该连续区块,且该连续区块为上层区块中最后一个具有条件执行的区块时,依据该连续区块与相邻区块的连接关系取得对应的该条件陈述,依据该条件陈述查询该语法标记对应表以取得对应至该目的程序语言的该条件陈述的该语法标记,并将该语法标记记录于该连续区块的该节点暂存器中。6.如权利要求5所述的方法,其中该步骤d还包括下列步骤:d31)于当前巡访的该区块为该一般区块、该一般区块的该物件内容包含一条件物件,且该条件物件为连续条件物件中的第一个条件物件或最后一个条件物件时,依据该一般区块与相邻区块的连接关系取得对应的该条件陈述,依据该条件陈述查询该语法标记对应表以取得对应至该目的程序语言的该条件陈述的该语法标记,并将该语法标记记录于包含该条件物件的该一般区块的该节点...

【专利技术属性】
技术研发人员:郑懋桦
申请(专利权)人:台达电子工业股份有限公司
类型:发明
国别省市:

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

1