CFHipsterRef Low-Level Programming on iOS & Mac OS X

libclang

libclang is the C interface to the Clang LLVM front-end. It’s a powerful way for C & Objective-C programs to introspect their own internal structure and composition.

Clang Components

libsupport Basic support library, from LLVM.
libsystem System abstraction library, from LLVM.
libbasic Diagnostics, SourceLocations, SourceBuffer abstraction, file system caching for input source files.
libast Provides classes to represent the C AST, the C type system, builtin functions, and various helpers for analyzing and manipulating the AST (visitors, pretty printers, etc).
liblex Lexing and preprocessing, identifier hash table, pragma handling, tokens, and macro expansion.
libparse Parsing. is library invokes coarse-grained Actions provided by the client (e.g. libsema builds ASTs) but knows nothing about ASTs or other client-specific data structures.
libsema Semantic Analysis. is provides a set of parser actions to build a standardized AST for programs.
libcodegen Lower the AST to LLVM IR for optimization & code generation.
librewrite Editing of text buffers (important for code rewriting transformation, like refactoring).
libanalysis Static analysis support.