一种基于代码数据化的源代码自动生成方法及装置制造方法及图纸

技术编号:35175498 阅读:17 留言:0更新日期:2022-10-12 17:41
本发明专利技术涉及一种基于代码数据化的源代码自动生成方法及装置,包括以下步骤:在数据库内建立若干个语法结构存储表,语法结构存储表的列还包括语法结构ID和父级语法结构ID;依次读取模板工程的语法结构,在相应语法结构存储表中添加语句记录,获得语法结构ID,若存在父语法结构,则填写父语法结构ID;全部模板工程被添加到数据库完成代码数据化;找到相应模板工程;从数据库读取源文件表,找到源文件数据的全部子数据;依次递归遍历源文件的每个一条数据,找到当前源文件表的所有子数据,完成源代码的复原。本发明专利技术的有益技术效果包括:使得代码能够以多种数据处理方法进行处理,提高了代码的开发效率,促进软件技术的发展。促进软件技术的发展。促进软件技术的发展。

【技术实现步骤摘要】
一种基于代码数据化的源代码自动生成方法及装置


[0001]本专利技术涉及一种基于代码数据化的源代码自动生成方法及装置。

技术介绍

[0002]信息技术日新月异,迅速渗透了社会的方方面面,极大的改变了人们的生活面貌。但作为信息技术最重要的载体,程序代码只是作为文本的形式存在,没有明确的结构关系。导致现代化的信息处理手段,很难应用在程序代码上,导致代码的编制、分析和修改,只能由程序员手工完成,效率极低。一种能够跟程序代码等价,但能够实现借助应用现代化信息处理技术的新型程序表示方式的需求由此产生。
[0003]如中国专利CN113867716A,公开日2021年12月31日,一种用于应用功能开发的代码自动生成方法及装置,方法包括对系按照预设的逻辑建立表示该系统的思维导图;基于所述思维导图,自动生成所述系统中各个应用的预设功能代码;通过所述代码中的预设接口,调用自定义的代码以将所述自定义的代码自动融合至预设功能的代码中,得到应用的原始代码。通过建立系统的思维导图,并针对思维导图,自动生成预设功能的代码,同时当对应用的功能进行完善时,通过将预设功能的代码与自定义代码自动融合,完成代码的开发,提高了代码开发效率。但其技术方案仍然不能解决代码缺乏结构关系,导致代码的自动化处理难以进行的问题。

技术实现思路

[0004]本专利技术所要解决的技术问题:现有技术对代码的自动化处理难以进行,导致代码开发效率低的问题。提出了一种基于代码数据化的源代码自动生成方法及装置,实现代码的结构化表示,有助于提高代码的开发效率。
[0005]解决上述技术问题,本专利技术采用如下技术方案:一种基于代码数据化的源代码自动生成方法,包括以下步骤:获取若干个模板工程,添加模板工程的功能描述;在数据库内建立若干个语法结构存储表,每种语法结构对应一个语法结构存储表,语法结构存储表的列结构与语法结构的参量对应,语法结构存储表的列还包括语法结构ID和父语法结构ID;依次读取模板工程的语法结构,在相应的语法结构存储表中添加语句记录,获得语法结构ID,若语法结构存在父语法结构,则填写父语法结构ID;全部模板工程被添加到数据库后,完成代码的数据化;从数据库读取源文件表,查询数据库,找到新工程需要的全部源文件数据;依次递归遍历每个源文件数据,找到当前源文件数据的所有子数据;根据源文件数据及相应子数据完成源代码的复原,即完成新工程的源代码的自动生成。
[0006]作为优选,所述语法结构存储表包括源文件表、命名空间表、命名空间成员表、类
声明表、语句表、表达式表、双操作数表达式表及变量声明表,所述源文件表记录模板工程包含的源文件信息,所述源文件信息包括源文件名称和模板工程名称,所述命名空间表记录模板工程包含的全部命名空间信息,所述命名空间成员表记录模板工程的多个命名成员信息,所述类声明表记录模板工程包含的类声明信息,所述语句表记录模板工程包含的语句信息,所述表达式表记录模板工程包含的表达式信息,所述双操作数表达式表记录模板工程包含的双操作数表达式信息,所述变量声明表记录模板工程使用的变量声明信息。
[0007]作为优选,在相应的语法结构存储表中添加语法结构记录的方法包括:读取模板工程的工程名称,所述工程名称包括工程文件名称和解决方案名称;遍历模板工程下的每个源文件,在源文件表中添加源文件信息,所述源文件信息包括所属的工程名称、源文件名称、源文件ID和命名空间ID;建立源文件的语法树;遍历访问语法树,执行以下步骤:读取当前访问的语法结点,判断语法结点类型;若为类声明语句,则在类声明表中添加类声明信息,所述类声明信息包括类名称、命名空间ID、类ID和所属源文件ID;若为函数声明语句,则在语句表中添加函数声明语句信息,所述函数声明语句信息包括函数类型、语法结构名称、语法结构ID和父语法结构ID;若为单操作数表达式语法结构,则在表达式表中添加表达式信息,所述表达式信息包括表达式类型、表达式ID和父语法结构ID;若为双操作数表达式语法结构,则在双操作数表达式表中添加双操作数表达式信息,所述双操作数表达式信息包括表达式类型、表达式ID和父语法结构ID;若为函数声明语法结构、单操作数表达式语法结构或双操作数表达式语法结构,则在变量声明表中添加函数声明语法结构、单操作数表达式语法结构及双操作数表达式语法结构使用的变量信息,所述变量信息包括变量名称、变量类型、变量初值、变量ID、父语法结构ID和命名空间ID。
[0008]作为优选,获得类声明信息的命名空间ID的方法包括:获得类使用的命名空间名,在命名空间表中查询对应命名空间的命名空间ID,若不存在对应的命名空间,则在命名空间表中添加所述的命名空间,获得对应的命名空间ID。
[0009]作为优选,建立源文件的语法树后,访问语法树根节点,生成命名空间成员对象;在遍历语法树时,当遍历到类声明语法结构时,建立临时表,记录类ID和类使用的命名空间ID;遍历语法树后,根据临时表,更新命名空间成员表,在命名空间成员表中添加所述命名空间成员对象的命名空间成员信息,所述命名空间成员信息包括命名空间ID、类ID和源文件ID。
[0010]作为优选,复原源文件的源代码的方法包括:根据新工程的功能需求,找到对应的模板工程,根据对应的模板工程名称,查询数据库,获得匹配的全部源文件信息及相应的源文件ID;从数据库读取源文件表,查询数据库,找到新工程需要的全部源文件数据;依次递归遍历每个源文件数据,找到当前源文件数据的所有子数据;
为源文件数据及子数据建设树形结构,根据每一种树形结构的序列化文件生成语句代码;根据相应子数据将子数据及对应变量填入所述语句代码中,将完成子数据的源代码的复原;全部子数据完成源代码的复原,即完成新工程的源代码的自动生成。
[0011]一种基于代码数据化的源代码自动生成装置,执行如前述的一种基于代码数据化的源代码自动生成方法,包括模板工程输入模块、代码数据化模块、新工程建立模块和代码复原模块,所述模板工程输入模块接收若干个模板工程及相应的功能描述,所述代码数据化模块在数据库内建立若干个语法结构存储表,将模板工程的源代码存储在关系型数据库内,所述新工程建立模块根据用户提交的新工程名称和选择的模板工程名称,建立新的工程,并将对应的模板工程名称转发给代码复原模块,所述代码复原模块从关系型数据库内读取并复原对应的模板工程名称的源代码。
[0012]作为优选,所述代码数据化模块将模板工程的源代码存储在关系型数据库内时,执行以下步骤:在数据库内建立若干个语法结构存储表,每种语法结构对应一个语法结构存储表;语法结构存储表的列结构与语法结构的参量对应,语法结构存储表的列还包括语法结构ID和父语法结构ID,依次读取模板工程的语法结构,在相应的语法结构存储表中添加语法结构记录,获得语法结构ID,若语法结构存在父语法结构,则填写父语法结构ID;全部模板工程被添加到数据库后,完成代码的数据化;根据新工程的功能需求,找到相应的源文件数据表,查询数据库,依次递归遍历源文件的每个一条数据,找到当前源文件表的所有子数据,为源本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于代码数据化的源代码自动生成方法,其特征在于,包括以下步骤:获取若干个模板工程,添加模板工程的功能描述;在数据库内建立若干个语法结构存储表,每种语法结构对应一个语法结构存储表,语法结构存储表的列结构与语法结构的参量对应,语法结构存储表的列还包括语法结构ID和父语法结构ID;依次读取模板工程的语法结构,在相应的语法结构存储表中添加语句记录,获得语法结构ID,若语法结构存在父语法结构,则填写父语法结构ID;全部模板工程被添加到数据库后,完成代码的数据化;从数据库读取源文件表,查询数据库,找到新工程需要的全部源文件数据;依次递归遍历每个源文件数据,找到当前源文件数据的所有子数据;根据源文件数据及相应子数据完成源代码的复原,即完成新工程的源代码的自动生成。2.根据权利要求1所述的一种基于代码数据化的源代码自动生成方法,其特征在于,所述语法结构存储表包括源文件表、命名空间表、命名空间成员表、类声明表、语句表、表达式表、双操作数表达式表及变量声明表,所述源文件表记录模板工程包含的源文件信息,所述源文件信息包括源文件名称和模板工程名称,所述命名空间表记录模板工程包含的全部命名空间信息,所述命名空间成员表记录模板工程的多个命名成员信息,所述类声明表记录模板工程包含的类声明信息,所述语句表记录模板工程包含的语句信息,所述表达式表记录模板工程包含的表达式信息,所述双操作数表达式表记录模板工程包含的双操作数表达式信息,所述变量声明表记录模板工程使用的变量声明信息。3.根据权利要求2所述的一种基于代码数据化的源代码自动生成方法,其特征在于,在相应的语法结构存储表中添加语法结构记录的方法包括:读取模板工程的工程名称,所述工程名称包括工程文件名称和解决方案名称;遍历模板工程下的每个源文件,在源文件表中添加源文件信息,所述源文件信息包括所属的工程名称、源文件名称、源文件ID和命名空间ID;建立源文件的语法树;遍历访问语法树,执行以下步骤:读取当前访问的语法节点,判断语法节点类型;若为类声明语句,则在类声明表中添加类声明信息,所述类声明信息包括类名称、命名空间ID、类ID、前缀、后缀和所属源文件ID;若为函数声明语句,则在语句表中添加函数声明语句信息,所述函数声明语句信息包括函数类型、语法结构名称、语法结构ID和父语法结构ID;若为单操作数表达式语法结构,则在表达式表中添加表达式信息,所述表达式信息包括表达式类型、表达式ID和父语法结构ID;若为双操作数表达式语法结构,则在双操作数表达式表中添加双操作数表达式信息,所述双操作数表达式信息包括表达式类型、表达式ID、父语法结构ID和表达式名称;若为变量声明语句,则在变量声明表中添加变量声明信息,所述变量声明信息包括变量名称、变量类型、变量初值、变量ID和父语法结构ID。4.根据权利要求3所述的一种基于代码数据化的源代码自动生成方法,其特征在于,
获得类声明信息的命名...

【专利技术属性】
技术研发人员:胥会朋石钟韶徐明建王燕灵
申请(专利权)人:杭州新中大科技股份有限公司
类型:发明
国别省市:

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

1