Ich versuche Klirren zu verwenden StatementMatcher Variablen in einer verschachtelten Schleifeverschachtelte Schleifen mit Clang AST StatementMatcher findet
for(i=0;i<10;i++)
for(j=0;j<10;j++)
//I have i and j
Ich bin nicht sicher, zu finden, wenn es jede Ebene der verschachtelten Schleife mit einzelnen Matcher verarbeiten kann aber es wäre großartig, wenn es könnte.
Im Moment kann ich Schleifen mit Matcher unten finden, die nicht mehrere verschachtelte Schleife und Variablen verarbeiten können (habe dies aus llvm Beispiel). Ich schätze es, wenn jemand dabei helfen kann.
StatementMatcher LoopMatcher =
forStmt(hasLoopInit(declStmt(
hasSingleDecl(varDecl(hasInitializer(integerLiteral(equals(0))))
.bind("initVarName")))),
hasIncrement(unaryOperator(
hasOperatorName("++"),
hasUnaryOperand(declRefExpr(
to(varDecl(hasType(isInteger())).bind("incVarName")))))),
hasCondition(binaryOperator(
hasOperatorName("<"),
hasLHS(ignoringParenImpCasts(declRefExpr(
to(varDecl(hasType(isInteger())).bind("condVarName"))))),
hasRHS(expr(hasType(isInteger())))))).bind("forLoop");
ps: wenn es macht es einfacher, denn ich bin auf der Suche perfekt verschachtelte Schleifen wie oben ohne {} um innere Schleifen.