I am sure that Clang has a set of interfaces to provide access to symbol table information. I understand that the documentation is not enough, so you just need to study the source code.
GCCXML does this to determine the top level. It does not report the contents of the functions (for example, you are unlikely to get local residents). You get XML, and then you yourself.
DMS Software Reengineering Toolkit C . , API- [ IMHO] . - , , . DMS ( ) / .