【技术实现步骤摘要】
代码生成方法及装置、存储介质、终端
[0001]本专利技术涉及计算机编程
,尤其涉及一种代码生成方法及装置、存储介质、终端。
技术介绍
[0002]采用面向对象的编程语言进行编程时,需要根据对象的定义对对象的成员进行访问等操作,这一过程中容易因人工编码时访问错误的成员而导致程序运行结果出现错误的情况,并且这种错误通常无法通过编译检查出来,只能根据程序运行的错误结果人为地进行检查,效率较低,且容易造成生产问题。因此,亟需一种代码生成方法,能够高效、准确地生成用户需要的代码。
技术实现思路
[0003]本专利技术解决的技术问题是提供一种高效、准确地代码生成方法。
[0004]为解决上述技术问题,本专利技术实施例提供一种代码生成方法,所述方法包括:获取对象的定义信息,所述定义信息包括多个字段的描述信息;对所述定义信息进行解析,生成所述对象的树形模型,所述树形模型包括多个节点,每个节点具有属性信息,其中,所述节点与所述字段一一对应,每一非叶子节点的子节点对应的字段为该非叶子节点对应的字段的成员;根据预设代码模板和所述多个节点的属性信息生成针对所述对象的目标代码,其中,所述预设代码模板用于描述所述目标代码的功能。
[0005]可选的,所述对象为结构体。
[0006]可选的,所述节点的属性信息包括以下一项或多项:节点的标识、父节点的标识、节点的名称、节点对应的字段的类型、节点类型参数、节点的子节点个数、节点的深度值、节点对应的字段的数组表达式;其中,所述节点的名称为所述节点对应的字段 ...
【技术保护点】
【技术特征摘要】
1.一种代码生成方法,其特征在于,所述方法包括:获取对象的定义信息,所述定义信息包括多个字段的描述信息;对所述定义信息进行解析,生成所述对象的树形模型,所述树形模型包括多个节点,每个节点具有属性信息,其中,所述节点与所述字段一一对应,每一非叶子节点的子节点对应的字段为该非叶子节点对应的字段的成员;根据预设代码模板和所述多个节点的属性信息生成针对所述对象的目标代码,其中,所述预设代码模板用于描述所述目标代码的功能。2.根据权利要求1所述的代码生成方法,其特征在于,所述对象为结构体。3.根据权利要求1所述的代码生成方法,其特征在于,所述节点的属性信息包括以下一项或多项:节点的标识、父节点的标识、节点的名称、节点对应的字段的类型、节点类型参数、节点的子节点个数、节点的深度值、节点对应的字段的数组表达式;其中,所述节点的名称为所述节点对应的字段,所述节点类型参数的取值用于指示所述节点是否为叶子节点,所述数组表达式用于指示数组的维数和每一维中元素的个数,所述节点的深度值用于确定访问所述节点对应的字段的语句的缩进量。4.根据权利要求3所述的代码生成方法,其特征在于,确定节点的深度值包括:步骤一:将任意一个叶子节点作为当前节点;步骤二:确定所述当前节点的父节点的中间深度值,所述中间深度值为所述当前节点的深度值加1;步骤三:判断所述父节点的当前深度值是否小于所述中间深度值,如果是,则执行步骤四,否则执行步骤五;步骤四:将所述父节点的当前深度值更新为所述中间深度值,并判断所述当前节点的父节点是否为根节点,如果是,则执行步骤五,否则将所述父节点作为所述当前节点,并执行步骤二;步骤五:判断所有的叶子节点是否被遍历,如果否,则将下一个叶子节点作为所述当前节点,并执行步骤二,直至所有的叶子节点遍历完成。5.根据权利要求3所述的代码生成方法,其特征在于,所述目标代码包括多行语句,根据预设代码模板和所述多个节点的属性信息生成目标函数的代码包括:根据所述预设代码模板确定待访问的字段,并生成所述待访问的字段对应的语句;其中,所述待访问的字段对应的语句的缩进量为所述待访问的字段对应的节点的缩进单位和预设单位缩进量的乘积;其中,叶子节点的缩进单位为根节点的深度值与所述叶子节点的父节点的深度值的差值加1,非叶子节点的缩进单位为根节点的深度值与所述非叶子节点的深度值的差值加1。6.根据权利要求3所述的代码生成方法,其特征在于,根据预设代码模板和所述多个节点的属性信息生成目标代码包括:根据所述预设代码模板确定待访问的字段;根据所述待访问的字段对应的节点的属性信息,判断所述待访问的字段是否为数组,如果是,则根据所述数组表达式确定所述待访问的字段对应的循环语句;其中,所述循环语句中第i层循环对应于所述数组的第i维,其中,第i层循环的循环次数是根据第i维的元素个数确定的,i为正整数。
7.根据权利要求6所述的代码生成方法,其特征在于,所述循环语句包括循环控制语句、作用域语句和循环体语句,根据预设代码模板和所述多个节点的属性信息生成目标代码还包括:采用下列公式确定所述循环语句中第i层循环的循环控制语句和作用域语句的缩进量:indent1[i]=(indent0+i
‑
1)
×
K;其中,indent1[i]为所述第i层循环的循环控制语句和作用域语句的缩进...
【专利技术属性】
技术研发人员:王伟,蔡文豪,周尤珠,王东,王洪涛,
申请(专利权)人:海通证券股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。