- 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
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.