我正在阅读解析器和解析器生成器,并在维基百科的LR解析页面中找到了这个语句:
可以使用LR解析器的一些变体来解析许多编程语言.一个值得注意的例外是C++.
为什么会这样?C++的哪个特定属性导致无法使用LR解析器进行解析?
使用谷歌,我只发现C可以用LR(1)完美解析,但C++需要LR(∞).
我正在寻找用 C++ 编写的源代码的控制流图生成器。您知道任何开源静态生成器吗?
我想在我的毕业项目中使用它来生成控制流图并突出显示在分析应用程序执行期间已执行的路径。
我已经编写了整个引擎来记录执行的行。
感谢您的所有回答。
使用clang和graphviz,我可以生成一些C/C++代码的调用图,如本答案中所述.
现在我需要一个在非常大的代码库(大部分是C)上计算的数据流图,这个代码库是一个cmake用作构建工具的软件.
所以我的问题是,鉴于数据结构的名称,我如何使用/实现这种结构来检索函数和文件的名称?
Libtool对于clang项目中的一些数据流挖掘算法有一些稀疏的引用(甚至不确定它是否稳定或正在开发中),但我发现clang它本身没有scan-build.
我如何能够生成这条信息?我真的需要这个,给定一个名称我想要检索代码中使用的位置,几乎我所评论的所有静态分析工具都集中在函数和方法上,我需要检查数据结构的用法clang.
编辑:
我也在考虑使用doxygen作为文档,所以如果doxygen的xml输出对某些工具有用,我可以使用它.