预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN113110874A(43)申请公布日2021.07.13(21)申请号202110400526.9(22)申请日2021.04.14(71)申请人北京沃东天骏信息技术有限公司地址100176北京市大兴区经济技术开发区科创十一街18号院2号楼4层A402室(72)发明人王帅董英姿王浩胡景贺颜伟鹏冯夷夷(74)专利代理机构北京英赛嘉华知识产权代理有限责任公司11204代理人王达佐马晓亚(51)Int.Cl.G06F8/75(2018.01)G06F8/41(2018.01)G06F8/30(2018.01)权利要求书1页说明书9页附图5页(54)发明名称用于生成代码结构图的方法和装置(57)摘要本公开的实施例公开了用于生成代码结构图的方法和装置。该方法的具体实施方式包括:通过词法解释器将源代码分割成至少一个词法单元,得到词法单元流;通过语法解释器扫描词法单元流,得到产生式;通过识别函数对产生式进行解析,识别出代码中的类、方法定义和方法调用,生成抽象语法树;通过代码转换器将抽象语法树的节点信息转换成描述图形语言的图形代码;通过图像生成器基于图形代码生成代码结构图。该实施方式既能保证生成的语法树节点完整性,同时又能够保证导出的代码结构准确性。CN113110874ACN113110874A权利要求书1/1页1.一种用于生成代码结构图的方法,包括:通过词法解释器将源代码分割成至少一个词法单元,得到词法单元流;通过语法解释器扫描所述词法单元流,得到产生式;通过识别函数对所述产生式进行解析,识别出所述源代码中的类、方法定义和方法调用,生成抽象语法树;通过代码转换器将所述抽象语法树的节点信息转换成描述图形语言的图形代码;通过图像生成器基于所述图形代码生成代码结构图。2.根据权利要求1所述的方法,其中,所述方法还包括:根据预设的匹配函数从所述抽象语法树中查找目标节点。3.根据权利要求2所述的方法,其中,所述方法还包括:将目标节点绑定到指定名称上。4.根据权利要求2所述的方法,其中,所述方法还包括:将所述目标节点的节点信息转换成描述图形语言的目标图形代码;基于所述目标图形代码生成目标节点的代码结构图。5.根据权利要求1所述的方法,其中,所述词法解释器包括标记结构体和标记枚举类型。6.根据权利要求2所述的方法,其中,所述匹配函数具备以下至少一种功能:匹配特定类型节点,用于缩小匹配范围,以当前匹配的节点作为起点用来限定匹配表达式查找范围。7.根据权利要求1‑6中任一项所述的方法,其中,所述方法还包括:基于所述词法解释器、所述语法解释器、所述识别函数、所述源代码转换器和所述图像生成器生成插件;将所述插件动态加载到编译器中。8.一种用于生成代码结构图的装置,包括:词法分析单元,被配置成通过词法解释器将源代码分割成至少一个词法单元,得到词法单元流;语法分析单元,被配置成通过语法解释器扫描所述词法单元流,得到产生式;解析单元,被配置成通过识别函数对所述产生式进行解析,识别出所述源代码中的类、方法定义和方法调用,生成抽象语法树;转换单元,被配置成通过代码转换器将所述抽象语法树的节点信息转换成描述图形语言的图形代码;生成单元,被配置成通过图像生成器基于所述图形代码生成代码结构图。9.一种用于生成代码结构图的电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1‑7中任一项所述的方法。10.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1‑7中任一项所述的方法。2CN113110874A说明书1/9页用于生成代码结构图的方法和装置技术领域[0001]本公开的实施例涉及计算机技术领域,具体涉及用于生成代码结构图的方法和装置。背景技术[0002]在日常开发过程中经常需要阅读学习其他人的代码,面对动辄数千行的代码文件,往往需要花很长时间才能理清代码结构。如果我们能自动生成源码中的代码结构图,对理解代码的逻辑肯定会有帮助。[0003]如果只分析一个工程中的单个代码文件时,由于引入其他类的定义无法得知,导致生成的语法树节点缺失,对最终的结果会有不少影响,这个问题导致基本无法用在实际工程中,只能用来分析一些比较独立的开源代码。发明内容[0004]本公开的实施例提出了用于生成代码结构图的方法和装置。[0005]第一方面,本公开的实施例提供了一种用于生成代码结构图的方法,包括:通过词法解释器将源代码分割成至少一个词法单元,得到词法单元流;通过语法解释器扫描所述词法单元流,得到产生式;通过识别函数对所述产生式进行解析,识别出所述源代码中的类、方法定义和方法调用,生