In order to understand the structure of a translation unit, Clang constructs an Abstract Syntax Tree (AST). ASTs are the platonic ideal of what code, derived by distilling constructs from their representation.