[发明专利]一种自动生成结构体解析器源代码的方法有效

专利信息
申请号: 202011301025.7 申请日: 2020-11-19
公开(公告)号: CN112328256B 公开(公告)日: 2023-04-25
发明(设计)人: 胡建伟 申请(专利权)人: 四川创智联恒科技有限公司
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 成都金英专利代理事务所(普通合伙) 51218 代理人: 袁英
地址: 610041 四川省成都市高新*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 自动 生成 结构 解析 源代码 方法
【说明书】:

本发明公开了一种自动生成结构体解析器源代码的方法,包括以下步骤:对需要进行解析的结构体进行分析并导出成员变量关系图,然后采用源代码自动生成工具加载并遍历成员变量关系图,进一步在内存中重构结构体成员变量的层级关系;最终根据内存中结构体成员变量的层级关系,自动生成其解析器源代码。本发明能适用于各种不同的编程语言,操作极为简便,可以实现完全自动化,不需要人工编写任何的代码或描述文件,可靠性强,变更成本低,操作难度低,工程实施可行性强。

技术领域

本发明涉及计算机软件领域,尤其涉及一种自动生成结构体解析器源代码的方法。

背景技术

在计算机软件领域里,我们经常会遇到需要对数据结构进行解析的情况。尤其在网络通信领域里,对数据结构的解析工作更是必不可少,而解析器源代码的开发工作量往往是巨大的。现有的解析器源代码自动生成方法普适性较差,应用场景非常有限;与此同时,现有的技术方案通常是通过字段规则描述文件来自动生成解析代码,然而编写字段规则描述文件依然是一项费时费力的工作,且描述文件通常为规模较大的文本文件,编辑的过程中非常容易出现错误。综上所述,目前所有的技术方案均不能彻底地解决结构体(高级语言中通常称为对象)解析器源代码开发工作量大且容易出错的问题。

发明内容

本发明的目的在于克服现有的解析器源代码自动生成方法存在的普适性差、应用场景受限、实现过程繁琐和输出结果不可靠的问题,提供一种自动生成结构体解析器源代码的方法。

本发明的目的是通过以下技术方案来实现的:

一种自动生成结构体解析器源代码的方法,包括以下步骤:

S1:对需要进行解析的结构体进行分析,并生成成员变量关系图;

S2:加载并遍历成员变量关系图;

S3:重构结构体成员变量的层级关系;

S4:根据成员变量的层级关系自动生成解析器源代码。

进一步的,所述S2包括以下步骤:

S201:从磁盘中加载关系图;

S202:根据语法规则解析关系图,形成关系节点;

S203:遍历所有关系节点。

进一步的,所述S3包括以下步骤:

S301:获取所有节点信息以及所有节点之间的连接关系;

S302:根据节点信息以及节点之间连接关系重构成员变量层级关系。

进一步的,所述结构体是由一组不同成员数据组成的数据类型。

进一步的,所述关系图为矢量图,并具有固定的语义规则,以便能明确地表示结构体成员变量的层级关系。

本发明的有益效果:

(1)适用于各种不同的编程语言,普适性强;

(2)操作极为简便,可以实现完全自动化,不需要人工编写任何的代码或描述文件;

(3)由于可以实现完全自动化,相比于需要人工参与的方法而言,可靠性更强,且变更成本极低;

(4)因为输入内容由代码静态分析工具产生,不限制编程语言,应用场景更加丰富;

(5)相比于其他需要编写描述文件的专利技术方案而言,本发明的方法完全不需要人工参与,操作难度更低,学习成本更低,因此实际地实施起来会更加容易。

附图说明

图1是本发明的方法流程图。

图2是本发明实施例的结构体定义示意图。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川创智联恒科技有限公司,未经四川创智联恒科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202011301025.7/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top