发布网友 发布时间:2022-04-23 05:53
共2个回答
热心网友 时间:2022-04-10 14:38
1,你可以尝试一下llvm,苹果公司支持的开源编译器项目,它可以将程序解析成基本块的关系图;首先llvm做的事情要比你要求的多很多,程序会被解释成一个模块,每个模块包含若干个函数function,function内部将代码分成一个一个基本块,基本块是一个编译原理的术语,你可以查一下相关定义。其次,高级语言程序要被解释成一种中间表达,这种中间表达可以描述一种图叫做有向无环图,你所需要的调用关系图是这个有向无环图中的一个子图。追答只是算法的话,和MFC没有关系。。。,只有图形化输出用MFC,用C++的标准库就可以了,llvm里面有很多数据结构,定义的很好,用来表达图,你可以参考下。另外,有向无环图的实现有比较多的范例,这个就不用我给你找了吧。。。,追加一点:因为看你说都你解析代码估计问题不大,这里的解析,我不知道你指的到哪一层,因为按照编译原理,首先是词法解析,然后文法解析,如果你已经过了文法解析这一步,那么应该可以建立语义树,如果你只关系函数调用关系,语义树可以忽略掉文法解析传过来的绝大多数信息,只保留函数调用的文法规则返回回来的信息;由语义树到有向无环图只是一个数据结构创建的过程。
热心网友 时间:2022-04-10 15:56
您好,我最近也在看这方面的知识,想要获得c源代码的函数调用关系图,看到您提的问题,不知道您现在解决了吗,可否指导下,谢谢