<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Careful with this; the body of a for-statement is also within the for statement:</div><div><br></div><div>for (int i = 0; i < 10; ++i) {</div><div>  ++i, --i;</div><div>}</div><div><br></div><div>Not familiar with the RecursiveASTVisitor traversal, so I can't tell you exactly how to do it. Maybe you already got this correct.</div><div><br></div><div>Jordan</div><div><br></div><br><div><div>On Jan 8, 2013, at 0:10 , kevinlynx <<a href="mailto:kevinlynx@gmail.com">kevinlynx@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Thanks, I use TraverseForStmt to solve this problem. And this makes me know TraverseXXX methods better. <br><div><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "Philip Craig"<<a href="mailto:philipjcraig@gmail.com">philipjcraig@gmail.com</a>>;</div><div><b>Date: </b> Tue, Jan 8, 2013 03:47 PM</div><div><b>To: </b> "kevinlynx"<<a href="mailto:kevinlynx@gmail.com">kevinlynx@gmail.com</a>>; <wbr></div><div><b>Cc: </b> "cfe-dev"<<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a>>; <wbr></div><div><b>Subject: </b> Re: [cfe-dev] check an AST node's parent node ?</div></div><div><br></div>On 8 January 2013 16:48, kevinlynx <<a href="mailto:kevinlynx@gmail.com">kevinlynx@gmail.com</a>> wrote:<br>> In my coding standard checking tool, it limits comma expression usage,<br>> except in a for statment, i.e:<br>><br>>     x++, x+=1; // this will be marked as invalid usage<br>>     for (x = 0, y = 0; ...) // but this comma expression is valid<br>><br>> I can implement `VisitBinComma`, this function will be called when parsed<br>> comma expression. But how to know if this comma expression is in a for<br>> statment ?<br><br>The simplest way is to implement TraverseForStmt, and set a flag to<br>indicate you are within a for statement.<br><br>Another option may be to use a ParentMap<br>(<a href="http://clang.llvm.org/doxygen/classclang_1_1ParentMap.html">http://clang.llvm.org/doxygen/classclang_1_1ParentMap.html</a>). I<br>haven't experimented with it yet though.<br><br>><br>> Thanks.<br>><br>><br>> _______________________________________________<br>> cfe-dev mailing list<br>> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>><br></div>_______________________________________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev<br></blockquote></div><br></body></html>