[cfe-dev] RFC: Easier AST Matching by Default

Artem Dergachev via cfe-dev cfe-dev at lists.llvm.org
Fri Dec 20 14:48:54 PST 2019


A stable parse/syntax tree (even if not a particularly great one) and a 
stable matcher API could allow the major breakthrough of allowing 
ourselves to encourage ordinary developers (not compiler engineers) to 
write their own tools (simple static analyses or transformations). I'm 
very excited to see a movement in this direction.

On 12/20/19 2:02 PM, Gábor Horváth via cfe-dev wrote:
> Hi!
>
> I like the idea of making writing tools/prototypes easier. But if the 
> goal is to get rid of invisible nodes when matching I wonder if this 
> would somewhat overlap with syntax trees [1]. Adding Dmitri and Ilya 
> in case they have an opinion on that.
>
> Cheers,
> Gabor
>
> [1]: 
> https://docs.google.com/document/d/161XftOcF-ut1pGQr5ci9kXd_y0jRQl3y9sVyvuEkLDc/edit#heading=h.cwnlr9q7jmlp
>
> On Fri, Dec 20, 2019 at 1:06 PM Aaron Ballman via cfe-dev 
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>
>     On Fri, Dec 20, 2019 at 4:01 PM Stephen Kelly via cfe-dev
>     <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>     >
>     >
>     > Hi,
>     >
>     > (Apologies if you receive this twice. GMail classified the first
>     one as
>     > spam)
>     >
>     > Aaron Ballman and I met by chance in Belfast and we discussed a way
>     > forward towards making AST Matchers easier to use, particularly
>     for C++
>     > developers who are not familiar with the details of the Clang AST.
>     >
>     > For those unaware, I expanded on this in the EuroLLVM conference
>     this
>     > year, and then expanded on it at ACCU:
>     >
>     > https://steveire.wordpress.com/2019/04/30/the-future-of-ast-matching
>     >
>     > One step in the process of getting there is changing the default
>     > behavior of AST Matchers to ignore invisible nodes while
>     matching using
>     > the C++ API, and while matching and dumping AST nodes in
>     clang-query.
>     >
>     > I think this is the most important change in the entire proposal
>     as it
>     > sets out the intention of making the AST Matchers easier to use
>     for C++
>     > developers who are not already familiar with Clang APIs.
>     >
>     > To that end, I've written an AST to motivate the change:
>     >
>     >
>     >
>     https://docs.google.com/document/d/17Z6gAwwc3HoRXvsy0OdwU0X5MFQEuiGeSu3i6ICOB90
>     >
>     > We're looking for feedback before pressing forward with the
>     change. I
>     > already have some patches written to port clang-tidy and unit
>     tests to
>     > account for the change of default.
>
>     I'm generally in favor of this path forward. I think this is the
>     correct default and allows a more gentle introduction to AST matchers
>     for people new to the project (which helps with introducing new
>     clang-tidy checks) while still allowing people who need to get into
>     the nitty gritty details of the AST to do so as needed. Thank you for
>     the efforts!
>
>     CCing Manual, Alex, and Sam because they do a lot of work on the
>     matcher interfaces as well.
>
>     ~Aaron
>
>     >
>     > Thanks,
>     >
>     > Stephen.
>     > _______________________________________________
>     > cfe-dev mailing list
>     > cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>     > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>     _______________________________________________
>     cfe-dev mailing list
>     cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>     https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev



More information about the cfe-dev mailing list