[cfe-dev] Using libClang for parsing Source and Comments
barbara via cfe-dev
cfe-dev at lists.llvm.org
Tue Feb 23 20:27:16 PST 2016
Milian,
> Hey Barbara,
>
> see answers inline below from my experience with the Clang C-API working on
> KDevelop.
>
> On Tuesday, February 23, 2016 10:23:52 AM CET barbara via cfe-dev wrote:
>> We have not found a tutorial or any documentation addressing our
>> requirement to use libClang for parsing C++ source and full comments.
>> We are currently using libClang 3.6 for testing however moving to 3.7 is
>> possible although we would rather wait for 3.8.
>>
>> At the present time we have code to walk the AST and obtain cursors and
>> tokens for a sample C++ header. The following are the initial problems
>> we have encountered.
>>
>> 1) Locate C++ standard headers
>>
>> On Debian we did not have to pass any parameters to libClang for it to
>> locate the C++ standard header files.
>>
>> On Windows, I had to pass six include lines which referenced GCC std
>> header files. This works but it will be cumbersome for our users. We
>> talked with a few people at the last llvm meeting it was mentioned
>> there might be some enhancements for detecting the system headers.
>>
>> Do anyone have ideas or suggestion about this?
> I think this is still unresolved, but would be glad to be told otherwise.
I am hoping someone with knowledge in this area can shed some light on
this problem.
>
>> 2) We need to retrieve all the comments and using "cursors" this has
>> not worked. We can easily generate a list of the tokens and walking
>> these appear to show the comments, however this feels very awkward and
>> slow. We understand the basic idea of cursors and tokens. We are not
>> sure about the pros and cons of each approach.
> We also iterate over the tokens in KDevelop to find comments not associated
> with a cursor, such as
>
> ///FIXME this is broken
> /**
> * doxygen comment
> */
> void foo();
>
> If you only need access to the comments of cursors, i.e. the second comment
> above, you should be fine with clang_Cursor_getParsedComment and without
> tokens.
It does seem like using the tokens is the appropriate way to handle
parsing comments. Just wanted to make sure we were not missing
something obvious.
>
>> 3) Is the -Wdocumentation flag passed to clang when building. Or is
>> this flag supposed to be passed to libClang? Will this provide us with
>> more of the user comments? It appeared to to have no effect.
> You need to pass that as part of the argv to clang_parseTranslationUnit2.
>
We are using clang_parseTranslationUnit2 and the flag did not have any
effect. Is there a chance this was not supported in 3.6?
Thanks for your input.
Barbara
---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
More information about the cfe-dev
mailing list