基于源代码抽象语法树构建函数控制流程图的方法及系统技术方案

技术编号:41420914 阅读:14 留言:0更新日期:2024-05-28 20:21
本发明专利技术公开一种基于源代码抽象语法树构建函数控制流程图的方法及系统,该方法包括:将目标源代码转换成抽象语法树,获取待处理函数的节点;提供一解析方法,用于对抽象语法树中的执行语句进行遍历,将顺序执行的若干基本语句的集合定义为一般基本块,将由若干基本语句嵌套而成的可独立形成一控制流的复合语句单元定义为图基本块;通过解析方法对函数的执行语句进行处理,以获得函数中的一般基本块,当函数中出现图基本块时,通过解析方法对该图基本块以及每次遍历出现的下一层级的图基本块进行处理,直至将函数的执行语句全部解析为一般基本块;基于获得的若干一般基本块构建函数的控制流程图。基于该方法可构建得出完整的控制流程图。

【技术实现步骤摘要】

本专利技术涉及函数的控制流程图的构建,尤其涉及基于源代码抽象语法树构建函数控制流程图的方法及系统


技术介绍

1、抽象语法树(abstract syntax tree,ast),是源代码语法结构的一种抽象表示。它以树状的形式表现函数的语法结构,树上的每个节点都表示源代码函数中的一种结构。抽象语法树可以帮助编译器理解和分析程序的语法结构,从而进行代码生成、优化和重构等工作。

2、控制流程图(control flow graph,cfg)是一个过程或程序的抽象表现,它以图形方式来表示程序执行过程中所有可能的控制流路径。没有任何跳跃或跳跃目标的直线代码块则被定义为一个基本块,在控制流程图中,每个节点代表一个基本块,跳跃目标以一个基本块为开始,到另一个基本块结束。控制流程图是编译器优化和静态分析的重要工具。

3、利用源代码所转换而来的抽象语法树可构建形成源代码中函数的控制流程图,其好处在于可以直接通过解析程序源代码生成控制流程图,而不需要进行中间表示结构的转换,还可以保留源代码原有的语法结构信息,方便后续的编译器优化和分析。但是,这种构建方本文档来自技高网...

【技术保护点】

1.一种基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,包括:

2.根据权利要求1所述的基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,对所述抽象语法树中的所述执行语句的遍历基于广度优先遍历原则。

3.根据权利要求1所述的基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,所述一般基本块包括一条入口语句和一条出口语句;

4.根据权利要求1所述的基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,将任一所述图基本块中的若干所述一般基本块并入所述函数的控制流时,将该所述图基本块形成的子控制流中的首个所述一般基本块与所述图基本...

【技术特征摘要】

1.一种基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,包括:

2.根据权利要求1所述的基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,对所述抽象语法树中的所述执行语句的遍历基于广度优先遍历原则。

3.根据权利要求1所述的基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,所述一般基本块包括一条入口语句和一条出口语句;

4.根据权利要求1所述的基于源代码抽象语法树构建函数控制流程图的方法,其特征在于,将任一所述图基本块中的若干所述一般基本块并入所述函数的控制流时,将该所述图基本块形成的子控制流中的首个所述一般基本块与所述图基本块的用作前驱结点的所述一般基本块衔接,将该所述图基本块形成的所述子控制流中的最末一个所述一般基本块与该所述图基本块的用作后继节点的所述一般基本块衔接。

5.一种构建函数控制流程图的系统,其特征在于,包括:

<...

【专利技术属性】
技术研发人员:陆庆尚万振华王颉徐瑞祝
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

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

1