<div dir="ltr">Hi all,<div><br></div><div>I've been using clang as a frontend for a while now, through libtooling, in a BMC tool. However, I've been having some hard time trying to get some annotations from the code, does anyone knows how I can do it? </div><div><div><div><br></div><div>I want to be able to get the AST from a program like:</div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>int main() </div><div>{</div><div>  unsigned int i = 0;</div><div>  int a[10] = {0};</div><div><br></div><div>  /// bar</div><div>  _Pragma("foo")</div><div>  #pragma comment(user, "foobar")</div><div>  a[i - 1] = 3; </div><div>} </div></blockquote><div><div><br></div><div>and have access to "bar", "foo" or "foobar", before or when parsing the assignment. Those are some failing attempts.</div></div></div><div><br></div><div>Basically, we have some other tools that do source to source transformation of C programs and we would like to add extra information to the new source, to be able to better reason about them. </div><div><div><br></div><div>I've tried a number of things so far:</div><div><br></div><div>1. Use doxygen style comments: I think it's the best solution, but the AST nodes (FullComment, etc) are only generated for declarations (Maybe I'm missing a flag?).</div><div><br></div><div>2. Use _Pragma("x y z"): it prints a message but no new AST node is generated.</div><div><br></div><div>3. Use the [[attr]] syntax: C++ only and I don't think it supports custom attributes.</div><div><br></div><div>4. Use #pragma comment(user, "foo") + -fms-extensions: with this I'm able to generate any comment I want but the AST node (PragmaCommentDecl) is always a child of the translation unit. I know I could get the location using the source_manager but it would be a huge pain to insert it in the correct position once it's converted to our internal AST.</div><div><br></div><div>Does anyone else have an idea how it can be done? </div></div><div><div><br></div><div>Thank you,</div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><br></div><div>Mikhail Ramalho.</div></div></div>
</div></div>