[cfe-dev] Requesting Help Understanding ASTs and LibTooling
Jonas Devlieghere via cfe-dev
cfe-dev at lists.llvm.org
Mon Jul 11 23:48:32 PDT 2016
I can answer some of your questions:
- Does libclang get and parse the entire source file? Yes, it will
consider the whole translation unit.
- Get file location data and skip traversing includes? Use
- Get the cursor kind as string? Use clang_getCursorKindSpelling(cursor_kind)
On Tue, Jul 12, 2016 at 12:13 AM, Aryal, Saurav
<saurav.aryal at bison.howard.edu> wrote:
> I have decided to use libclang because I feel like it would suit my purpose
> more. I had run-time concerns with the python bindings but the C bindings
> are working fine.
> I still have a few more questions/concerns. Please see the README on
> https://github.com/Saurav-K-Aryal/libclang-help for details.
> The questions are also listed on the top of the file as comments.
> Any help would be appreciated.
> Thanking you.
> On Mon, Jul 11, 2016 at 1:58 AM, Mikhail Ramalho <mikhail.ramalho at gmail.com>
>> If you're interested in libTooling, you can check ESBMC , more
>> specifically our clang_c_converter .
>> We use libTooling to generate the AST and we implement our own AST
>> traverser code. Currently, it only works for C programs; in the future we'll
>> release the C++ code.
>>  https://github.com/esbmc/esbmc
>> 2016-07-08 20:57 GMT+01:00 Jonas Devlieghere via cfe-dev
>> <cfe-dev at lists.llvm.org>:
>>> On Fri, Jul 8, 2016 at 8:45 PM, Aryal, Saurav via cfe-dev
>>> <cfe-dev at lists.llvm.org> wrote:
>>> > Hi everyone,
>>> > I am just starting out with Clang and working for a project where I am
>>> > trying to generate and compare ASTs to measure code similarity.
>>> Welcome, good luck with your project!
>>> > I figured around a way using Clang to get the AST, but it turns out I
>>> > am
>>> > expected to use Libtooling.
>>> There are actually different interfaces available to interact with
>>> Clang's AST. Which one is best depends on your use case. I'd recommend
>>> looking at  to make an informed decision.
>>> > Anyone have an example where I can parse C++
>>> > code to generate an AST using Libtooling.
>>> Yes; clang's documentation  contains an excellent tutorial. There
>>> are also many blog post available that will get you started with
>>> concrete examples, including one I wrote myself when I started looking
>>> at the clang AST .
>>> > Also, would love design
>>> > suggestions regarding comparing tree similarity. any examples with
>>> > explanations would be really helpful.
>>> > Thanking you.
>>> > Sincerely,
>>> > Saurav
>>> > _______________________________________________
>>> > cfe-dev mailing list
>>> > cfe-dev at lists.llvm.org
>>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>  http://clang.llvm.org/docs/Tooling.html
>>>  http://clang.llvm.org/docs/LibTooling.html
>>>  https://jonasdevlieghere.com/understanding-the-clang-ast/)
>>> -- Jonas
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>> Mikhail Ramalho.
More information about the cfe-dev