[cfe-dev] [libclang] Parsing an empty file.

Jacob Carlborg doob at me.com
Mon Jun 11 00:23:23 PDT 2012


On 2012-06-11 02:35, Cyril Roelandt wrote:
> Hi,
>
> I've tried using libclang with the following code :
>


> I would have thought nothing would be printed, since the file is empty.
> Trying to understand this behaviour, I noticed that dumping the AST of
> empty.c gave similar results :
>
> $ clang -cc1 -ast-dump empty.c
> typedef __int128 __int128_t;
> typedef unsigned __int128 __uint128_t;
> struct __va_list_tag {
>       unsigned int gp_offset;
>       unsigned int fp_offset;
>       void *overflow_arg_area;
>       void *reg_save_area;
> };
> typedef struct __va_list_tag __va_list_tag;
> typedef __va_list_tag __builtin_va_list[1];
>
>
> Is there any way to only analyze the code that is actually written by
> the programmer ?

I don't know if there's a better way but what I do is I compare the file 
information for a declaration (or similar) with the input file. If 
they're the same I process the declaration, otherwise I just skip the 
declaration.

The C++ AIP has a function for this but there doesn't seem be one in 
libclang so I rolled my own implementation.

This is an example in pseudo code:

foreach (cursor ; topLevel)
     if (cursor.location.spelling.file == inputFile)
         process(cursor);

-- 
/Jacob Carlborg




More information about the cfe-dev mailing list