2010-06-02 211 views
2

是否有任何解析C++源代码的库可以让我们说,调用图,类继承树,流控制,类成员列表或任何可以在代码中使用的图或结构(不在图表中)。C++代码解析器/处理器库

,使其更清晰,假设生成调用图图像,会有一个过程是这样的:

`

C++ source -> parser -> intermediate structure -> renderer -> call graph image 
            ^
            | 
           [i need this] 

`

回答

3

这取决于你想要解析的准确程度。如果你想要它是绝对准确的(即不应该错过一个类,因为它过于复杂的宏或模板元编程,它无法处理),那么你需要一个适当的C++前端为此,我不知道任何既自由又易于重用的。

如果你愿意付出,那么至少有两个选项:

EDG是用来驱动智能感知在VC++ 2010,这是非常令人印象深刻的,并且看起来非常准确 - 根据我的经验,它正确地处理了多态Boost.Lambda的完成(并不令人惊讶,因为它也驱动EDG C++编译器,显然必须得到正确的输入)。

我对Semantic Design前端或其用户了解不多,但Ira Baxter来自StackOverflow,所以我会让他提供有关其产品的更多信息。

如果你想自由但不完美,那么也许GCC_XML已经足够你。

+0

GCC_XML只提供声明信息。它没有提供关于代码的信息,所以你不能用它来生成调用图。 – 2010-06-03 10:43:06

+1

请参阅http://semanticdesigns.com/Products/DMS/FlowAnalysis.html,了解一般情况下DMS可用的流分析和调用图信息。我们还没有为C++提供这些信息,尽管我们为C做了所有这些。C++前端*解析,构建AST并构建完整的符号表。 – 2010-06-03 10:48:31

0
  1. 有GCC的内部。它有点像图书馆一样。
  2. 有一些Eclipse CDE包可以很好地解析C++,这对于IDE来说可能还可能不够好。
2

LLVM图书馆家族可能是您最好的选择。尽管如此,最后我检查了对C++的支持还没有完成。