Hi,
I am using RecursiveASTVisitor class from clang.
I have following code in an overridden method VisitBinaryOperator(BinaryOperator *E):
Expr* lhs = E->getLHS();
Expr* rhs = E->getRHS();
I want to get type and variable name from expression lhs and rhs.
Say I have Stmt x = 10;, then I want to get identifier x from lhs and 10 from rhs.
If I have Stmt x = x + 10; then I want to get identifier x from lhs and x + 10 as sub expression from rhs
How this can be done using clang API? Any pointer is welcome.
- Rajendra
Try dumping the AST (if you're in a debugger just "p lhs->dump()", if
not, you can use the clang command line argument to dump ASTs (I
forget the exact name of it)) to see what it looks like, then write
code to walk it - probably dyn_casting the lhs to DeclRefExpr then
asking that for its name and dyn_casting the rhs to an IntegerLiteral
(or it could be something else, I forget the exact AST node names).
Also - try looking at existing code for this sort of thing. There's
lots of Clang diagnostics that care about certain values/types in
certain expressions, if you go & look at how those diagnostics are
implemented you shuold get a feel for how to walk the AST to achieve
your goals.