(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202211092259.4
(22)申请日 2022.09.08
(65)同一申请的已公布的文献号
申请公布号 CN 115167834 A
(43)申请公布日 2022.10.11
(73)专利权人 杭州新中大 科技股份有限公司
地址 310000 浙江省杭州市拱 墅区候圣街
99号财智顺丰创新中心1幢428室
(72)发明人 胥会朋 石钟韶 徐明建 王燕灵
(74)专利代理 机构 浙江千克知识产权代理有限
公司 33246
专利代理师 汪丹琪
(51)Int.Cl.
G06F 8/30(2018.01)
G06F 8/33(2018.01)
G06F 16/22(2019.01)
G06F 16/25(2019.01)
(56)对比文件
CN 101650651 A,2010.02.17CN 101017458 A,20 07.08.15
CN 10439173 0 A,2015.0 3.04
CN 112925563 A,2021.0 6.08
CN 101826 014 A,2010.09.08
US 2018373 507 A1,2018.12.27
CN 101826 014 A,2010.09.08
CN 10148 8086 A,20 09.07.22
CN 112860248 A,2021.0 5.28
CN 109739526 A,2019.0 5.10
US 2006253273 A1,20 06.11.09
US 2021096832 A1,2021.04.01
JP 20132576 39 A,2013.12.26
JP 20162010 09 A,2016.12.01
富彧.一个源代码自动生成工具的设计与实
现. 《电脑知识与技 术》 .2007,第2007年卷(第17
期),第1321-132 2页.
黄丽韶.基 于语法结构的源代码搜索的研
究. 《电脑与电信》 .2013,(第0 5期),
审查员 李江
(54)发明名称
一种基于代码数据化的源代码自动生成方
法及装置
(57)摘要
本发明涉及一种基于代码数据化的源代码
自动生成方法及装置, 包括以下步骤: 在数据库
内建立若干个语 法结构存储表, 语 法结构存储表
的列还包括语法结构ID和父级语法结构ID; 依次
读取模板工程的语 法结构, 在相应语 法结构存储
表中添加语句记录, 获得语法结构ID, 若存在父
语法结构, 则填写父语法结构ID; 全部模板工程
被添加到 数据库完成代码数据化; 找到相应模板
工程; 从数据库读取源文件表, 找到源文件数据
的全部子 数据; 依次递归遍历 源文件的每个一条
数据, 找到当前源文件表的所有子数据, 完成源
代码的复原。 本发明的有益技术效果包括: 使得
代码能够以多种数据处理方法进行处理, 提高了代码的开发效率, 促进软件技 术的发展。
权利要求书2页 说明书16页 附图4页
CN 115167834 B
2022.12.23
CN 115167834 B
1.一种基于代码数据化的源代码自动生成方法, 其特 征在于, 包括以下步骤:
获取若干个模板 工程, 添加模板 工程的功能描述;
在数据库内建立若干个语法结构存储表, 每种语法结构对应一个语法结构存储表, 语
法结构存储表的列结构与语法结构的参量对应, 语法结构存储表的列还包括语法结构ID和
父语法结构ID;
依次读取模板工程的语法结构, 在相应的语法结构存储表中添加语句记录, 获得语法
结构ID, 若语法结构存在父语法结构, 则填写父语法结构ID;
全部模板 工程被添加到数据库后, 完成代码的数据化;
从数据库读取源文件表, 查询数据库, 找到新工程需要的全部源文件数据;
依次递归遍历每 个源文件数据, 找到当前源文件数据的所有子数据;
根据源文件数据及相应子数据完成源代码的复原, 即完成新工程的源代码的自动生
成;
所述语法结构存储表包括源文件表、 命名空间表、 命名空间成员表、 类声明表、 语句表、
表达式表、 双操作数表达式表及变量声明表, 所述源文件表记录模板工程包含的源文件信
息, 所述源文件信息包括源文件名称和模板工程名称, 所述命名空间表记录模板工程包含
的全部命名空间信息, 所述命名空间成员表记录模板工程的多个命名成员信息, 所述类声
明表记录模板工程包含的类声明信息, 所述语句表记录模板工程包含的语句信息, 所述表
达式表记录模板工程包含的表达式信息, 所述双操作数表达式表记录模板工程包含的双操
作数表达式信息, 所述变量声明表 记录模板 工程使用的变量声明信息;
在相应的语法结构存 储表中添加语法结构记录的方法包括:
读取模板 工程的工程名称, 所述工程名称包括工程文件名称和解决方案名称;
遍历模板工程下的每个源文件, 在源文件表中添加源文件信息, 所述源文件信息包括
所属的工程名称、 源文件名称、 源文件ID和命名空间ID;
建立源文件的语法树;
遍历访问语法树, 执 行以下步骤:
读取当前访问的语法节点, 判断语法节点类型;
若为类声明语句, 则在类声明表中添加类声明信息, 所述类声明信 息包括类名称、 命名
空间ID、 类ID、 前缀、 后缀和所属源文件ID;
若为函数声明语句, 则在语句表中添加函数声明语句信息, 所述函数声明语句信息包
括函数类型、 语法结构名称、 语法结构ID和父语法结构ID;
若为单操作数表达式语法结构, 则在表达式表中添加表达式信息, 所述表达式信息包
括表达式类型、 表达式ID和父语法结构ID;
若为双操作数表达式语法结构, 则在双操作数表达式表中添加双操作数表达式信息,
所述双操作数表达式信息包括表达式类型、 表达式ID、 父语法结构ID和表达式名称;
若为变量声明语句, 则在变量声明表中添加变量声明信息, 所述变量声明信息包括变
量名称、 变量类型、 变量初值、 变量 ID、 父语法结构ID和命名空间ID;
复原源文件的源代码的方法包括:
根据新工程的功能需求, 找到对应的模板工程, 根据对应的模板工程名称, 查询数据
库, 获得匹配的全部源文件信息及相应的源文件ID;权 利 要 求 书 1/2 页
2
CN 115167834 B
2从数据库读取源文件表, 查询数据库, 找到新工程需要的全部源文件数据;
依次递归遍历每 个源文件数据, 找到当前源文件数据的所有子数据;
为源文件数据及子数据建设树形结构, 根据每一种树形结构的序列化文件生成语句代
码;
根据相应子数据将子数据及对应变量填入所述语句代码中, 将完成子数据的源代码的
复原;
全部子数据完成源代码的复原, 即完成新工程的源代码的自动生成。
2.根据权利要求1所述的一种基于代码数据化的源代码自动生成方法, 其特 征在于,
获得类声明信息的命名空间ID的方法包括: 获得类使用的命名空间名, 在命名空间表
中查询对应命名空间的命名空间ID, 若不存在对应的命名空间, 则在命名空间表中添加所
述的命名空间, 获得对应的命名空间ID。
3.根据权利要求1或2所述的一种基于代码数据化的源代码自动生成方法, 其特征在
于,
建立源文件的语法树后, 访问语法树 根节点, 生成命名空间成员对象;
在遍历语法树时, 当遍历到类声明语法结构时, 建立临时表, 记录类ID和类使用的命名
空间ID;
遍历语法树后, 根据临时表, 更新命名空间成员表, 在命名空间成员表中添加所述命名
空间成员对象的命名空间成员信息, 所述命名空间成员信息包括命名空间ID、 类ID和源文
件ID。
4.一种基于代码数据化的源代码自动生成装置, 执行如权利要求1至3任一项所述的一
种基于代码数据化的源代码自动生成方法, 其特 征在于,
包括模板工程输入模块、 代码数据化模块、 新工程建立模块和代码复原模块, 所述模板
工程输入模块接收若干个模板工程及相应的功能描述, 所述代码数据化模块在数据库内建
立若干个语法结构存储表, 将模板工程的源代码存储在关系 型数据库内, 所述新工程建立
模块根据用户提交的新工程名称和选择 的模板工程名称, 建立新的工程, 并将对应的模板
工程名称转 发给代码复原模块, 所述代码复原模块从关系型数据库内读取并复原对应的模
板工程名称的源代码。
5.根据权利要求 4所述的一种基于代码数据化的源代码自动生成装置, 其特 征在于,
所述代码数据化模块将模板工程的源代码存储在关系型数据库内时, 执行以下步骤:
在数据库内建立若干个语法结构存储表, 每种语法结构对应一个语法结构存储表; 语法结
构存储表的列结构与语法结构的参量对应, 语法结构存储表的列还包括语法结构ID和父语
法结构ID, 依次读取模板工程的语法结构, 在相应的语法结构存储表中添加语法结构记录,
获得语法结构ID, 若语法结构存在父语法结构, 则填写 父语法结构ID; 全部模板工程被添加
到数据库后, 完成代码的数据化; 根据新工程的功能需求, 找到相应的源文件数据表, 查询
数据库, 依次递归遍历源文件的每个一条数据, 找到 当前源文件表的所有子数据, 为源文件
数据及子数据建设树形结构, 利用每一种树结构的序列化文件完成源代码的复原, 即完成
新工程的源代码的自动生成。权 利 要 求 书 2/2 页
3
CN 115167834 B
3
专利 一种基于代码数据化的源代码自动生成方法及装置
文档预览
中文文档
23 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共23页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 16:59:34上传分享