- Notifications
You must be signed in to change notification settings - Fork1
Conveniently explore the Clang abstract syntax tree
License
NotificationsYou must be signed in to change notification settings
ahueck/astprinter
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
astprinter is a command-line tool for exploring the Clang abstract syntax tree (AST). It is designed to simplify retrieving specific AST nodes by specifying line numbers from C/C++ source code.
- Retrieve AST nodes corresponding to specific lines of C/C++ source code.
- Use regular expressions to match function names and display the AST nodes for their declarations or definitions.
Seemain.cpp for all possible command-line arguments.
Assumetest.c contains the code:
1intfoo () {2return2;3 }4intmain() {5intval;6val=foo();7return0;8 }
In this example we
- load
test.c
with standard Clang flags, - list all function declarations in
test.c
, - print the AST definition of foo, and finally,
- print the AST of the return statement in line 2.
ahueck@sys:~/astprint/install$./bin/astprinter ../test.c --ast-printer> lfoo:~/astprint/install/../test.c:1:3->3:4main:~/astprint/install/../test.c:4:3->8:4ast-printer> p fooFunctionDecl 0x3977120 <test.c:1:3, line:3:3> line:1:7 used foo 'int ()'`-CompoundStmt 0x3977238 <col:14, line:3:3> `-ReturnStmt 0x3977220 <line:2:7, col:14> `-IntegerLiteral 0x3977200 <col:14> 'int' 2~/astprint/install/../test.c:1:3->3:4ast-printer> 2ReturnStmt 0x1ba3220 <test.c:2:7, col:14>`-IntegerLiteral 0x1ba3200 <col:14> 'int' 2~/astprint/install/../test.c:2:7->2:15
- CMake >= 3.20
- Clang/LLVM 12, 14, 18 (CMake needs to find the installation, seetheLLVM CMake documentation or theCI workflow)
- C++17 compiler
In the root project folder, execute the following commands (see alsoCI workflow)
cmake -B build -DCMAKE_INSTALL_PREFIX=*your path*cmake --build build --target install --parallel
About
Conveniently explore the Clang abstract syntax tree