【问题标题】:Do you know any of C/C++ parsers which are capable of name and overload resolution?您知道任何能够进行名称和重载解析的 C/C++ 解析器吗?
【发布时间】:2011-07-25 05:00:17
【问题描述】:

我需要一种能够执行命名和重载解析以及宏扩展的 C/C++ 语言(不是 GCC,而是 Microsoft Visual C++)解析器。现在我用的是Understand,但它的bug太多,不能提供我需要的所有功能。

【问题讨论】:

  • 您到底在寻找什么? C/C++解析器有很多,为什么GCC还不够好?
  • 如果我理解正确,您希望 Visual Studio 插件在 GUI 中静态分析您的代码,而不是像 clang 这样的通用 C/C++ 解析库。正确的?另外,这是你提到的Understand 吗?
  • Gazelle 是一个相对较新的解析器系统。
  • @GMan:它真的可以用来解析 C++ 吗? (从链接页面的顶部,它说它是“用于解析上下文无关语法”;C++ 语法显然不是上下文无关的。)
  • @James:嗯,我很确定有关 Gazelle 的信息是错误的。我今天早些时候被链接到 Gazelle 的另一个页面,该页面说它也具有解析上下文相关语法的机制,甚至计划添加脚本以进行通用消歧回调。

标签: c++ c parsing naming


【解决方案1】:

你不能让一个解析器同时处理 C 和 C++。它们是具有不同语法和语义的不同语言。您可以为每个获取单独的解析器。

请参阅我们的 C Front EndC++ Front End。它们都处理各种方言(GCC 和 MS),构建 AST,构建完整的符号表。有一个预处理器模块可以执行完全扩展,或者在您的控制下仅扩展某些条件和宏。

C 前端还具有控制流、数据流、指向和调用图构造。与没有真正进行深度流分析的理解不同,C 前端将正确地获取间接函数调用的目标(在保守假设内)。

C++ 前端处理完整的 C++0X 语言。我们正在为它完成控制流图的构建。

底层引擎DMS Software Reengineering Toolkit 提供对所有这些信息的自定义访问。它不提供像理解这样的漂亮图片;它旨在让您构建自定义分析和程序转换工具。

【讨论】:

    猜你喜欢
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多