跳过 If 语句中的语句
Skipping statements inside an IfStatements
我创建了一个 if(isa<IfStmt>(s))
和 if(isa<ReturnStmt>(s))
,如果找到它会打印一些东西。我创建了这个简单的 C++ 代码,它在 if 语句
中包含 return 语句
#include <stdlib.h>
int main(int argc, char** argv) {
int a = atoi(argv[1]);
if(a == 0)
return 1;
else
return 10;
return 0;
}
是否可以在 if else 语句 中 skip/ignore return 语句?
clang-query test.cpp --
match returnStmt(unless(hasAncestor(ifStmt()))
要解决此类问题,AST matcher's reference and clang's -ast-dump
parameter 是您的朋友。还有 clang-query
本身,因为它接受与 clang
的 C++ API.
几乎相同的 DSL
我创建了一个 if(isa<IfStmt>(s))
和 if(isa<ReturnStmt>(s))
,如果找到它会打印一些东西。我创建了这个简单的 C++ 代码,它在 if 语句
#include <stdlib.h>
int main(int argc, char** argv) {
int a = atoi(argv[1]);
if(a == 0)
return 1;
else
return 10;
return 0;
}
是否可以在 if else 语句 中 skip/ignore return 语句?
clang-query test.cpp --
match returnStmt(unless(hasAncestor(ifStmt()))
要解决此类问题,AST matcher's reference and clang's -ast-dump
parameter 是您的朋友。还有 clang-query
本身,因为它接受与 clang
的 C++ API.