No, the clang AST is tightly coupled to language semantics (with syntax present, but somewhat second-class). It doesn’t support syntactic mutation.
We’d like to have such a thing, producing a different data structure that follows the grammar (syntax trees) either directly from source code or guided by a clang parse (pseudo parser RFC) but it’s not done yet - @hokein and I are working on this this year.
Be aware such a structure would follow the grammar, and the grammatical structure of C/C++ doesn’t match most people’s mental model as well as e.g. python’s does, so it’s going to be more awkward to use.
(e.g. a “struct definition” isn’t a top-level thing, but a type specifier within a declaration that often happens to have no declarators).