【发布时间】:2015-08-12 15:27:45
【问题描述】:
给定一个类层次结构:
class A {};
class B {};
class C : public A {};
class D : public C {};
我正在尝试重构 C 类以从 B 类而不是 A 类继承。我可以使用 recordDecl 轻松获得定义语句:
recordDecl(hasName("C"), isDefinition()).bind("MyClass")
通过关联的 MatchCallback,我可以dump() 类来验证它是否匹配正确的节点。但是我还没有找到一种方法来绑定到public A,或者更好的是,只是A。
什么是合适的 AST 匹配器来捕获 C 类的 public A 或 A?
编辑:
clang -ast-dump 在这种情况下过滤为 C 类的输出将显示类似于以下内容:
CXXRecordDecl [address] <line numbers> <loc> class C definition
|- public 'class A'
|- CXXRecordDecl [address 2] <columns> <loc> implicit referenced class C
好像在 ast-dump 中没有 AST Node 类型来表示父类声明。
【问题讨论】:
标签: clang abstract-syntax-tree llvm-clang