gpt4 book ai didi

c++ - Vera++ 规则实现

转载 作者:行者123 更新时间:2023-11-30 02:58:47 26 4
gpt4 key购买 nike

如果有人了解 Vera++ 或静态分析器,请通过。

如何将复杂的 C++ 规则验证机实现为静态分析器?我想实现复杂的规则,比如基类中的虚函数,识别用户定义的变量,比如类、结构等。变量范围,比如全局、局部、静态等。我非常理解 Vera++,据我所知,它只做 token 解析,语言的上下文需要通过脚本来实现(如果语言是 C++,实现的上下文可能会太复杂);因为区分 a * b; (可以是类类型 a 的指针 b)或 a *b;(可以简单地是两个 in 变量之间的乘法);

我什至觉得复杂规则的实现可能需要一些像状态机这样的编译器,这样脚本才能理解语言的上下文。

我的问题只是想问:

  1. 我对静态分析器规则实现的理解是否正确。

  2. 能否请您指导我如何继续完成这项任务。

  3. 这些任务可以通过 tcl 的 REGEXP 来简化吗?

  4. 对于良好实现 Solid C++ 代码分析器,您是否可以建议任何特定的设计方法。

最佳答案

我建议改用成熟的 C++ 解析器。

Clang是一套完全理解 C++ 的库,因为您可以用于分析的库正是编译器使用的库(谈论狗食)。您可以访问多个“层”:抽象语法树、控制流图。并且已经有一个静态分析器框架,您可以为其实现传递。

最后,也许是最有趣的事情是,您可以从 C++ 或 C 进行交互,并且在 C 接口(interface)之上甚至还有 Python 绑定(bind)(尽管明显不完整)。

老实说,考虑到 C++ 语法的复杂性,如今只有一个受虐狂才能使用真正的语义解析器之外的任何东西。

其他解析器(由 Ira Baxter 提供)包括:

  • Elsa (开源)
  • DMS (商业)
  • EDG (商业,用于实现编译器的 C++ 前端)

关于c++ - Vera++ 规则实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13488903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com