3.6 Explore Clang AST with clang-query
AST matchers are incredibly useful, and there’s a utility that facilitates checking various matchers and analyzing the AST of your source code. This utility is known as clang-query
tool. You can build and install this utility using the following command:
$ ninja install-clang-query
Figure 3.29: The clang-query installation
You can run the tool as follows:
$ <...>/llvm-project/install/bin/clang-query minmax.cpp
Figure 3.30: Running clang-query on a test file
We can use the match
command as follows:
clang-query> match functionDecl(decl().bind("match-id"), matchesName("max")) Match #1: minmax.cpp:1:1: note: "match-id" binds here int max(int a, int b) { ^~~~~~~~~~~~~~~~~~~~~~~ minmax.cpp:1:1: note: "root" binds here int max(int a, int b) { ^~~~~~~~~~...