比较clang AST解析器中的构造

时间:2013-10-02 17:26:22

标签: clang abstract-syntax-tree

在示例代码中解析Clang中的ASTVisitor时,我看到有构造来验证语句,例如。

isa<IfStmt>(statement) 
isa<UnaryOperator>(Expression)

是否有用于评估当前表达式/语句的此类构造的完整列表。

由于

1 个答案:

答案 0 :(得分:2)

首先,isa没有什么神奇之处,这只是LLVM检查对象是否是某个类的子类型的方式;表达式isa<IfStmt>(statement)基本上等同于这个启用RTTI的表达式:

dynamic_cast<IfStmt*>(statement) != NULL

所以你的问题实际上归结为AST层次结构是什么;为此,最好使用完整的层次结构图检查这四页: