如何在运行时C++表达式类型
How to figure C++ expression type on runtime?
我需要编写一个C++代码覆盖程序,该程序接受另一个C++程序(在文件中给出),并在其每个语句中增强或添加对增加计数器的函数的调用。但是,我需要为每种类型的表达式使用不同的计数器(即我需要计算每种类型有多少个表达式)。为此,我需要计算每个C++表达式的类型。IMO 我需要使用解析器 API 来解析每一行以获取其类型。您看到更好的解决方案了吗?否则,在哪里可以找到解析 API?
谢谢
"解析器"API 不会给你类型信息。 它充其量只能让您访问 AST。
您需要一个完整的C++前端,它可以解析C++代码,执行名称和类型解析,并且可以从字面上计算每个表达式的类型。 最重要的是,您需要插入所需的检测,然后吐出可编译的源代码。
我们的DMS软件再造工具包及其C++前端具有执行此操作所需的所有功能。
DMS已被用于为C++(和许多其他语言)构建测试覆盖率和分析器工具;您甚至可以下载并尝试一个以查看它们是什么样子的。 您可能会发现这篇关于使用 DMS 构建测试覆盖率工具的论文很有趣,作为您想要做的事情的基线。 您的变体需要类型推断,但除此之外并没有太大区别。
相关文章:
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 表观调用前面的表达式必须具有指向 func 类型的指针
- 数组类型 int[n][n] 不可赋值,因为表达式必须具有常量值
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- C++ 编译错误:意外的类型名称"字符串":预期的表达式
- 表达式必须具有类类型 vs.
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 非类类型表达式的静态类型与动态类型之间的差异
- 如何确定涉及 C++ 中除法的算术表达式的数据类型
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- 为什么C++中的表达式类型在不同版本之间会发生变化
- C++中的可视化 Decltype 表达式类型推导
- ExprTK 未知变量分辨率取决于表达式类型
- 如何在运行时C++表达式类型
- 预期 不允许使用表达式/类型名称