[cfe-dev] Auto-generation of ASTMatchers predicates from source code, proof-of-concept

Evgeny Panasyuk evgeny.panasyuk at gmail.com
Sun Jun 17 10:59:01 PDT 2012


17.06.2012 19:53, Manuel Klimek wrote:
> I love the idea! In general, I think it's a really hard problem (which 
> is the main reason we haven't tackled this yet ourselves). I guess 
> it's a little more researchy, but I'd be super interested in seeing 
> more work going into making C++ tooling easier and more powerful ...
I am not sure how hard it could be in general - I saw only small part of 
Clang's ASTTree/ASTMatchers.
But in any case, it is possible to restrict tool to only small subset of 
expressions, but still making tool useful.

I see different approaches to implement such kind of tool:
1. Naive and straightforward way: just as external tool to ASTMatchers, 
same method that I used in example above. Such approach would result in 
some "knowledge" duplication, i.e. for each predicate it would be 
additional some code in predicate-generation tool.
2. More complex way, but with some "knowledge" reuse from ASTMatchers. 
That approach would require re-describing predicates with some 
higher/another abstraction, what would allow us to generate both 
predicates and predicates-generation stuff from one source of 
"knowledge". I am not sure if such approach could be done in general, 
requires some research.

> I don't know whether you're aware, but in the tooling branch there's 
> also a proof-of-concept implementation for dynamic matcher generation, 
> and it might make sense to base your stuff on that.

Are you talking about dynamic parseMatcher (as in ast-query example)?
Or maybe about some interactive (maybe gui) tool for building 
predicates? I remember that Chandler mentioned about something similar 
at http://www.youtube.com/watch?v=yuIOGfcOH0k&t=27m56s

Best Regards,
Evgeny

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120617/8dbcee51/attachment.html>


More information about the cfe-dev mailing list