代码生成方法和装置、电子设备和可读存储介质制造方法及图纸

技术编号:36562536 阅读:9 留言:0更新日期:2023-02-04 17:18
本申请公开了一种代码生成方法和装置、电子设备和可读存储介质,属于计算机软件技术领域。其中,代码生成方法,包括在具有第一代码的情况下,获取第一代码的第一抽象语法树。基于第一代码的层级结构,将第一代码解析为第一数据模型。基于第一数据模型,通过可视化渲染层在可视化界面中渲染出第一组件。基于在可视化界面对第一组件进行第一操作,可视化渲染层根据第一操作,获取第一数据。基于第一数据,对第一数据模型进行更新。基于更新后的第一数据模型,得到更新后的第一抽象语法树。基于更新后的第一抽象语法树,生成第二代码。生成第二代码。生成第二代码。

【技术实现步骤摘要】
代码生成方法和装置、电子设备和可读存储介质


[0001]本申请属于计算机软件
,具体涉及一种代码生成方法和装置、电子设备和可读存储介质。

技术介绍

[0002]相关技术的可视化开发中,通常会预置一些业务组件,业务组件的特有属性可以进行修改,但是并不能生成相关的代码,为开发者调试带来困难,并且,因为上述可视化开发模式只能针对特定场景下的开发,并不能针对所有应用程序的开发,造成适用范围小的问题。

技术实现思路

[0003]本申请实施例的目的是提供一种代码生成方法和装置、电子设备和可读存储介质,能够解决可视化开发中业务组件的属性可以进行修改,但是并不能生成修改后业务组件相关的代码,造成调试困难,并且,可视化开发只能针对特定场景,造成适用范围小的问题。
[0004]第一方面,本申请实施例提供了一种代码生成方法,包括在具有第一代码的情况下,获取第一代码的第一抽象语法树。基于第一代码的层级结构,将第一代码解析为第一数据模型。基于第一数据模型,通过可视化渲染层在可视化界面中渲染出第一组件。基于在可视化界面对第一组件进行第一操作,可视化渲染层根据第一操作,获取第一数据。基于第一数据,对第一数据模型进行更新。基于更新后的第一数据模型,得到更新后的第一抽象语法树。基于更新后的第一抽象语法树,生成第二代码。
[0005]第二方面,本申请实施例提供了一种代码生成装置,包括第一模块、第二模块、第三模块、第四模块、第五模块、第六模块和第七模块。第一模块用于在具有第一代码的情况下,获取第一代码的第一抽象语法树。第二模块用于基于第一代码的层级结构,将第一代码解析为第一数据模型。第三模块用于基于第一数据模型,通过可视化渲染层在可视化界面中渲染出第一组件。第四模块用于基于在可视化界面对第一组件进行第一操作,可视化渲染层根据第一操作,获取第一数据。第五模块用于基于第一数据,对第一数据模型进行更新。第六模块用于基于更新后的第一数据模型,得到更新后的第一抽象语法树。第七模块用于基于更新后的第一抽象语法树,生成第二代码。
[0006]第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面的代码生成方法的步骤。
[0007]第四方面,本申请实施例提供了一种可读存储介质,可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面的代码生成方法的步骤。
[0008]本申请基于对第一组件的第一操作,可以生成第一操作后对应的第二代码,可以解决相关技术中通过操作组件无法生成代码的问题。通过将修改代码与可视化进行关联,
通过对第一组件的第一操作完成页面设计,自动生成第二代码,可以避免进行代码编写,使得用户在应用开发中快速上手使用,进而提升用户体验。本实施例可以根据第一代码进行实时的可视化显示,也可以在对组件进行第一操作后,实时更新代码,通过上述方式,能够使用户的编码效果实时显示出来,进而节省大量调试时间,显著提升移动应用的开发效率。
附图说明
[0009]图1示出了本申请实施例提供的代码生成方法的流程示意图之一;
[0010]图2示出了本申请实施例提供的代码生成方法的流程示意图之二;
[0011]图3示出了本申请实施例提供的代码生成方法的流程示意图之三;
[0012]图4示出了本申请实施例提供的代码生成方法的流程示意图之四;
[0013]图5示出了本申请实施例提供的代码生成方法的流程示意图之五;
[0014]图6示出了本申请实施例提供的代码生成方法的流程示意图之六;
[0015]图7示出了本申请实施例提供的代码生成装置的结构框图;
[0016]图8示出了本申请实施例提供的电子设备的结构框图;
[0017]图9示出了本申请实施例的一种电子设备的硬件结构示意图;
[0018]图10示出了本申请实施例的可视化构建器的结构框图;
[0019]图11示出了本申请实施例的拖拽组件界面示意图;
[0020]图12示出了本申请实施例的更新组件样式界面示意图;
[0021]图13示出了本申请实施例的编辑属性界面示意图;
[0022]图14示出了本申请实施例的属性绑定变量界面示意图;
[0023]图15示出了本申请实施例的新增函数界面示意图;
[0024]图16示出了本申请实施例的组件绑定事件界面示意图;
[0025]图17示出了本申请实施例的组件大纲界面示意图;
[0026]图18示出了本申请实施例的代码示意图;
[0027]图19示出了本申请实施例的预览界面示意图。
[0028]其中,图7至图10中附图标记与部件名称之间的对应关系为:
[0029]100:代码生成装置;110:第一模块;120:第二模块;130:第三模块;140:第四模块;150:第五模块;160:第六模块;170:第七模块;200:可视化构建器;202:抽象语法树;204:可视化渲染层;206:可视化界面;208:模版功能板块;210:脚本功能板块;212:样式功能板块;214:创建节点;216:插入节点;218:删除节点;220:更新或移除属性;222:调整组件层级结构;224:获取数据变量;226:新增或删除数据变量;228:获取函数列表;230:新增函数;232:更新函数体;234:获取组件样式;236:更新或移除组件样式;238:拖拽组件;240:删除组件;242:更新组件样式;244:编辑属性;246:属性绑定变量;248:增加函数;250:组件绑定事件;252:组件大纲;254:更改组件层级结构;256:删除组件;258:克隆组件;260:代码;300:开发工具;1000:电子设备;1002:处理器;1004:存储器;1100:电子设备;1101:射频单元;1102:网络模块;1103:音频输出单元;1104:输入单元;11041:图形处理器;11042:麦克风;1105:传感器;1106:显示单元;11061:显示面板;1107:用户输入单元;11071:触控面板;11072:其他输入设备;1108:接口单元;1109:存储器;1110:处理器。
具体实施方式
[0030]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
[0031]本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码生成方法,其特征在于,包括:在具有第一代码的情况下,获取所述第一代码的第一抽象语法树;基于所述第一代码的层级结构,将所述第一代码解析为第一数据模型;基于所述第一数据模型,通过可视化渲染层在可视化界面中渲染出第一组件;基于在所述可视化界面对所述第一组件进行第一操作,所述可视化渲染层根据所述第一操作,获取第一数据;基于所述第一数据,对所述第一数据模型进行更新;基于所述更新后的第一数据模型,得到更新后的第一抽象语法树;基于所述更新后的第一抽象语法树,生成第二代码。2.根据权利要求1所述的代码生成方法,其特征在于,所述第一数据模型采用JSON数据结构,包括节点ID、节点类型、节点属性、节点样式、子节点和父节点。3.根据权利要求2所述的代码生成方法,其特征在于,所述基于所述第一数据模型,通过可视化渲染层在可视化界面中渲染出第一组件,具体包括:基于所述第一数据模型的节点类型,在所述可视化界面中渲染出所述节点类型对应的第一组件;基于所述子节点和所述父节点的字段,确定所述第一组件的层级关系;在所述可视化界面层选中所述第一组件后,根据所述节点ID,显示所述节点属性和节点样式。4.根据权利要求1所述的代码生成方法,其特征在于,还包括:设置模版功能板块,通过所述模版功能板块开放所述第一数据模型的第一数据接口,所述第一数据接口包括创建节点、插入节点、删除节点、更新或移除节点属性和调整组件层级结构;设置脚本功能板块,通过所述脚本功能板块开放所述第一数据模型的第二数据接口,所述第二数据接口包括新增或删除数据变量、获取函数列表、新增函数和更新函数体;设置样式功能板块,通过所述样式功能板块开放所述第一数据模型的第三数据接口,所述第三数据接口包括获取组件样式、更新或移除组件样式。5.根据权利要求1所述的代码生成方法,其特征在于,所述第一操作包括以下之一或其组...

【专利技术属性】
技术研发人员:兰敬民
申请(专利权)人:用友网络科技股份有限公司
类型:发明
国别省市:

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

1