首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得程序的控制流图?

如何获得程序的控制流图?
EN

Stack Overflow用户
提问于 2018-08-22 14:11:09
回答 1查看 1.2K关注 0票数 1

我想得到一个代码/程序的控制流程图(无论是任何编程语言,也可以给出它的语法)。我尝试在python中使用云雀库来解析一个基本的C样例程序,我为lark提供了基本c语法的语法。因此,它给了我一个解析树的对象或类似的东西,现在我想知道该从哪里着手。

话虽如此,任何一种新的做法都受到高度赞赏。其主要目标是获得代码/程序的控制流图,考虑到所用语言的语法。

EN

回答 1

Stack Overflow用户

发布于 2018-08-22 16:05:47

因此,它给了我一个解析树的对象或类似的东西,现在我想知道该从哪里着手。

一种常见的方法是

  1. 遍历树以生成中间表示,其中所有循环结构和条件结构都替换为跳转,
  2. 将IR的指令划分为基本块,方法是在每个跳转标签之前和每次跳转之后启动一个新块
  3. 构造一个控制流图,其中基本块是节点,每个不以跳转结束的块与后面的块有一条边,而以跳转结束的每个块都与可能的跳转目标有一条边(传统条件跳转指令的跳转目标将包括以下块)。

其主要目标是获得代码/程序的控制流图,考虑到所用语言的语法。

如果你只知道一个程序的语法,你就不能得到它的CFG。您需要对该语言的语义有一定的理解,才能构建一个CFG。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51968789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档