代码生成方法及装置制造方法及图纸

技术编号:34467306 阅读:71 留言:0更新日期:2022-08-10 08:40
本发明专利技术实施例提供了代码生成方法及装置,应用于数据处理技术领域。该方法包括:获取针对目标编程语言的模板代码;其中,目标编程语言为待生成代码所属的编程语言;对模板代码进行字符串识别,得到多个字符串以及每一字符串所属的字符串类别;基于多个字符串中每一字符串所属的字符串类别对应的转换策略,对模板代码中的各字符串进行代码转换,得到中间代码;调用目标解释器运行中间代码,以得到目标解释器输出的目标代码;其中,目标解释器为可执行中间代码所属编写语言的解释器。通过本方案,可以简化代码生成方案构建的复杂程度,提高代码生成的适用性。码生成的适用性。码生成的适用性。

【技术实现步骤摘要】
代码生成方法及装置


[0001]本专利技术涉及数据处理
,特别是涉及代码生成方法及装置。

技术介绍

[0002]现阶段的代码生成技术中,往往需要借助模板引擎,具体而言,通过开发好的模板引擎,对编写好的模板代码内的标记化的字符串进行替换,从而批量化渲染出代码内容。
[0003]为了实现循环、条件判断、函数以及宏等复杂逻辑代码的渲染功能,相关技术中,往往需要对模板引擎的模板语法进行限定,从而使得基于模板引擎的代码生成技术,仅支持生成单一编程语言的代码,且需要以较为复杂的逻辑实现相应的代码功能,适用性较差。

技术实现思路

[0004]本专利技术实施例的目的在于提供代码生成方法及装置,以简化代码生成方案构建的复杂程度,并提高代码生成的适用性。具体技术方案如下:
[0005]第一方面,本专利技术实施例提供一种代码生成方法,所述方法包括:
[0006]获取针对目标编程语言的模板代码;其中,所述目标编程语言为待生成代码所属的编程语言;
[0007]对所述模板代码进行字符串识别,得到多个字符串以及每一字符串所属的字符串类别;
[0008]基于所述多个字符串中每一字符串所属的字符串类别对应的转换策略,对所述模板代码中的各字符串进行代码转换,得到中间代码;
[0009]调用目标解释器运行所述中间代码,以得到所述目标解释器输出的目标代码;其中,所述目标解释器为可执行所述中间代码所属编写语言的解释器。
[0010]可选的,所述对所述模板代码进行字符串识别,得到多个字符串以及每一字符串所属的字符串类别,包括:
[0011]识别所述模板代码中的至少一组起止标志符;其中,每一组起止标志符包括一对起始标志符和终止标志符;
[0012]将位于每一组起止标志符之间的字符串,作为第一字符串,并基于预设的起止标志符与指定类别的对应关系,确定每一第一字符串所属的指定类别;其中,所述指定类别为各字符串类别中除普通类别之外的字符串类别,属于普通类别的字符串的编码语言与所需生成的代码的编码语言相同;
[0013]将不属于任一组起止标志符之间的字符串,作为第二字符串,并确定每一第二字符串所属的字符串类别为所述普通类别。
[0014]可选的,所述识别所述模板代码中的至少一组起止标志符,包括:
[0015]针对所述模板代码中的每一行代码文本,确定该行代码文本中是否包含至少一对起始标志符和终止标志符;若包含,则将所确定的该对起始标志符和终止标志符确定为一组起止标志符。
[0016]可选的,所述确定该行代码文本中是否包含至少一对起始标志符和终止标志符,包括:
[0017]对该行代码文本进行针对起始标志符和终止标志符的搜索;
[0018]若搜索到至少一对起始标志符和终止标志符,则确定该行代码文本中包含至少一对起始标志符和终止标志符,否则,确定该行代码文本中不包含至少一对起始标志符和终止标志符。
[0019]可选的,所述方法还包括:
[0020]若所搜索出的起始标志符的数量与所搜索出的终止标志符的数量不匹配,则输出指示错误的信息。
[0021]可选的,所述基于所述多个字符串中每一字符串所属的字符串类别对应的转换策略,对所述模板代码中的各字符串进行代码转换,包括:
[0022]针对所述多个字符串中每一字符串,采用如下方式对该字符串进行代码转换,包括:
[0023]从所述模板代码中读取该字符串;
[0024]若该字符串所属的字符串类别为语法类别,则按照与该字符串所属的语法类别对应的编写规则,将该字符串编写为命令代码,并将所述命令代码写入目标代码文件;其中,所述目标代码文件用于记录待生成的代码;
[0025]若该字符串所属的字符串类别为变更类别,则将该字符串作为变量写入所述目标代码文件;
[0026]若该字符串所属的字符串类别为普通类别,则将该字符串作为代码文本,写入所述目标代码文件。
[0027]可选的,所述按照与该字符串所属的语法类别对应的编写规则,将该字符串编写为命令代码,包括:
[0028]若语法类别为与代码块标识无关的类别,则将该字符串作为命令代码;
[0029]若语法类别为与代码块标识相关的类别,则按照与该字符串所属的语法类别对应的代码块标识操作,在该字符串的指定位置,执行针对代码块标识的指定操作,以得到命令代码;其中,所述指定位置包括该字符串之前或之后的位置,所述指定操作包括增加代码块标识或删除代码块标识。
[0030]可选的,所述目标解释器运行所述中间代码,包括:
[0031]读取预先配置的所述中间代码中各可替换变量的配置值;
[0032]利用所读取的各配置值,替换所述中间代码中的各可替换变量,并运行替换后的所述中间代码。
[0033]可选的,所述方法还包括:
[0034]建立所述模板代码中的第一代码文本与所述中间代码中的第二代码文本之间的代码对应关系,其中,与每一第一代码文本对应的第二代码文本为:基于该第一代码文本所生成的代码文本;
[0035]若在所述目标解释器运行出错,则确定导致所述目标解释器运行出错时的第二代码文本;
[0036]基于所述代码对应关系,确定与所确定第二代码文本对应的第一代码文本,作为
错误代码文本;
[0037]生成提示所述错误代码文本的出错的信息。
[0038]第二方面,本专利技术实施例提供一种代码生成装置,所述装置包括:
[0039]代码获取模块,用于获取针对目标编程语言的模板代码;其中,所述目标编程语言为待生成代码所属的编程语言;
[0040]字符串识别模块,用于对所述模板代码进行字符串识别,得到多个字符串以及每一字符串所属的字符串类别;
[0041]代码转换模块,用于基于所述多个字符串中每一字符串所属的字符串类别对应的转换策略,对所述模板代码中的各字符串进行代码转换,得到中间代码;
[0042]代码运行模块,用于调用目标解释器运行所述中间代码,以得到所述目标解释器输出的目标代码;其中,所述目标解释器为可执行所述中间代码所属编写语言的解释器。
[0043]可选的,所述字符串识别模块,用于,包括:
[0044]标识符识别子模块,用于识别所述模板代码中的至少一组起止标志符;其中,每一组起止标志符包括一对起始标志符和终止标志符;
[0045]第一确定子模块,用于将位于每一组起止标志符之间的字符串,作为第一字符串,并基于预设的起止标志符与指定类别的对应关系,确定每一第一字符串所属的指定类别;其中,所述指定类别为各字符串类别中除普通类别之外的字符串类别,属于普通类别的字符串的编码语言与所需生成的代码的编码语言相同;
[0046]第二确定子模块,用于将不属于任一组起止标志符之间的字符串,作为第二字符串,并确定每一第二字符串所属的字符串类别为所述普通类别。
[0047]可选的,所述标识符识别子模块,具体用于针对所述模板代码中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码生成方法,其特征在于,所述方法包括:获取针对目标编程语言的模板代码;其中,所述目标编程语言为待生成代码所属的编程语言;对所述模板代码进行字符串识别,得到多个字符串以及每一字符串所属的字符串类别;基于所述多个字符串中每一字符串所属的字符串类别对应的转换策略,对所述模板代码中的各字符串进行代码转换,得到中间代码;调用目标解释器运行所述中间代码,以得到所述目标解释器输出的目标代码;其中,所述目标解释器为可执行所述中间代码所属编写语言的解释器。2.根据权利要求1所述的方法,其特征在于,所述对所述模板代码进行字符串识别,得到多个字符串以及每一字符串所属的字符串类别,包括:识别所述模板代码中的至少一组起止标志符;其中,每一组起止标志符包括一对起始标志符和终止标志符;将位于每一组起止标志符之间的字符串,作为第一字符串,并基于预设的起止标志符与指定类别的对应关系,确定每一第一字符串所属的指定类别;其中,所述指定类别为各字符串类别中除普通类别之外的字符串类别,属于普通类别的字符串的编码语言与所需生成的代码的编码语言相同;将不属于任一组起止标志符之间的字符串,作为第二字符串,并确定每一第二字符串所属的字符串类别为所述普通类别。3.根据权利要求2所述的方法,其特征在于,所述识别所述模板代码中的至少一组起止标志符,包括:针对所述模板代码中的每一行代码文本,确定该行代码文本中是否包含至少一对起始标志符和终止标志符;若包含,则将所确定的该对起始标志符和终止标志符确定为一组起止标志符。4.根据权利要求3所述的方法,其特征在于,所述确定该行代码文本中是否包含至少一对起始标志符和终止标志符,包括:对该行代码文本进行针对起始标志符和终止标志符的搜索;若搜索到至少一对起始标志符和终止标志符,则确定该行代码文本中包含至少一对起始标志符和终止标志符,否则,确定该行代码文本中不包含至少一对起始标志符和终止标志符。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若所搜索出的起始标志符的数量与所搜索出的终止标志符的数量不匹配,则输出指示错误的信息。6.根据权利要求1所述的方法,其特征在于,所述基于所述多个字符串中每一字符串所属的字符串类别对应的转换策略,对所述模板代码中的各字符串进行代码转换,包括:针对所述多个字符串中每一字符串,采用如下方式对该字符串进行代码转换,包括:从所述模板代码中...

【专利技术属性】
技术研发人员:桂心哲孟泽民冷明鑫张冰逸
申请(专利权)人:杭州海康威视数字技术股份有限公司
类型:发明
国别省市:

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

1